Krotos Modules 3
Loading...
Searching...
No Matches
Kwidget_TriggerButton.cpp
Go to the documentation of this file.
1namespace krotos
2{
3 const String Kwidget_TriggerButton::Parameters::MIDIMode = "MIDIMode";
4 const String Kwidget_TriggerButton::Parameters::OnClick = "OnClick";
5 const String Kwidget_TriggerButton::Parameters::Label = "Label";
6
7 /*
8 * Kwidget Version History
9 * 1.0 - Initial version
10 * 1.1 - MIDIMode parameter changed from KParameter to CustomParameter. Additional note options added.
11 */
13
14 Kwidget_TriggerButton::Kwidget_TriggerButton(const String& id) : Kwidget("TriggerButton", id)
15 {
17
18 //Add Label customParam
19 createAndAddCustomParameter(Parameters::Label, "Trigger");
20
23
24 // This must be called after all custom parameters are added.
25 init();
26
27 // Add a backwards compatibility callback for the legacy MIDIMode KParameter when the version changes.
28 // This is only called if the loaded state is older than 1.1
29 addVersionedParameterCallback("1.1", Parameters::MIDIMode, [this](float newValue) {
30 const int numOldMIDINotes = 5;
31
32 // Offsets to account for All Notes
33 const float activeMode = (newValue * static_cast<float>(numOldMIDINotes - 1)) + 1.0f;
34
35 const String strValue = Kwidget_CoreEngine::MIDIModeNames[static_cast<int>(activeMode)];
36
37 // Notify Listeners
39 });
40
41 addParameterCallback(Parameters::OnClick, [this](float newValue) {
42 // Notify Listeners
43 onClickChange(newValue);
44 });
45 }
46
58 std::vector<Kwidget::ParameterInfo> Kwidget_TriggerButton::createParameters()
59 {
60 return {{Parameters::MIDIMode, Parameters::MIDIMode, {0.0f, 1.0f}, 0.0f},
61 {Parameters::OnClick, Parameters::OnClick, {0.0f, 1.0f}, 0.0f}};
62 }
63
64 std::unique_ptr<KwidgetProcessor> Kwidget_TriggerButton::createProcessor()
65 {
66 return std::make_unique<KwidgetProcessor_TriggerButton>(*this);
67 }
68
69 std::unique_ptr<KwidgetGUI> Kwidget_TriggerButton::createGUI()
70 {
71 return std::make_unique<KwidgetGUI_TriggerButton>(*this);
72 }
73
74 void Kwidget_TriggerButton::addListener(Listener* listenerToAdd) { m_listeners.add(listenerToAdd); }
75
77 {
78 jassert(m_listeners.contains(listenerToRemove));
79 m_listeners.remove(listenerToRemove);
80 }
81
82 void Kwidget_TriggerButton::onClickChange(const float newValue)
83 {
84 m_listeners.call([this, newValue](Listener& l) { l.onClickChanged(this, newValue, getActiveMidiMode()); });
85 }
86
88 {
89 const String currentModeStr = getCustomParameter(Parameters::MIDIMode)->getValue().toString();
90 const auto currentMidiMode = static_cast<MIDIMode>(Kwidget_CoreEngine::MIDIModeNames.indexOf(currentModeStr));
91 return currentMidiMode;
92 }
93
94} // namespace krotos
const var & getValue() const
Definition CustomParameter.cpp:39
void setValue(const var &newValue, bool selfUpdate=false)
Definition CustomParameter.cpp:46
static const StringArray MIDIModeNames
Definition Kwidget_CoreEngine.h:80
Definition Kwidget_TriggerButton.h:7
virtual void onClickChanged(Kwidget_TriggerButton *triggerButton, float newValue, MIDIMode midiModeValue)=0
std::vector< ParameterInfo > createParameters() override
Definition Kwidget_TriggerButton.cpp:58
static const String TriggerButtonVersion
Definition Kwidget_TriggerButton.h:26
std::unique_ptr< KwidgetGUI > createGUI() override
Definition Kwidget_TriggerButton.cpp:69
ListenerList< Listener > m_listeners
Definition Kwidget_TriggerButton.h:41
void onClickChange(const float newValue)
Helper function for wrapping up the onclick listener callback.
Definition Kwidget_TriggerButton.cpp:82
Kwidget_TriggerButton(const String &id)
Definition Kwidget_TriggerButton.cpp:14
std::unique_ptr< KwidgetProcessor > createProcessor() override
Definition Kwidget_TriggerButton.cpp:64
void addListener(Listener *listenerToAdd)
Definition Kwidget_TriggerButton.cpp:74
void removeListener(Listener *listenerToRemove)
Definition Kwidget_TriggerButton.cpp:76
MIDIMode getActiveMidiMode()
Definition Kwidget_TriggerButton.cpp:87
Definition Kwidget.h:8
void init()
Definition Kwidget.cpp:27
void addVersionedParameterCallback(StringRef kwidgetVersionTheParameterChangedIn, const String &paramID, std::function< void(float)> callback)
Add an action to be performed when a specified parameter of a specific kwidget version changes value....
Definition Kwidget.cpp:464
void setKwidgetVersion(const String &kwidgetVersionString)
Definition Kwidget.cpp:371
CustomParameter * createAndAddCustomParameter(const String &paramID, const var &value)
Definition Kwidget.cpp:419
CustomParameter * getCustomParameter(const String &parameterID)
Definition Kwidget.cpp:188
void addParameterCallback(const String &paramID, std::function< void(float)> callback)
Definition Kwidget.cpp:458
Definition AirAbsorptionFilter.cpp:2
MIDIMode
Definition SampleEngine.h:54
static const String MIDIMode
Definition Kwidget_CoreEngine.h:71