VirusEditor.h (2864B)
1 #pragma once 2 3 #include "jucePluginEditorLib/midiPorts.h" 4 #include "jucePluginEditorLib/pluginEditor.h" 5 #include "jucePluginEditorLib/focusedParameter.h" 6 7 #include "baseLib/event.h" 8 9 #include "Parts.h" 10 #include "Tabs.h" 11 #include "FxPage.h" 12 #include "PatchManager.h" 13 #include "ControllerLinks.h" 14 #include "Leds.h" 15 16 namespace virusLib 17 { 18 class ROMFile; 19 } 20 21 namespace jucePluginEditorLib 22 { 23 class FocusedParameter; 24 } 25 26 namespace pluginLib 27 { 28 class Parameter; 29 class ParameterBinding; 30 } 31 32 namespace virus 33 { 34 class VirusProcessor; 35 } 36 37 namespace genericVirusUI 38 { 39 class ArpUserPattern; 40 41 class VirusEditor : public jucePluginEditorLib::Editor 42 { 43 public: 44 enum class SaveType 45 { 46 CurrentSingle, 47 Bank, 48 Arrangement 49 }; 50 51 VirusEditor(pluginLib::ParameterBinding& _binding, virus::VirusProcessor& _processorRef, const jucePluginEditorLib::Skin& _skin); 52 ~VirusEditor() override; 53 54 void setPart(size_t _part); 55 56 pluginLib::ParameterBinding& getParameterBinding() const { return m_parameterBinding; } 57 58 virus::Controller& getController() const; 59 60 std::pair<std::string, std::string> getDemoRestrictionText() const override; 61 62 genericUI::Button<juce::TextButton>* createJuceComponent(genericUI::Button<juce::TextButton>*, genericUI::UiObject& _object) override; 63 juce::Component* createJuceComponent(juce::Component*, genericUI::UiObject& _object) override; 64 65 const auto& getLeds() const { return m_leds; } 66 67 private: 68 void onProgramChange(int _part); 69 void onPlayModeChanged(); 70 void onCurrentPartChanged(); 71 72 void mouseEnter(const juce::MouseEvent& event) override; 73 74 void updatePresetName() const; 75 void updatePlayModeButtons() const; 76 77 void updateDeviceModel(); 78 79 void savePreset(); 80 void loadPreset(); 81 82 void setPlayMode(uint8_t _playMode); 83 84 void savePresets(SaveType _saveType, const pluginLib::FileType& _fileType, uint8_t _bankNumber = 0); 85 bool savePresets(const std::string& _pathName, SaveType _saveType, const pluginLib::FileType& _fileType, uint8_t _bankNumber = 0) const; 86 87 virus::VirusProcessor& m_processor; 88 pluginLib::ParameterBinding& m_parameterBinding; 89 90 std::unique_ptr<Parts> m_parts; 91 std::unique_ptr<Leds> m_leds; 92 std::unique_ptr<Tabs> m_tabs; 93 std::unique_ptr<jucePluginEditorLib::MidiPorts> m_midiPorts; 94 std::unique_ptr<FxPage> m_fxPage; 95 std::unique_ptr<ControllerLinks> m_controllerLinks; 96 97 juce::Label* m_presetName = nullptr; 98 PartMouseListener* m_presetNameMouseListener = nullptr; 99 100 std::unique_ptr<jucePluginEditorLib::FocusedParameter> m_focusedParameter; 101 102 juce::ComboBox* m_romSelector = nullptr; 103 104 juce::Button* m_playModeSingle = nullptr; 105 juce::Button* m_playModeMulti = nullptr; 106 juce::Button* m_playModeToggle = nullptr; 107 108 juce::Label* m_deviceModel = nullptr; 109 110 ArpUserPattern* m_arpUserPattern = nullptr; 111 112 baseLib::EventListener<const virusLib::ROMFile*> m_romChangedListener; 113 }; 114 }