Skip to content

Commit 1f70a4d

Browse files
fix context menu crash on widows
1 parent 908b2cd commit 1f70a4d

3 files changed

Lines changed: 129 additions & 189 deletions

File tree

Via

Submodule Via updated from bac928f to 0ed657e

src/gateseq.cpp

Lines changed: 24 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -314,66 +314,6 @@ void Gateseq::step() {
314314

315315
}
316316

317-
struct GateseqAux2ModeHandler : MenuItem {
318-
Gateseq *module;
319-
int32_t mode;
320-
void onAction(EventAction &e) override {
321-
module->virtualModule.gateseqUI.aux2Mode = mode;
322-
module->virtualModule.gateseqUI.storeMode(module->virtualModule.gateseqUI.aux2Mode, AUX_MODE2_MASK, AUX_MODE2_SHIFT);
323-
module->virtualModule.handleAux2ModeChange(mode);
324-
}
325-
void step() override {
326-
rightText = (module->virtualModule.gateseqUI.aux2Mode == mode) ? "" : "";
327-
MenuItem::step();
328-
}
329-
};
330-
331-
struct GateseqRestorePresets : MenuItem {
332-
Gateseq *module;
333-
ModuleWidget *moduleWidget;
334-
335-
int32_t mode;
336-
void onAction(EventAction &e) override {
337-
std::string rootDir = assetLocal("presets");
338-
systemCreateDirectory(rootDir);
339-
std::string subDir = assetLocal("presets/Via GATESEQ");
340-
systemCreateDirectory(subDir);
341-
342-
float knob1Store = moduleWidget->params[Gateseq::KNOB1_PARAM]->value;
343-
float knob2Store = moduleWidget->params[Gateseq::KNOB2_PARAM]->value;
344-
float knob3Store = moduleWidget->params[Gateseq::KNOB3_PARAM]->value;
345-
float cv2AmtStore = moduleWidget->params[Gateseq::CV2AMT_PARAM]->value;
346-
float cv3AmtStore = moduleWidget->params[Gateseq::CV3AMT_PARAM]->value;
347-
float aStore = moduleWidget->params[Gateseq::A_PARAM]->value;
348-
float bStore = moduleWidget->params[Gateseq::B_PARAM]->value;
349-
350-
uint32_t currentState = module->virtualModule.gateseqUI.modeStateBuffer;
351-
moduleWidget->reset();
352-
module->virtualModule.gateseqUI.modeStateBuffer = module->virtualModule.gateseqUI.stockPreset1;
353-
moduleWidget->save("presets/Via GATESEQ/1 (Euclidean).vcvm");
354-
module->virtualModule.gateseqUI.modeStateBuffer = module->virtualModule.gateseqUI.stockPreset2;
355-
moduleWidget->save("presets/Via GATESEQ/2 (2vs3).vcvm");
356-
module->virtualModule.gateseqUI.modeStateBuffer = module->virtualModule.gateseqUI.stockPreset3;
357-
moduleWidget->save("presets/Via GATESEQ/3 (ShuffleSwing).vcvm");
358-
module->virtualModule.gateseqUI.modeStateBuffer = module->virtualModule.gateseqUI.stockPreset4;
359-
moduleWidget->save("presets/Via GATESEQ/4 (Multiplier).vcvm");
360-
module->virtualModule.gateseqUI.modeStateBuffer = module->virtualModule.gateseqUI.stockPreset5;
361-
moduleWidget->save("presets/Via GATESEQ/5 (Logic).vcvm");
362-
module->virtualModule.gateseqUI.modeStateBuffer = module->virtualModule.gateseqUI.stockPreset6;
363-
moduleWidget->save("presets/Via GATESEQ/6 (SH).vcvm");
364-
365-
module->virtualModule.gateseqUI.modeStateBuffer = currentState;
366-
moduleWidget->params[Gateseq::KNOB1_PARAM]->setValue(knob1Store);
367-
moduleWidget->params[Gateseq::KNOB2_PARAM]->setValue(knob2Store);
368-
moduleWidget->params[Gateseq::KNOB3_PARAM]->setValue(knob3Store);
369-
moduleWidget->params[Gateseq::CV2AMT_PARAM]->setValue(cv2AmtStore);
370-
moduleWidget->params[Gateseq::CV3AMT_PARAM]->setValue(cv3AmtStore);
371-
moduleWidget->params[Gateseq::A_PARAM]->setValue(aStore);
372-
moduleWidget->params[Gateseq::B_PARAM]->setValue(bStore);
373-
374-
}
375-
};
376-
377317
struct GateseqWidget : ModuleWidget {
378318

379319
GateseqWidget(Gateseq *module) : ModuleWidget(module) {
@@ -434,12 +374,30 @@ struct GateseqWidget : ModuleWidget {
434374
Gateseq *module = dynamic_cast<Gateseq*>(this->module);
435375
assert(module);
436376

437-
menu->addChild(construct<MenuLabel>());
438-
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Logic Mode"));
439-
menu->addChild(construct<GateseqAux2ModeHandler>(&MenuItem::text, "And", &GateseqAux2ModeHandler::module, module, &GateseqAux2ModeHandler::mode, 0));
440-
menu->addChild(construct<GateseqAux2ModeHandler>(&MenuItem::text, "Or", &GateseqAux2ModeHandler::module, module, &GateseqAux2ModeHandler::mode, 1));
441-
menu->addChild(construct<GateseqAux2ModeHandler>(&MenuItem::text, "Xor", &GateseqAux2ModeHandler::module, module, &GateseqAux2ModeHandler::mode, 2));
442-
menu->addChild(construct<GateseqAux2ModeHandler>(&MenuItem::text, "Nor", &GateseqAux2ModeHandler::module, module, &GateseqAux2ModeHandler::mode, 3));
377+
struct GateseqAux2ModeHandler : MenuItem {
378+
Gateseq *module;
379+
int32_t mode;
380+
void onAction(EventAction &e) override {
381+
module->virtualModule.gateseqUI.aux2Mode = mode;
382+
module->virtualModule.gateseqUI.storeMode(module->virtualModule.gateseqUI.aux2Mode, AUX_MODE2_MASK, AUX_MODE2_SHIFT);
383+
module->virtualModule.handleAux2ModeChange(mode);
384+
}
385+
};
386+
387+
menu->addChild(MenuEntry::create());
388+
menu->addChild(MenuLabel::create("Drum signal out"));
389+
const std::string logicLabels[] = {
390+
"And",
391+
"Or",
392+
"Xor",
393+
"Nor"
394+
};
395+
for (int i = 0; i < (int) LENGTHOF(logicLabels); i++) {
396+
GateseqAux2ModeHandler *aux2Item = MenuItem::create<GateseqAux2ModeHandler>(logicLabels[i], CHECKMARK(module->virtualModule.gateseqUI.aux2Mode == i));
397+
aux2Item->module = module;
398+
aux2Item->mode = i;
399+
menu->addChild(aux2Item);
400+
}
443401

444402
struct PresetRecallItem : MenuItem {
445403
Gateseq *module;

src/sync.cpp

Lines changed: 104 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -366,111 +366,6 @@ void Sync::step() {
366366

367367
}
368368

369-
// TODO simulate button press on the UI
370-
371-
struct SyncAux1ModeHandler : MenuItem {
372-
Sync *module;
373-
int32_t mode;
374-
void onAction(EventAction &e) override {
375-
module->virtualModule.syncUI.aux1Mode = mode;
376-
module->virtualModule.handleAux1ModeChange(mode);
377-
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux1Mode, AUX_MODE1_MASK, AUX_MODE1_SHIFT);
378-
}
379-
void step() override {
380-
rightText = (module->virtualModule.syncUI.aux1Mode == mode) ? "" : "";
381-
MenuItem::step();
382-
}
383-
};
384-
385-
struct SyncAux2ModeHandler : MenuItem {
386-
Sync *module;
387-
int32_t mode;
388-
void onAction(EventAction &e) override {
389-
module->virtualModule.syncUI.aux2Mode = mode;
390-
module->virtualModule.handleAux2ModeChange(mode);
391-
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux2Mode, AUX_MODE2_MASK, AUX_MODE2_SHIFT);
392-
}
393-
void step() override {
394-
rightText = (module->virtualModule.syncUI.aux2Mode == mode) ? "" : "";
395-
MenuItem::step();
396-
}
397-
};
398-
399-
struct SyncAux3ModeHandler : MenuItem {
400-
Sync *module;
401-
int32_t mode;
402-
void onAction(EventAction &e) override {
403-
module->virtualModule.syncUI.aux3Mode = mode;
404-
module->virtualModule.handleAux3ModeChange(mode);
405-
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux3Mode, AUX_MODE3_MASK, AUX_MODE3_SHIFT);
406-
}
407-
void step() override {
408-
rightText = (module->virtualModule.syncUI.aux3Mode == mode) ? "" : "";
409-
MenuItem::step();
410-
}
411-
};
412-
413-
struct SyncAux4ModeHandler : MenuItem {
414-
Sync *module;
415-
int32_t mode;
416-
void onAction(EventAction &e) override {
417-
module->virtualModule.syncUI.aux4Mode = mode;
418-
module->virtualModule.handleAux4ModeChange(mode);
419-
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux4Mode, AUX_MODE4_MASK, AUX_MODE4_SHIFT);
420-
}
421-
void step() override {
422-
rightText = (module->virtualModule.syncUI.aux4Mode == mode) ? "" : "";
423-
MenuItem::step();
424-
}
425-
426-
};
427-
428-
struct SyncRestorePresets : MenuItem {
429-
Sync *module;
430-
ModuleWidget *moduleWidget;
431-
432-
int32_t mode;
433-
void onAction(EventAction &e) override {
434-
std::string rootDir = assetLocal("presets");
435-
systemCreateDirectory(rootDir);
436-
std::string subDir = assetLocal("presets/Via SYNC");
437-
systemCreateDirectory(subDir);
438-
439-
float knob1Store = moduleWidget->params[Sync::KNOB1_PARAM]->value;
440-
float knob2Store = moduleWidget->params[Sync::KNOB2_PARAM]->value;
441-
float knob3Store = moduleWidget->params[Sync::KNOB3_PARAM]->value;
442-
float cv2AmtStore = moduleWidget->params[Sync::CV2AMT_PARAM]->value;
443-
float cv3AmtStore = moduleWidget->params[Sync::CV3AMT_PARAM]->value;
444-
float aStore = moduleWidget->params[Sync::A_PARAM]->value;
445-
float bStore = moduleWidget->params[Sync::B_PARAM]->value;
446-
447-
uint32_t currentState = module->virtualModule.syncUI.modeStateBuffer;
448-
449-
moduleWidget->reset();
450-
module->virtualModule.syncUI.modeStateBuffer = module->virtualModule.syncUI.stockPreset1;
451-
moduleWidget->save("presets/Via SYNC/1 (Harmonic Osc).vcvm");
452-
module->virtualModule.syncUI.modeStateBuffer = module->virtualModule.syncUI.stockPreset2;
453-
moduleWidget->save("presets/Via SYNC/2 (Arpeggiated Osc).vcvm");
454-
module->virtualModule.syncUI.modeStateBuffer = module->virtualModule.syncUI.stockPreset3;
455-
moduleWidget->save("presets/Via SYNC/3 (Arpeggiated Osc BP).vcvm");
456-
module->virtualModule.syncUI.modeStateBuffer = module->virtualModule.syncUI.stockPreset4;
457-
moduleWidget->save("presets/Via SYNC/4 (Voct).vcvm");
458-
module->virtualModule.syncUI.modeStateBuffer = module->virtualModule.syncUI.stockPreset5;
459-
moduleWidget->save("presets/Via SYNC/5 (Sequence).vcvm");
460-
module->virtualModule.syncUI.modeStateBuffer = module->virtualModule.syncUI.stockPreset6;
461-
moduleWidget->save("presets/Via SYNC/6 (LFO).vcvm");
462-
463-
module->virtualModule.syncUI.modeStateBuffer = currentState;
464-
moduleWidget->params[Sync::KNOB1_PARAM]->setValue(knob1Store);
465-
moduleWidget->params[Sync::KNOB2_PARAM]->setValue(knob2Store);
466-
moduleWidget->params[Sync::KNOB3_PARAM]->setValue(knob3Store);
467-
moduleWidget->params[Sync::CV2AMT_PARAM]->setValue(cv2AmtStore);
468-
moduleWidget->params[Sync::CV3AMT_PARAM]->setValue(cv3AmtStore);
469-
moduleWidget->params[Sync::A_PARAM]->setValue(aStore);
470-
moduleWidget->params[Sync::B_PARAM]->setValue(bStore);
471-
472-
}
473-
};
474369

475370
struct Sync_Widget : ModuleWidget {
476371

@@ -533,25 +428,113 @@ struct Sync_Widget : ModuleWidget {
533428
Sync *module = dynamic_cast<Sync*>(this->module);
534429
assert(module);
535430

536-
menu->addChild(construct<MenuLabel>());
537-
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Logic Out"));
538-
menu->addChild(construct<SyncAux1ModeHandler>(&MenuItem::text, "High during attack", &SyncAux1ModeHandler::module, module, &SyncAux1ModeHandler::mode, 0));
539-
menu->addChild(construct<SyncAux1ModeHandler>(&MenuItem::text, "Delta", &SyncAux1ModeHandler::module, module, &SyncAux1ModeHandler::mode, 1));
431+
struct SyncAux1ModeHandler : MenuItem {
432+
Sync *module;
433+
int32_t mode;
434+
void onAction(EventAction &e) override {
435+
module->virtualModule.syncUI.aux1Mode = mode;
436+
module->virtualModule.handleAux1ModeChange(mode);
437+
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux1Mode, AUX_MODE1_MASK, AUX_MODE1_SHIFT);
438+
}
439+
void step() override {
440+
rightText = (module->virtualModule.syncUI.aux1Mode == mode) ? "" : "";
441+
MenuItem::step();
442+
}
443+
};
444+
445+
menu->addChild(MenuEntry::create());
446+
menu->addChild(MenuLabel::create("Logic Out"));
447+
const std::string logicLabels[] = {
448+
"High during attack",
449+
"Delta"
450+
};
451+
for (int i = 0; i < (int) LENGTHOF(logicLabels); i++) {
452+
SyncAux1ModeHandler *aux1Item = MenuItem::create<SyncAux1ModeHandler>(logicLabels[i], CHECKMARK(module->virtualModule.syncUI.aux1Mode == i));
453+
aux1Item->module = module;
454+
aux1Item->mode = i;
455+
menu->addChild(aux1Item);
456+
}
457+
458+
struct SyncAux2ModeHandler : MenuItem {
459+
Sync *module;
460+
int32_t mode;
461+
void onAction(EventAction &e) override {
462+
module->virtualModule.syncUI.aux2Mode = mode;
463+
module->virtualModule.handleAux2ModeChange(mode);
464+
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux2Mode, AUX_MODE2_MASK, AUX_MODE2_SHIFT);
465+
}
466+
void step() override {
467+
rightText = (module->virtualModule.syncUI.aux2Mode == mode) ? "" : "";
468+
MenuItem::step();
469+
}
470+
};
540471

472+
menu->addChild(MenuLabel::create("Signal Out"));
473+
const std::string signalLabels[] = {
474+
"Triangle",
475+
"Contour"
476+
};
477+
for (int i = 0; i < (int) LENGTHOF(signalLabels); i++) {
478+
SyncAux2ModeHandler *aux2Item = MenuItem::create<SyncAux2ModeHandler>(signalLabels[i], CHECKMARK(module->virtualModule.syncUI.aux2Mode == i));
479+
aux2Item->module = module;
480+
aux2Item->mode = i;
481+
menu->addChild(aux2Item);
482+
}
541483

542-
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Alt output"));
543-
menu->addChild(construct<SyncAux2ModeHandler>(&MenuItem::text, "Triangle", &SyncAux2ModeHandler::module, module, &SyncAux2ModeHandler::mode, 0));
544-
menu->addChild(construct<SyncAux2ModeHandler>(&MenuItem::text, "Contour", &SyncAux2ModeHandler::module, module, &SyncAux2ModeHandler::mode, 1));
484+
struct SyncAux3ModeHandler : MenuItem {
485+
Sync *module;
486+
int32_t mode;
487+
void onAction(EventAction &e) override {
488+
module->virtualModule.syncUI.aux3Mode = mode;
489+
module->virtualModule.handleAux3ModeChange(mode);
490+
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux3Mode, AUX_MODE3_MASK, AUX_MODE3_SHIFT);
491+
}
492+
void step() override {
493+
rightText = (module->virtualModule.syncUI.aux3Mode == mode) ? "" : "";
494+
MenuItem::step();
495+
}
496+
};
545497

546-
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Quadrature"));
547-
menu->addChild(construct<SyncAux3ModeHandler>(&MenuItem::text, "0 degrees", &SyncAux3ModeHandler::module, module, &SyncAux3ModeHandler::mode, 0));
548-
menu->addChild(construct<SyncAux3ModeHandler>(&MenuItem::text, "90 degrees", &SyncAux3ModeHandler::module, module, &SyncAux3ModeHandler::mode, 1));
549-
menu->addChild(construct<SyncAux3ModeHandler>(&MenuItem::text, "180 degrees", &SyncAux3ModeHandler::module, module, &SyncAux3ModeHandler::mode, 2));
550-
menu->addChild(construct<SyncAux3ModeHandler>(&MenuItem::text, "270 degrees", &SyncAux3ModeHandler::module, module, &SyncAux3ModeHandler::mode, 3));
498+
menu->addChild(MenuLabel::create("Quadrature"));
499+
const std::string quadratureLabels[] = {
500+
"0 degrees",
501+
"90 degrees",
502+
"180 degrees",
503+
"270 degrees"
504+
};
505+
for (int i = 0; i < (int) LENGTHOF(quadratureLabels); i++) {
506+
SyncAux3ModeHandler *aux3Item = MenuItem::create<SyncAux3ModeHandler>(quadratureLabels[i], CHECKMARK(module->virtualModule.syncUI.aux3Mode == i));
507+
aux3Item->module = module;
508+
aux3Item->mode = i;
509+
menu->addChild(aux3Item);
510+
}
511+
512+
struct SyncAux4ModeHandler : MenuItem {
513+
Sync *module;
514+
int32_t mode;
515+
void onAction(EventAction &e) override {
516+
module->virtualModule.syncUI.aux4Mode = mode;
517+
module->virtualModule.handleAux4ModeChange(mode);
518+
module->virtualModule.syncUI.storeMode(module->virtualModule.syncUI.aux4Mode, AUX_MODE4_MASK, AUX_MODE4_SHIFT);
519+
}
520+
void step() override {
521+
rightText = (module->virtualModule.syncUI.aux4Mode == mode) ? "" : "";
522+
MenuItem::step();
523+
}
551524

552-
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Table mode"));
553-
menu->addChild(construct<SyncAux4ModeHandler>(&MenuItem::text, "Group-specific", &SyncAux4ModeHandler::module, module, &SyncAux4ModeHandler::mode, 0));
554-
menu->addChild(construct<SyncAux4ModeHandler>(&MenuItem::text, "Global", &SyncAux4ModeHandler::module, module, &SyncAux4ModeHandler::mode, 1));
525+
};
526+
527+
menu->addChild(MenuLabel::create("Wave Options"));
528+
const std::string auxLabels[] = {
529+
"Group-specific",
530+
"Aux"
531+
};
532+
for (int i = 0; i < (int) LENGTHOF(auxLabels); i++) {
533+
SyncAux4ModeHandler *aux4Item = MenuItem::create<SyncAux4ModeHandler>(auxLabels[i], CHECKMARK(module->virtualModule.syncUI.aux4Mode == i));
534+
aux4Item->module = module;
535+
aux4Item->mode = i;
536+
menu->addChild(aux4Item);
537+
}
555538

556539
struct PresetRecallItem : MenuItem {
557540
Sync *module;
@@ -589,9 +572,8 @@ struct Sync_Widget : ModuleWidget {
589572
StockPresetItem *stockPresets = MenuItem::create<StockPresetItem>("Stock presets");
590573
stockPresets->module = module;
591574
menu->addChild(stockPresets);
592-
593575

594-
}
576+
}
595577

596578
};
597579

0 commit comments

Comments
 (0)