Browse Source

Use menu item helpers for Merge and Unity.

tags/v2.0.1
Andrew Belt 3 years ago
parent
commit
5da8f4638f
2 changed files with 19 additions and 48 deletions
  1. +15
    -31
      src/Merge.cpp
  2. +4
    -17
      src/Unity.cpp

+ 15
- 31
src/Merge.cpp View File

@@ -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<Merge*>(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;


+ 4
- 17
src/Unity.cpp View File

@@ -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<Unity*>(this->module);
assert(module);

Unity* unity = dynamic_cast<Unity*>(module);
assert(unity);
menu->addChild(new MenuSeparator);

UnityMergeItem* mergeItem = createMenuItem<UnityMergeItem>("Merge channels 1 & 2");
mergeItem->unity = unity;
menu->addChild(mergeItem);
menu->addChild(createBoolPtrMenuItem("Merge channels 1 & 2", &module->merge));
}
};



Loading…
Cancel
Save