n2xParameterDrivenLed.cpp (1493B)
1 #include "n2xParameterDrivenLed.h" 2 3 #include "n2xController.h" 4 #include "n2xEditor.h" 5 6 #include "juce_gui_basics/juce_gui_basics.h" 7 8 namespace n2xJucePlugin 9 { 10 ParameterDrivenLed::ParameterDrivenLed(Editor& _editor, const std::string& _component, std::string _parameter, uint8_t _part/* = CurrentPart*/) 11 : m_editor(_editor) 12 , m_parameterName(std::move(_parameter)) 13 , m_led(_editor.findComponentT<juce::Button>(_component)) 14 , m_part(_part) 15 { 16 auto& c = _editor.getN2xController(); 17 18 m_onCurrentPartChanged.set(c.onCurrentPartChanged, [this](const uint8_t&) 19 { 20 bind(); 21 }); 22 23 m_led->onClick = [this] 24 { 25 if(!m_param) 26 return; 27 onClick(m_param, m_led->getToggleState()); 28 }; 29 } 30 31 void ParameterDrivenLed::updateState(juce::Button& _target, const pluginLib::Parameter* _source) const 32 { 33 _target.setToggleState(updateToggleState(_source), juce::dontSendNotification); 34 } 35 36 void ParameterDrivenLed::bind() 37 { 38 const auto& c = m_editor.getN2xController(); 39 40 m_param = c.getParameter(m_parameterName, m_part == CurrentPart ? c.getCurrentPart() : m_part); 41 42 m_onParamChanged.set(m_param, [this](const pluginLib::Parameter* _parameter) 43 { 44 updateStateFromParameter(_parameter); 45 }); 46 47 updateStateFromParameter(m_param); 48 } 49 50 void ParameterDrivenLed::disableClick() const 51 { 52 m_led->setInterceptsMouseClicks(false, false); 53 } 54 55 void ParameterDrivenLed::updateStateFromParameter(const pluginLib::Parameter* _parameter) const 56 { 57 updateState(*m_led, _parameter); 58 } 59 }