From 5da8f4638fa2a640503b12e2eb2610b9979b9918 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Fri, 4 Jun 2021 11:38:30 -0400 Subject: [PATCH] Use menu item helpers for Merge and Unity. --- src/Merge.cpp | 46 +++++++++++++++------------------------------- src/Unity.cpp | 21 ++++----------------- 2 files changed, 19 insertions(+), 48 deletions(-) diff --git a/src/Merge.cpp b/src/Merge.cpp index 62ebe56..784c1fe 100644 --- a/src/Merge.cpp +++ b/src/Merge.cpp @@ -72,35 +72,6 @@ struct Merge : Module { }; -struct MergeChannelItem : MenuItem { - Merge* module; - int channels; - void onAction(const event::Action& e) override { - module->channels = channels; - } -}; - - -struct MergeChannelsItem : MenuItem { - Merge* module; - Menu* createChildMenu() override { - Menu* menu = new Menu; - for (int channels = -1; channels <= 16; channels++) { - MergeChannelItem* item = new MergeChannelItem; - if (channels < 0) - item->text = "Automatic"; - else - item->text = string::f("%d", channels); - item->rightText = CHECKMARK(module->channels == channels); - item->module = module; - item->channels = channels; - menu->addChild(item); - } - return menu; - } -}; - - struct MergeWidget : ModuleWidget { MergeWidget(Merge* module) { setModule(module); @@ -151,8 +122,21 @@ struct MergeWidget : ModuleWidget { void appendContextMenu(Menu* menu) override { Merge* module = dynamic_cast(this->module); - menu->addChild(new MenuEntry); - + menu->addChild(new MenuSeparator); + + struct MergeChannelsItem : MenuItem { + Merge* module; + Menu* createChildMenu() override { + Menu* menu = new Menu; + for (int c = -1; c <= 16; c++) { + menu->addChild(createCheckMenuItem((c < 0) ? "Automatic" : string::f("%d", c), + [=]() {return module->channels == c;}, + [=]() {module->channels = c;} + )); + } + return menu; + } + }; MergeChannelsItem* channelsItem = new MergeChannelsItem; channelsItem->text = "Channels"; channelsItem->rightText = RIGHT_ARROW; diff --git a/src/Unity.cpp b/src/Unity.cpp index 4e59118..ff56597 100644 --- a/src/Unity.cpp +++ b/src/Unity.cpp @@ -107,17 +107,6 @@ struct Unity : Module { }; -struct UnityMergeItem : MenuItem { - Unity* unity; - void onAction(const event::Action& e) override { - unity->merge ^= true; - } - void step() override { - rightText = CHECKMARK(unity->merge); - } -}; - - struct UnityWidget : ModuleWidget { UnityWidget(Unity* module) { setModule(module); @@ -162,14 +151,12 @@ struct UnityWidget : ModuleWidget { } void appendContextMenu(Menu* menu) override { - menu->addChild(new MenuEntry); + Unity* module = dynamic_cast(this->module); + assert(module); - Unity* unity = dynamic_cast(module); - assert(unity); + menu->addChild(new MenuSeparator); - UnityMergeItem* mergeItem = createMenuItem("Merge channels 1 & 2"); - mergeItem->unity = unity; - menu->addChild(mergeItem); + menu->addChild(createBoolPtrMenuItem("Merge channels 1 & 2", &module->merge)); } };