#pragma once #include "Processor.h" class XtcJuceEditor final : public juce::AudioProcessorEditor, private juce::MidiKeyboardState::Listener, private juce::Timer { public: explicit XtcJuceEditor(XtcJuceProcessor&); ~XtcJuceEditor() override; void paint(juce::Graphics&) override; void resized() override; private: XtcJuceProcessor& engine; juce::MidiKeyboardState keyboardState; juce::MidiKeyboardComponent keyboard{keyboardState,juce::MidiKeyboardComponent::horizontalKeyboard}; std::array sliders; std::array labels; std::array,4> attachments; juce::ToggleButton effects{"Filter + reverb"}; std::unique_ptr effectsAttachment; juce::TextButton save{"Save preset"},load{"Load preset"},panicButton{"Panic"}; juce::Label status; juce::String presetStatus; std::unique_ptr chooser; float level=0; void handleNoteOn(juce::MidiKeyboardState*,int,int,float) override; void handleNoteOff(juce::MidiKeyboardState*,int,int,float) override; void timerCallback() override; void choosePreset(bool saving); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(XtcJuceEditor) };