| @@ -1 +1 @@ | |||||
| Subproject commit 015d020615e8169d2f227ad385c5f2aa1e091fd1 | |||||
| Subproject commit 4dd22f56d6b733c8de13d6e8b12f13390aa5782e | |||||
| @@ -44,13 +44,13 @@ struct MIDICCToCVInterface : MidiIO, Module { | |||||
| } | } | ||||
| void step(); | |||||
| void step() override; | |||||
| void processMidi(std::vector<unsigned char> msg); | void processMidi(std::vector<unsigned char> msg); | ||||
| void resetMidi(); | |||||
| void resetMidi() override; | |||||
| json_t *toJson() { | |||||
| json_t *toJson() override { | |||||
| json_t *rootJ = json_object(); | json_t *rootJ = json_object(); | ||||
| addBaseJson(rootJ); | addBaseJson(rootJ); | ||||
| for (int i = 0; i < NUM_OUTPUTS; i++) { | for (int i = 0; i < NUM_OUTPUTS; i++) { | ||||
| @@ -62,7 +62,7 @@ struct MIDICCToCVInterface : MidiIO, Module { | |||||
| return rootJ; | return rootJ; | ||||
| } | } | ||||
| void fromJson(json_t *rootJ) { | |||||
| void fromJson(json_t *rootJ) override { | |||||
| baseFromJson(rootJ); | baseFromJson(rootJ); | ||||
| for (int i = 0; i < NUM_OUTPUTS; i++) { | for (int i = 0; i < NUM_OUTPUTS; i++) { | ||||
| json_t *ccNumJ = json_object_get(rootJ, ("ccNum" + std::to_string(i)).c_str()); | json_t *ccNumJ = json_object_get(rootJ, ("ccNum" + std::to_string(i)).c_str()); | ||||
| @@ -79,7 +79,7 @@ struct MIDICCToCVInterface : MidiIO, Module { | |||||
| } | } | ||||
| } | } | ||||
| void reset() { | |||||
| void reset() override { | |||||
| resetMidi(); | resetMidi(); | ||||
| } | } | ||||
| @@ -155,15 +155,15 @@ void MIDICCToCVInterface::processMidi(std::vector<unsigned char> msg) { | |||||
| } | } | ||||
| struct CCTextField : TextField { | struct CCTextField : TextField { | ||||
| void onTextChange(); | |||||
| void onTextChange() override; | |||||
| void draw(NVGcontext *vg); | |||||
| void draw(NVGcontext *vg) override; | |||||
| void onMouseDownOpaque(int button); | |||||
| void onMouseDown(EventMouseDown &e) override; | |||||
| void onMouseUpOpaque(int button); | |||||
| void onMouseUp(EventMouseUp &e) override; | |||||
| void onMouseLeave(); | |||||
| void onMouseLeave(EventMouseLeave &e) override; | |||||
| int num; | int num; | ||||
| @@ -185,20 +185,20 @@ void CCTextField::draw(NVGcontext *vg) { | |||||
| TextField::draw(vg); | TextField::draw(vg); | ||||
| } | } | ||||
| void CCTextField::onMouseUpOpaque(int button) { | |||||
| if (button == 1) { | |||||
| module->onFocus[num] = false; | |||||
| void CCTextField::onMouseDown(EventMouseDown &e) { | |||||
| if (e.button == 1) { | |||||
| module->onFocus[num] = true; | |||||
| } | } | ||||
| } | } | ||||
| void CCTextField::onMouseDownOpaque(int button) { | |||||
| if (button == 1) { | |||||
| module->onFocus[num] = true; | |||||
| void CCTextField::onMouseUp(EventMouseUp &e) { | |||||
| if (e.button == 1) { | |||||
| module->onFocus[num] = false; | |||||
| } | } | ||||
| } | } | ||||
| void CCTextField::onMouseLeave() { | |||||
| void CCTextField::onMouseLeave(EventMouseLeave &e) { | |||||
| module->onFocus[num] = false; | module->onFocus[num] = false; | ||||
| } | } | ||||
| @@ -41,15 +41,15 @@ struct MIDIClockToCVInterface : MidiIO, Module { | |||||
| ~MIDIClockToCVInterface() { | ~MIDIClockToCVInterface() { | ||||
| } | } | ||||
| void step(); | |||||
| void step() override; | |||||
| void processMidi(std::vector<unsigned char> msg); | void processMidi(std::vector<unsigned char> msg); | ||||
| void onDeviceChange(); | |||||
| void onDeviceChange() override; | |||||
| void resetMidi(); | |||||
| void resetMidi() override; | |||||
| json_t *toJson() { | |||||
| json_t *toJson() override{ | |||||
| json_t *rootJ = json_object(); | json_t *rootJ = json_object(); | ||||
| addBaseJson(rootJ); | addBaseJson(rootJ); | ||||
| json_object_set_new(rootJ, "clock1ratio", json_integer(clock1ratio)); | json_object_set_new(rootJ, "clock1ratio", json_integer(clock1ratio)); | ||||
| @@ -57,7 +57,7 @@ struct MIDIClockToCVInterface : MidiIO, Module { | |||||
| return rootJ; | return rootJ; | ||||
| } | } | ||||
| void fromJson(json_t *rootJ) { | |||||
| void fromJson(json_t *rootJ) override{ | |||||
| baseFromJson(rootJ); | baseFromJson(rootJ); | ||||
| json_t *c1rJ = json_object_get(rootJ, "clock1ratio"); | json_t *c1rJ = json_object_get(rootJ, "clock1ratio"); | ||||
| if (c1rJ) { | if (c1rJ) { | ||||
| @@ -183,7 +183,7 @@ struct ClockRatioItem : MenuItem { | |||||
| int ratio; | int ratio; | ||||
| int *clockRatio; | int *clockRatio; | ||||
| void onAction() { | |||||
| void onAction(EventAction &e) override { | |||||
| *clockRatio = ratio; | *clockRatio = ratio; | ||||
| } | } | ||||
| }; | }; | ||||
| @@ -199,7 +199,7 @@ struct ClockRatioChoice : ChoiceButton { | |||||
| const std::vector<std::string> ratioNames_short = {"1:4 ratio", "1:3 ratio", "1:2 ratio", "2:3 ratio", "1:1 ratio", | const std::vector<std::string> ratioNames_short = {"1:4 ratio", "1:3 ratio", "1:2 ratio", "2:3 ratio", "1:1 ratio", | ||||
| "4:3", "2:1 ratio", "4:1 ratio", "8:1 ratio"}; | "4:3", "2:1 ratio", "4:1 ratio", "8:1 ratio"}; | ||||
| void onAction() { | |||||
| void onAction(EventAction &e) override { | |||||
| Menu *menu = gScene->createMenu(); | Menu *menu = gScene->createMenu(); | ||||
| menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | ||||
| menu->box.size.x = box.size.x; | menu->box.size.x = box.size.x; | ||||
| @@ -213,7 +213,7 @@ struct ClockRatioChoice : ChoiceButton { | |||||
| } | } | ||||
| } | } | ||||
| void step() { | |||||
| void step() override { | |||||
| text = ratioNames_short[*clockRatio]; | text = ratioNames_short[*clockRatio]; | ||||
| } | } | ||||
| }; | }; | ||||
| @@ -175,12 +175,12 @@ void MidiIO::close() { | |||||
| } | } | ||||
| void MidiItem::onAction() { | |||||
| void MidiItem::onAction(EventAction &e) { | |||||
| midiModule->resetMidi(); // reset Midi values | midiModule->resetMidi(); // reset Midi values | ||||
| midiModule->openDevice(text); | midiModule->openDevice(text); | ||||
| } | } | ||||
| void MidiChoice::onAction() { | |||||
| void MidiChoice::onAction(EventAction &e) { | |||||
| Menu *menu = gScene->createMenu(); | Menu *menu = gScene->createMenu(); | ||||
| menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | ||||
| menu->box.size.x = box.size.x; | menu->box.size.x = box.size.x; | ||||
| @@ -210,12 +210,12 @@ void MidiChoice::step() { | |||||
| text = ellipsize(name, 15); | text = ellipsize(name, 15); | ||||
| } | } | ||||
| void ChannelItem::onAction() { | |||||
| void ChannelItem::onAction(EventAction &e) { | |||||
| midiModule->resetMidi(); // reset Midi values | midiModule->resetMidi(); // reset Midi values | ||||
| midiModule->setChannel(channel); | midiModule->setChannel(channel); | ||||
| } | } | ||||
| void ChannelChoice::onAction() { | |||||
| void ChannelChoice::onAction(EventAction &e) { | |||||
| Menu *menu = gScene->createMenu(); | Menu *menu = gScene->createMenu(); | ||||
| menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | ||||
| menu->box.size.x = box.size.x; | menu->box.size.x = box.size.x; | ||||
| @@ -101,59 +101,59 @@ public: | |||||
| struct MidiItem : MenuItem { | struct MidiItem : MenuItem { | ||||
| MidiIO *midiModule; | MidiIO *midiModule; | ||||
| void onAction(); | |||||
| void onAction(EventAction &e) override; | |||||
| }; | }; | ||||
| struct MidiChoice : ChoiceButton { | struct MidiChoice : ChoiceButton { | ||||
| MidiIO *midiModule; | MidiIO *midiModule; | ||||
| void onAction(); | |||||
| void onAction(EventAction &e) override; | |||||
| void step(); | |||||
| void step() override; | |||||
| }; | }; | ||||
| struct ChannelItem : MenuItem { | struct ChannelItem : MenuItem { | ||||
| MidiIO *midiModule; | MidiIO *midiModule; | ||||
| int channel; | int channel; | ||||
| void onAction(); | |||||
| void onAction(EventAction &e) override; | |||||
| }; | }; | ||||
| struct ChannelChoice : ChoiceButton { | struct ChannelChoice : ChoiceButton { | ||||
| MidiIO *midiModule; | MidiIO *midiModule; | ||||
| void onAction(); | |||||
| void onAction(EventAction &e) override; | |||||
| void step(); | |||||
| void step() override; | |||||
| }; | }; | ||||
| struct MidiToCVWidget : ModuleWidget { | struct MidiToCVWidget : ModuleWidget { | ||||
| MidiToCVWidget(); | MidiToCVWidget(); | ||||
| void step(); | |||||
| void step() override; | |||||
| }; | }; | ||||
| struct MIDICCToCVWidget : ModuleWidget { | struct MIDICCToCVWidget : ModuleWidget { | ||||
| MIDICCToCVWidget(); | MIDICCToCVWidget(); | ||||
| void step(); | |||||
| void step() override; | |||||
| }; | }; | ||||
| struct MIDIClockToCVWidget : ModuleWidget { | struct MIDIClockToCVWidget : ModuleWidget { | ||||
| MIDIClockToCVWidget(); | MIDIClockToCVWidget(); | ||||
| void step(); | |||||
| void step() override; | |||||
| }; | }; | ||||
| struct MIDITriggerToCVWidget : ModuleWidget { | struct MIDITriggerToCVWidget : ModuleWidget { | ||||
| MIDITriggerToCVWidget(); | MIDITriggerToCVWidget(); | ||||
| void step(); | |||||
| void step() override; | |||||
| }; | }; | ||||
| struct QuadMidiToCVWidget : ModuleWidget { | struct QuadMidiToCVWidget : ModuleWidget { | ||||
| QuadMidiToCVWidget(); | QuadMidiToCVWidget(); | ||||
| void step(); | |||||
| void step() override; | |||||
| }; | }; | ||||
| @@ -50,7 +50,7 @@ struct MIDIToCVInterface : MidiIO, Module { | |||||
| ~MIDIToCVInterface() { | ~MIDIToCVInterface() { | ||||
| }; | }; | ||||
| void step(); | |||||
| void step() override; | |||||
| void pressNote(int note); | void pressNote(int note); | ||||
| @@ -58,21 +58,21 @@ struct MIDIToCVInterface : MidiIO, Module { | |||||
| void processMidi(std::vector<unsigned char> msg); | void processMidi(std::vector<unsigned char> msg); | ||||
| json_t *toJson() { | |||||
| json_t *toJson() override { | |||||
| json_t *rootJ = json_object(); | json_t *rootJ = json_object(); | ||||
| addBaseJson(rootJ); | addBaseJson(rootJ); | ||||
| return rootJ; | return rootJ; | ||||
| } | } | ||||
| void fromJson(json_t *rootJ) { | |||||
| void fromJson(json_t *rootJ) override { | |||||
| baseFromJson(rootJ); | baseFromJson(rootJ); | ||||
| } | } | ||||
| void reset() { | |||||
| void reset() override { | |||||
| resetMidi(); | resetMidi(); | ||||
| } | } | ||||
| void resetMidi(); | |||||
| void resetMidi() override; | |||||
| }; | }; | ||||
| @@ -38,13 +38,13 @@ struct MIDITriggerToCVInterface : MidiIO, Module { | |||||
| ~MIDITriggerToCVInterface() { | ~MIDITriggerToCVInterface() { | ||||
| } | } | ||||
| void step(); | |||||
| void step() override; | |||||
| void processMidi(std::vector<unsigned char> msg); | void processMidi(std::vector<unsigned char> msg); | ||||
| void resetMidi(); | |||||
| void resetMidi() override; | |||||
| virtual json_t *toJson() { | |||||
| virtual json_t *toJson() override { | |||||
| json_t *rootJ = json_object(); | json_t *rootJ = json_object(); | ||||
| addBaseJson(rootJ); | addBaseJson(rootJ); | ||||
| for (int i = 0; i < NUM_OUTPUTS; i++) { | for (int i = 0; i < NUM_OUTPUTS; i++) { | ||||
| @@ -53,7 +53,7 @@ struct MIDITriggerToCVInterface : MidiIO, Module { | |||||
| return rootJ; | return rootJ; | ||||
| } | } | ||||
| void fromJson(json_t *rootJ) { | |||||
| void fromJson(json_t *rootJ) override { | |||||
| baseFromJson(rootJ); | baseFromJson(rootJ); | ||||
| for (int i = 0; i < NUM_OUTPUTS; i++) { | for (int i = 0; i < NUM_OUTPUTS; i++) { | ||||
| json_t *ccNumJ = json_object_get(rootJ, std::to_string(i).c_str()); | json_t *ccNumJ = json_object_get(rootJ, std::to_string(i).c_str()); | ||||
| @@ -65,7 +65,7 @@ struct MIDITriggerToCVInterface : MidiIO, Module { | |||||
| } | } | ||||
| } | } | ||||
| void reset() final { | |||||
| void reset() override { | |||||
| resetMidi(); | resetMidi(); | ||||
| } | } | ||||
| @@ -136,15 +136,15 @@ void MIDITriggerToCVInterface::processMidi(std::vector<unsigned char> msg) { | |||||
| } | } | ||||
| struct TriggerTextField : TextField { | struct TriggerTextField : TextField { | ||||
| void onTextChange(); | |||||
| void onTextChange() override; | |||||
| void draw(NVGcontext *vg); | |||||
| void draw(NVGcontext *vg) override; | |||||
| void onMouseDownOpaque(int button); | |||||
| void onMouseDown(EventMouseDown &e) override; | |||||
| void onMouseUpOpaque(int button); | |||||
| void onMouseUp(EventMouseUp &e) override; | |||||
| void onMouseLeave(); | |||||
| void onMouseLeave(EventMouseLeave &e) override; | |||||
| int *triggerNum; | int *triggerNum; | ||||
| @@ -185,20 +185,20 @@ void TriggerTextField::onTextChange() { | |||||
| }; | }; | ||||
| } | } | ||||
| void TriggerTextField::onMouseUpOpaque(int button) { | |||||
| if (button == 1) { | |||||
| *onFocus = false; | |||||
| void TriggerTextField::onMouseDown(EventMouseDown &e) { | |||||
| if (e.button == 1) { | |||||
| *onFocus = true; | |||||
| } | } | ||||
| } | } | ||||
| void TriggerTextField::onMouseDownOpaque(int button) { | |||||
| if (button == 1) { | |||||
| *onFocus = true; | |||||
| void TriggerTextField::onMouseUp(EventMouseUp &e) { | |||||
| if (e.button == 1) { | |||||
| *onFocus = false; | |||||
| } | } | ||||
| } | } | ||||
| void TriggerTextField::onMouseLeave() { | |||||
| void TriggerTextField::onMouseLeave(EventMouseLeave &e) { | |||||
| *onFocus = false; | *onFocus = false; | ||||
| } | } | ||||
| @@ -59,25 +59,25 @@ struct QuadMIDIToCVInterface : MidiIO, Module { | |||||
| ~QuadMIDIToCVInterface() { | ~QuadMIDIToCVInterface() { | ||||
| }; | }; | ||||
| void step(); | |||||
| void step() override; | |||||
| void processMidi(std::vector<unsigned char> msg); | void processMidi(std::vector<unsigned char> msg); | ||||
| json_t *toJson() { | |||||
| json_t *toJson() override { | |||||
| json_t *rootJ = json_object(); | json_t *rootJ = json_object(); | ||||
| addBaseJson(rootJ); | addBaseJson(rootJ); | ||||
| return rootJ; | return rootJ; | ||||
| } | } | ||||
| void fromJson(json_t *rootJ) { | |||||
| void fromJson(json_t *rootJ) override { | |||||
| baseFromJson(rootJ); | baseFromJson(rootJ); | ||||
| } | } | ||||
| void reset() { | |||||
| void reset() override { | |||||
| resetMidi(); | resetMidi(); | ||||
| } | } | ||||
| void resetMidi(); | |||||
| void resetMidi() override; | |||||
| }; | }; | ||||
| @@ -246,7 +246,7 @@ struct ModeItem : MenuItem { | |||||
| int mode; | int mode; | ||||
| QuadMIDIToCVInterface *module; | QuadMIDIToCVInterface *module; | ||||
| void onAction() { | |||||
| void onAction(EventAction &e) { | |||||
| module->setMode(mode); | module->setMode(mode); | ||||
| } | } | ||||
| }; | }; | ||||
| @@ -256,7 +256,7 @@ struct ModeChoice : ChoiceButton { | |||||
| const std::vector<std::string> modeNames = {"ROTATE", "RESET", "REASSIGN"}; | const std::vector<std::string> modeNames = {"ROTATE", "RESET", "REASSIGN"}; | ||||
| void onAction() { | |||||
| void onAction(EventAction &e) { | |||||
| Menu *menu = gScene->createMenu(); | Menu *menu = gScene->createMenu(); | ||||
| menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | menu->box.pos = getAbsoluteOffset(Vec(0, box.size.y)).round(); | ||||
| menu->box.size.x = box.size.x; | menu->box.size.x = box.size.x; | ||||