SettingsButton.h (1546B)
1 #pragma once 2 3 #include "../PluginProcessor.h" 4 5 class SettingsButton : public DrawableButton, 6 public chowdsp::TrackedByBroadcasters 7 { 8 using SettingID = chowdsp::GlobalPluginSettings::SettingID; 9 10 public: 11 SettingsButton (const ChowtapeModelAudioProcessor& processor, chowdsp::OpenGLHelper* openGLHelper); 12 13 void globalSettingChanged (SettingID settingID); 14 15 private: 16 void showSettingsMenu(); 17 void openGLMenu (PopupMenu& menu, int itemID); 18 void copyDiagnosticInfo(); 19 20 const ChowtapeModelAudioProcessor& proc; 21 chowdsp::OpenGLHelper* openGLHelper; 22 23 chowdsp::SharedPluginSettings pluginSettings; 24 chowdsp::SharedLNFAllocator lnfAllocator; 25 26 static constexpr SettingID openglID = "use_opengl"; 27 28 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsButton) 29 }; 30 31 class SettingsButtonItem : public foleys::GuiItem 32 { 33 public: 34 FOLEYS_DECLARE_GUI_FACTORY (SettingsButtonItem) 35 36 SettingsButtonItem (foleys::MagicGUIBuilder& builder, const ValueTree& node) : foleys::GuiItem (builder, node) 37 { 38 auto* plugin = dynamic_cast<ChowtapeModelAudioProcessor*> (builder.getMagicState().getProcessor()); 39 button = std::make_unique<SettingsButton> (*plugin, plugin->getOpenGLHelper()); 40 41 addAndMakeVisible (button.get()); 42 } 43 44 void update() override {} 45 46 Component* getWrappedComponent() override 47 { 48 return button.get(); 49 } 50 51 private: 52 std::unique_ptr<SettingsButton> button; 53 54 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsButtonItem) 55 };