WowFlutterMenu.h (1278B)
1 #pragma once 2 3 #include "../PluginProcessor.h" 4 #include "MyLNF.h" 5 6 class WowFlutterMenuLNF; 7 class WowFlutterMenu : public ComboBox 8 { 9 public: 10 WowFlutterMenu (const ChowtapeModelAudioProcessor& proc, const String& type); 11 ~WowFlutterMenu() override; 12 13 void setupUI(); 14 void setupRateParam (bool isFlutter); 15 void setRateValue (float value); 16 17 private: 18 AudioParameterFloat* rateParam = nullptr; 19 20 const ChowtapeModelAudioProcessor& proc; 21 std::unique_ptr<WowFlutterMenuLNF> lnf; 22 23 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WowFlutterMenu) 24 }; 25 26 class WowFlutterMenuItem : public foleys::GuiItem 27 { 28 public: 29 WowFlutterMenuItem (foleys::MagicGUIBuilder& builder, const ValueTree& node, const String& type) : foleys::GuiItem (builder, node) 30 { 31 const auto* proc = dynamic_cast<ChowtapeModelAudioProcessor*> (builder.getMagicState().getProcessor()); 32 jassert (proc); // this should never be nullptr! 33 34 menu = std::make_unique<WowFlutterMenu> (*proc, type); 35 addAndMakeVisible (menu.get()); 36 } 37 38 void update() override {} 39 40 Component* getWrappedComponent() override { return menu.get(); } 41 42 private: 43 std::unique_ptr<WowFlutterMenu> menu; 44 45 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WowFlutterMenuItem) 46 };