Skip to content

Commit b7ada28

Browse files
authored
Merge pull request #20 from juce-framework/jan/change-up-popup
Jan/change up popup
2 parents 1cf8755 + 3251044 commit b7ada28

File tree

6 files changed

+54
-49
lines changed

6 files changed

+54
-49
lines changed

complete/tremolo_plugin/include/Tremolo/AboutComponent.h

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#pragma once
2+
3+
namespace tremolo {
4+
class MessageOnClick : private juce::MouseListener {
5+
public:
6+
MessageOnClick(juce::Component& topLevelComponent,
7+
juce::Component& clickTarget,
8+
juce::String messageOnClick)
9+
: parent{topLevelComponent},
10+
target{clickTarget},
11+
message{std::move(messageOnClick)} {
12+
popup.setAllowedPlacement(juce::BubbleComponent::BubblePlacement::below);
13+
popup.setAlwaysOnTop(true);
14+
15+
message.setColour(
16+
CustomLookAndFeel::getColor(CustomLookAndFeel::Colors::paleBlue));
17+
message.setJustification(juce::Justification::centred);
18+
19+
target.addMouseListener(this, true);
20+
}
21+
22+
~MessageOnClick() override { target.removeMouseListener(this); }
23+
24+
void mouseDoubleClick(const juce::MouseEvent&) override { displayPopup(); }
25+
26+
private:
27+
void displayPopup() {
28+
// only the first call to addChildComponent() has an effect
29+
parent.addChildComponent(popup);
30+
31+
if (!popup.isVisible()) {
32+
popup.showAt(&target, message, 0, true);
33+
}
34+
}
35+
36+
juce::Component& parent;
37+
juce::Component& target;
38+
juce::AttributedString message;
39+
juce::BubbleMessageComponent popup;
40+
41+
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MessageOnClick)
42+
};
43+
} // namespace tremolo

complete/tremolo_plugin/include/Tremolo/PluginEditor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class PluginEditor : public juce::AudioProcessorEditor {
2525
juce::ButtonParameterAttachment bypassAttachment;
2626

2727
LfoVisualizer lfoVisualizer;
28-
AboutComponent about;
28+
MessageOnClick about;
2929

3030
CustomLookAndFeel lookAndFeel;
3131

complete/tremolo_plugin/source/CustomLookAndFeel.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,14 @@ juce::Colour CustomLookAndFeel::getColor(Colors colorName) {
4444
CustomLookAndFeel::CustomLookAndFeel() {
4545
setColour(juce::ComboBox::textColourId, getColor(Colors::paleBlue));
4646
setColour(juce::Label::textColourId, getColor(Colors::paleBlue));
47-
setColour(juce::PopupMenu::backgroundColourId, juce::Colour{0xFF153245});
47+
const juce::Colour darkBlue{0xFF153245};
48+
setColour(juce::PopupMenu::backgroundColourId, darkBlue);
4849
setColour(juce::PopupMenu::textColourId, getColor(Colors::paleBlue));
4950
setColour(juce::PopupMenu::highlightedTextColourId, juce::Colour{0xFF0C131E});
5051
setColour(juce::PopupMenu::highlightedBackgroundColourId,
5152
getColor(Colors::orange));
53+
setColour(juce::BubbleComponent::backgroundColourId, darkBlue);
54+
setColour(juce::BubbleComponent::outlineColourId, juce::Colour{0xFF0C0E16});
5255

5356
// used to set the font of the default standalone plugin window
5457
getDefaultLookAndFeel().setDefaultSansSerifTypeface(

complete/tremolo_plugin/source/PluginEditor.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ PluginEditor::PluginEditor(PluginProcessor& p)
77
lfoVisualizer{
88
[&p](juce::AudioBuffer<float>& b) { p.readAllLfoSamples(b); },
99
[&p] { return p.getSampleRateThreadSafe(); },
10-
[&p] { return p.getParameterRefs().bypassed.get(); }} {
10+
[&p] { return p.getParameterRefs().bypassed.get(); }},
11+
about{*this, logo,
12+
JucePlugin_Manufacturer "\n" JucePlugin_Name "\n" __DATE__
13+
"\n" __TIME__
14+
"\nv" JucePlugin_VersionString} {
1115
background.setImage(juce::ImageCache::getFromMemory(
1216
assets::Background_png, assets::Background_pngSize));
1317
addAndMakeVisible(background);
@@ -59,8 +63,6 @@ PluginEditor::PluginEditor(PluginProcessor& p)
5963
lfoVisualizer.setBackgroundColor(juce::Colours::transparentBlack);
6064
addAndMakeVisible(lfoVisualizer);
6165

62-
addAndMakeVisible(about);
63-
6466
setLookAndFeel(&lookAndFeel);
6567

6668
// Make sure that before the constructor has finished, you've set the
@@ -123,9 +125,5 @@ void PluginEditor::resized() {
123125
bypassLabelBounds.removeFromLeft(396);
124126

125127
bypassLabel.setBounds(bypassLabelBounds);
126-
127-
constexpr auto aboutSize = 20;
128-
about.setBounds(
129-
getLocalBounds().removeFromRight(aboutSize).removeFromTop(aboutSize));
130128
}
131129
} // namespace tremolo

complete/tremolo_plugin/tremolo_plugin.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ END_JUCE_MODULE_DECLARATION
4646
#include "include/Tremolo/Tremolo.h"
4747
#include "include/Tremolo/BypassTransitionSmoother.h"
4848
#include "include/Tremolo/PluginProcessor.h"
49-
#include "include/Tremolo/AboutComponent.h"
49+
#include "include/Tremolo/MessageOnClick.h"
5050
#include "include/Tremolo/PluginEditor.h"

0 commit comments

Comments
 (0)