computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

commit 27016937392282cc0574ce6da4c2ed210ee15d3e
parent f3319cc196759b3ea7ded789df3f4660409ffadc
Author: Adam M <aemalone@gmail.com>
Date:   Sat,  2 Jan 2021 18:39:01 -0600

menu select for animation mode stuff

Diffstat:
Msrc/ComputerscareBlank.cpp | 66+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Msrc/MenuParams.hpp | 43++++++++++++++++++++++++++++++++++++++++---
2 files changed, 101 insertions(+), 8 deletions(-)

diff --git a/src/ComputerscareBlank.cpp b/src/ComputerscareBlank.cpp @@ -8,6 +8,8 @@ #include <thread> #include <dirent.h> +#define FONT_SIZE 13 + struct ComputerscareBlank; struct ComputerscareBlank : ComputerscareMenuParamModule { @@ -162,7 +164,8 @@ struct ComputerscareBlank : ComputerscareMenuParamModule { if (resetConnected) { if (resetTrigger.process(messageFromExpander[4])) { - DEBUG("RESSSSSTT"); + DEBUG("RESET TRIGGER"); + goToFrame(0); } } @@ -496,6 +499,46 @@ struct InvertYMenuItem: MenuItem { MenuItem::step(); } }; +struct ssmi : MenuItem +{ + //ComputerscareRolyPouter *pouter; + int mySetVal = 1; + ParamQuantity *myParamQuantity; + ssmi(int i,ParamQuantity* pq) + { + mySetVal=i; + myParamQuantity = pq; + } + + void onAction(const event::Action &e) override + { + myParamQuantity->setValue(mySetVal); + //pouter->setAll(mySetVal); + } + void step() override { + rightText = myParamQuantity->getValue() == mySetVal ? "✔" : ""; + MenuItem::step(); + } +}; +struct Strongbipper : MenuItem { + ParamQuantity* param; + std::vector<std::string> options; + + Menu *createChildMenu() override { + Menu *menu = new Menu; + for (unsigned int i = 0; i < options.size(); i++) { + ssmi *menuItem = new ssmi(i,param); + menuItem->text = options[i]; + //menuItem->pouter = pouter; + menu->addChild(menuItem); + } + return menu; + } + void step() override { + rightText = "("+options[param->getValue()]+") "+RIGHT_ARROW; + MenuItem::step(); + } +}; struct KeyboardControlChildMenu : MenuItem { ComputerscareBlank *blank; @@ -725,12 +768,25 @@ struct ComputerscareBlankWidget : MenuParamModuleWidget { MenuParam* mp = new MenuParam(blankModule->paramQuantities[ComputerscareBlank::CONSTANT_FRAME_DELAY], 0); menu->addChild(mp); - MenuParam* am = new MenuParam(blankModule->paramQuantities[ComputerscareBlank::ANIMATION_MODE], 1); - menu->addChild(am); - MenuParam* eb = new MenuParam(blankModule->paramQuantities[ComputerscareBlank::END_BEHAVIOR], 1); - menu->addChild(eb); + Strongbipper *modeMenu = new Strongbipper(); + modeMenu->text = "Animation Mode"; + modeMenu->rightText = RIGHT_ARROW; + modeMenu->param = blankModule->paramQuantities[ComputerscareBlank::ANIMATION_MODE]; + modeMenu->options = blankModule->animationModeDescriptions; + + menu->addChild(modeMenu); + + + + Strongbipper *endMenu = new Strongbipper(); + endMenu->text = "Animation End Behavior"; + endMenu->rightText = RIGHT_ARROW; + endMenu->param = blankModule->paramQuantities[ComputerscareBlank::END_BEHAVIOR]; + endMenu->options = blankModule->endBehaviorDescriptions; + + menu->addChild(endMenu); diff --git a/src/MenuParams.hpp b/src/MenuParams.hpp @@ -28,10 +28,33 @@ struct ParamAndType { type = t; } }; + +struct SubMenuAndKnob : MenuItem { + SubMenuAndKnob() { + MenuItem(); + } + Menu *createChildMenu() override { + Menu *menu = new Menu; + menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Option 1")); + menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Option 2")); + menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Option 3")); + + return menu; + } + +}; +/* + +KeyboardControlChildMenu *kbMenu = new KeyboardControlChildMenu(); + kbMenu->text = "Keyboard Controls"; + kbMenu->rightText = RIGHT_ARROW; + kbMenu->blank = blank; + menu->addChild(kbMenu);*/ struct MenuParam : MenuEntry { ParamWidget* speedParam; MenuLabel* johnLabel; MenuLabel* displayString; + SubMenuAndKnob *submenu; float controlRightMargin = 6; MenuParam(ParamQuantity* param, int type) { @@ -40,24 +63,38 @@ struct MenuParam : MenuEntry { } else if (type == 1) { speedParam = new MediumDotSnapKnob(); + /* + //addChild(construct<SubMenuAndKnob>); + submenu = new SubMenuAndKnob(); + submenu->text = "select menu param control label"; + submenu->rightText = RIGHT_ARROW;*/ + } else if (type == 2) { speedParam = new SmoothKnob(); } speedParam->paramQuantity = param; speedParam->box.pos = Vec(controlRightMargin, 0); - box.size.y = 28; + box.size.y = 38; johnLabel = construct<MenuLabel>(&MenuLabel::text, param->getLabel()); johnLabel->box.pos = Vec(speedParam->box.size.x + controlRightMargin * 2, 0); addChild(speedParam); addChild(johnLabel); + //if(type==1) {addChild(submenu);} } - - + /*Menu *createChildMenu() override { + Menu *menu = new Menu; + menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Option 1")); + menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Option 2")); + menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Option 3")); + menu->box.pos.x=10; + return menu; + }*/ }; + /* 0: boolean -button