AnalogTapeModel

Physical modelling signal processing for analog tape recording
Log | Files | Refs | Submodules | README | LICENSE

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 };