computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

commit aff2b77fb3667b2e9955d98b2d9caa00533a0233
parent 970fd6cd9bec47d83180db9fc73653b8978dd972
Author: Adam M <aemalone@gmail.com>
Date:   Tue, 19 Mar 2019 22:55:21 -0500

Add preset menu items

Diffstat:
Msrc/ComputerscareOhPeas.cpp | 107++++++++++++++++++++++++++++++++-----------------------------------------------
1 file changed, 43 insertions(+), 64 deletions(-)

diff --git a/src/ComputerscareOhPeas.cpp b/src/ComputerscareOhPeas.cpp @@ -293,19 +293,10 @@ struct StringDisplayWidget3 : TransparentWidget { }; -struct SetScaleMenuItem : MenuItem { - ComputerscareOhPeas *peas; - std::string scale="221222"; - SetScaleMenuItem(std::string scaleInput) { - scale=scaleInput; - } - void doAction() { - //peas->textField->text = scale; - peas->setQuant(); - } -}; + struct SetQuantizationModeMenuItem : MenuItem { ComputerscareOhPeas *peas; + bool mode = true; SetQuantizationModeMenuItem(bool evenMode) { mode=evenMode; @@ -323,7 +314,6 @@ struct PeasTF2 : ComputerscareTextField { int fontSize = 16; int rowIndex=0; bool inError = false; - //ComputerscareDebug *module; PeasTF2() { ComputerscareTextField(); @@ -331,11 +321,8 @@ struct PeasTF2 : ComputerscareTextField { void draw(const DrawArgs &args) override { if(module) { if(text.c_str()!=module->currentFormula) { - printf("alpha %s\n",text.c_str()); module->currentFormula = text.c_str(); - printf("bravo %s\n",text.c_str()); module->setQuant(); - printf("charlie %s\n",text.c_str()); } } ComputerscareTextField::draw(args); @@ -355,24 +342,29 @@ struct PeasSmallDisplay : SmallLetterDisplay { //this->setNumDivisionsString(); if(module) { if(type==0) { - - std::string transposeString = (module->globalTranspose > 0 ? "+" : "" ) + std::to_string(module->globalTranspose); - value = transposeString; - } - else { - std::string numDivisionsDisplay = std::to_string(module->numDivisions); - value = numDivisionsDisplay; - } -//this->numDivisionsDisplay->value = std::to_string(this->numDivisions); - //this->globalTransposeDisplay->value = transposeString; - + + std::string transposeString = (module->globalTranspose > 0 ? "+" : "" ) + std::to_string(module->globalTranspose); + value = transposeString; + } + else { + std::string numDivisionsDisplay = std::to_string(module->numDivisions); + value = numDivisionsDisplay; + } + } SmallLetterDisplay::draw(args); - - } }; + + + +void quantizationModeMenuItemAdd(ComputerscareOhPeas* peas, Menu* menu, bool evenMode, std::string label) { + SetQuantizationModeMenuItem *menuItem = new SetQuantizationModeMenuItem(evenMode); + menuItem->text = label; + menuItem->peas = peas; + menu->addChild(menuItem); +} //this->numDivisions,this->globalTranspose struct ComputerscareOhPeasWidget : ModuleWidget { float randAmt = 0.f; @@ -473,35 +465,38 @@ struct ComputerscareOhPeasWidget : ModuleWidget { //module->setQuant(); } + -PeasTF2 *textFieldTemp; - SmallLetterDisplay* trimPlusMinus; + PeasTF2 *textFieldTemp; + SmallLetterDisplay* trimPlusMinus; PeasSmallDisplay* ndd; PeasSmallDisplay* transposeDisplay; - //PeasTextField* textFieldTemp; - //Menu *createContextMenu(); + void scaleItemAdd(ComputerscareOhPeas* peas, Menu* menu, std::string scale, std::string label); + void appendContextMenu(Menu *menu) override; }; +struct SetScaleMenuItem : MenuItem { + ComputerscareOhPeas *peas; + ComputerscareOhPeasWidget *peasWidget; + std::string scale="221222"; + SetScaleMenuItem(std::string scaleInput) { + scale=scaleInput; + } - -void scaleItemAdd(ComputerscareOhPeas* peas, Menu* menu, std::string scale, std::string label) { + void onAction(const widget::ActionEvent &e) override { + peasWidget->textFieldTemp->text = scale; + peas->setQuant(); + } +}; +void ComputerscareOhPeasWidget::scaleItemAdd(ComputerscareOhPeas* peas, Menu* menu, std::string scale, std::string label) { SetScaleMenuItem *menuItem = new SetScaleMenuItem(scale); menuItem->text = label; menuItem->peas = peas; + menuItem->peasWidget = this; menu->addChild(menuItem); } - -void quantizationModeMenuItemAdd(ComputerscareOhPeas* peas, Menu* menu, bool evenMode, std::string label) { - SetQuantizationModeMenuItem *menuItem = new SetQuantizationModeMenuItem(evenMode); - menuItem->text = label; - menuItem->peas = peas; - menu->addChild(menuItem); -} - -/*Menu *ComputerscareOhPeasWidget::createContextMenu() { - Menu *menu = ModuleWidget::createContextMenu(); - ComputerscareOhPeas *peas = dynamic_cast<ComputerscareOhPeas*>(module); - assert(peas); +void ComputerscareOhPeasWidget::appendContextMenu(Menu *menu) { + ComputerscareOhPeas *peas = dynamic_cast<ComputerscareOhPeas*>(this->module); MenuLabel *spacerLabel = new MenuLabel(); menu->addChild(spacerLabel); @@ -524,24 +519,8 @@ void quantizationModeMenuItemAdd(ComputerscareOhPeas* peas, Menu* menu, bool eve scaleItemAdd(peas,menu,"434","Major 7 Tetrachord"); scaleItemAdd(peas,menu,"433","Dominant 7 Tetrachord"); scaleItemAdd(peas,menu,"343","Minor 7 Tetrachord"); - - return menu; - - // "closest" quantization mode is quite a bit slower than even - MenuLabel *quantModeLabel = new MenuLabel(); - quantModeLabel->text = "Quantization Mode"; - menu->addChild(quantModeLabel); - - quantizationModeMenuItemAdd(peas,menu,true,"Even"); - quantizationModeMenuItemAdd(peas,menu,false,"Closest"); - - - - MenuLabel *spacerLabel2 = new MenuLabel(); - menu->addChild(spacerLabel2); - - -}*/ + scaleItemAdd(peas,menu,"334","Minor 7 b5 Tetrachord"); +} // Specify the Module and ModuleWidget subclass, human-readable // author name for categorization per plugin, module slug (should never