11#include <JuceHeader.h>
19 addAndMakeVisible(toggleOscilloscope);
20 addAndMakeVisible(toggleText);
21 addAndMakeVisible(basicControls);
22 addAndMakeVisible(proControls);
25 toggleText.setJustificationType(juce::Justification::centred);
26 toggleText.setFont(juce::Font(18, 1));
27 toggleText.setText(
"+", juce::dontSendNotification);
28 toggleOscilloscope.setMouseCursor(juce::MouseCursor::PointingHandCursor);
29 toggleOscilloscope.setAlpha(0);
30 toggleOscilloscope.setAlwaysOnTop(
true);
33 numHorizontalSections = 1;
43 switch (resolveAttachment(attachmentName))
45 case (ControlSection::Attachments::BufferLength):
48 new juce::AudioProcessorValueTreeState::SliderAttachment(processorTreeState, attachmentName, basicControls.
bufferLength));
51 case (ControlSection::Attachments::DrawGrid):
54 new juce::AudioProcessorValueTreeState::ButtonAttachment(processorTreeState, attachmentName, basicControls.
drawGrid));
57 case (ControlSection::Attachments::IsProfessional):
59 isProfessionalAttachment.reset(
60 new juce::AudioProcessorValueTreeState::ButtonAttachment(processorTreeState, attachmentName, toggleOscilloscope));
64 case (ControlSection::Attachments::IsTriggered):
67 new juce::AudioProcessorValueTreeState::ButtonAttachment(processorTreeState, attachmentName, proControls.
triggerButton));
73 case (ControlSection::Attachments::TriggerLevel):
76 new juce::AudioProcessorValueTreeState::SliderAttachment(processorTreeState, attachmentName, proControls.
triggerLevel));
79 case (ControlSection::Attachments::SlopeButtonTriggered):
82 new juce::AudioProcessorValueTreeState::ButtonAttachment(processorTreeState, attachmentName, proControls.
slopeButton));
85 case (ControlSection::Attachments::IsAutoTriggered):
88 new juce::AudioProcessorValueTreeState::ButtonAttachment(processorTreeState, attachmentName, proControls.
autoTriggerButton));
91 case (ControlSection::Attachments::DecayTime):
94 new juce::AudioProcessorValueTreeState::SliderAttachment(processorTreeState, attachmentName, proControls.
refreshTime));
97 case (ControlSection::Attachments::MuteOutput):
100 new juce::AudioProcessorValueTreeState::ButtonAttachment(processorTreeState, attachmentName, basicControls.
muteOutput));
113 for (
int i = 0; i < attachmentNames.size(); i++)
122 if (toggleOscilloscope.getToggleState())
124 numHorizontalSections = 2;
128 numHorizontalSections = 1;
135 if (toggleOscilloscope.getToggleState())
137 toggleText.setText(
"-", juce::dontSendNotification);
141 toggleText.setText(
"+", juce::dontSendNotification);
149 g.fillAll(CONTROLSECTIONCOLOR());
152 g.setColour(GUITOGGLERCOLOUR());
153 g.drawRect(toggleOscilloscopeArea);
159 toggleOscilloscopeArea = juce::Rectangle<int>(
164 toggleOscilloscope.setBounds(toggleOscilloscopeArea);
165 toggleText.setBounds(toggleOscilloscopeArea);
168 int basicControlHeight = getHeight() / numHorizontalSections;
169 basicControls.setTopLeftPosition(0, 0);
170 basicControls.setSize(getWidth(), basicControlHeight);
173 proControls.setTopLeftPosition(0, basicControlHeight);
174 proControls.setSize(getWidth(), getHeight() - basicControlHeight);
177ControlSection::Attachments ControlSection::resolveAttachment(juce::String attachmentName)
180 auto itr = attachmentsMap.find(attachmentName);
181 if (itr != attachmentsMap.end())
185 return ControlSection::Attachments::Default;
std::unique_ptr< juce::AudioProcessorValueTreeState::ButtonAttachment > gridAttachment
std::unique_ptr< juce::AudioProcessorValueTreeState::ButtonAttachment > muteOutputAttachment
juce::ToggleButton drawGrid
std::unique_ptr< juce::AudioProcessorValueTreeState::SliderAttachment > bufferLengthAttachment
juce::ToggleButton muteOutput
juce::Slider bufferLength
~ControlSection() override
void paint(juce::Graphics &) override
void resetNumHorizontalSections()
void setAttachment(juce::String attachmentName, juce::AudioProcessorValueTreeState &processorTreeState)
void setMultipleAttachments(std::vector< juce::String > attachmentNames, juce::AudioProcessorValueTreeState &processorTreeState)
juce::ToggleButton triggerButton
juce::ToggleButton slopeButton
juce::ToggleButton autoTriggerButton
std::unique_ptr< juce::AudioProcessorValueTreeState::ButtonAttachment > autoTriggerButtonAttachment
std::unique_ptr< juce::AudioProcessorValueTreeState::ButtonAttachment > triggerButtonAttachment
std::unique_ptr< juce::AudioProcessorValueTreeState::SliderAttachment > triggerLevelAttachment
std::unique_ptr< juce::AudioProcessorValueTreeState::SliderAttachment > refreshTimeAttachment
juce::Slider triggerLevel
std::unique_ptr< juce::AudioProcessorValueTreeState::ButtonAttachment > slopeButtonAttachment