MCPcopy Create free account
hub / github.com/VCVRack/AudibleInstruments / appendContextMenu

Method appendContextMenu

src/Marbles.cpp:588–679  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

586 }
587
588 void appendContextMenu(Menu* menu) override {
589 Marbles* module = dynamic_cast<Marbles*>(this->module);
590
591 struct ScaleItem : MenuItem {
592 Marbles* module;
593 int scale;
594 void onAction(const event::Action& e) override {
595 module->x_scale = scale;
596 }
597 };
598
599 menu->addChild(new MenuSeparator);
600 menu->addChild(createMenuLabel("Scales"));
601 const std::string scaleLabels[] = {
602 "Major",
603 "Minor",
604 "Pentatonic",
605 "Pelog",
606 "Raag Bhairav That",
607 "Raag Shri",
608 };
609 for (int i = 0; i < (int) LENGTHOF(scaleLabels); i++) {
610 ScaleItem* item = createMenuItem<ScaleItem>(scaleLabels[i], CHECKMARK(module->x_scale == i));
611 item->module = module;
612 item->scale = i;
613 menu->addChild(item);
614 }
615
616 struct XClockSourceInternal : MenuItem {
617 Marbles* module;
618 int source;
619 void onAction(const event::Action& e) override {
620 module->x_clock_source_internal = source;
621 }
622 };
623
624 menu->addChild(new MenuSeparator);
625 menu->addChild(createMenuLabel("Internal X clock source"));
626 const std::string sourceLabels[] = {
627 "T₁ → X₁, T₂ → X₂, T₃ → X₃",
628 "T₁ → X₁, X₂, X₃",
629 "T₂ → X₁, X₂, X₃",
630 "T₃ → X₁, X₂, X₃",
631 };
632 for (int i = 0; i < (int) LENGTHOF(sourceLabels); i++) {
633 XClockSourceInternal* item = createMenuItem<XClockSourceInternal>(sourceLabels[i], CHECKMARK(module->x_clock_source_internal == i));
634 item->module = module;
635 item->source = i;
636 menu->addChild(item);
637 }
638
639 struct YDividerIndexItem : MenuItem {
640 Marbles* module;
641 int index;
642 void onAction(const event::Action& e) override {
643 module->y_divider_index = index;
644 }
645 };

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected