sm-26/Source/PluginEditor.h

53 lines
1.3 KiB
C
Raw Normal View History

#pragma once
#include <JuceHeader.h>
#include "PluginProcessor.h"
#include "LcdDisplay.h"
#include "MenuSystem.h"
#include "Presets.h"
#include "SynthParams.h"
class SM26AudioProcessorEditor : public juce::AudioProcessorEditor,
private juce::Timer,
private juce::Slider::Listener
{
public:
SM26AudioProcessorEditor (SM26AudioProcessor&);
~SM26AudioProcessorEditor() override;
void paint (juce::Graphics&) override;
void resized() override;
void timerCallback() override;
private:
void sliderValueChanged (juce::Slider*) override;
void setupKnobs();
void setupNavButtons();
void buildRootMenu();
void updateLCD();
SM26AudioProcessor& proc;
MenuSystem menu;
LcdDisplay lcd;
juce::Slider knobSliders[4];
juce::Label knobLabels[4];
juce::Label knobValueLabels[4];
juce::TextButton navUp { "UP" };
juce::TextButton navDown { "DOWN" };
juce::TextButton navLeft { "LEFT" };
juce::TextButton navRight { "RIGHT" };
juce::TextButton navEnter { "ENTER" };
juce::TextButton navEsc { "ESC" };
juce::Label footer;
bool menuWasOpen = false;
static juce::String buildGitFooter();
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SM26AudioProcessorEditor)
};