BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit a9a6c7f8ef802eb3a0547154f8d264622de8da98
parent ba923d458c30856f8d46ff96f873606f028afb88
Author: Matt Demanett <matt@demanett.net>
Date:   Sun, 17 Nov 2019 15:38:50 -0500

Add code to reformat submenus in flat style; but the submenus seem better.

Diffstat:
Msrc/AddrSeq.cpp | 2+-
Msrc/Analyzer.cpp | 2+-
Msrc/AnalyzerXL.cpp | 10+++++-----
Msrc/Mix4.cpp | 2+-
Msrc/Mix8.cpp | 2+-
Msrc/SampleHold.cpp | 4++--
Msrc/Walk2.cpp | 4++--
Asrc/menu.cpp | 23+++++++++++++++++++++++
Msrc/menu.hpp | 2++
9 files changed, 38 insertions(+), 13 deletions(-)

diff --git a/src/AddrSeq.cpp b/src/AddrSeq.cpp @@ -184,7 +184,7 @@ struct AddrSeqWidget : AddressableSequenceModuleWidget { mi->addItem(RangeOptionMenuItem(m, "0V-5V", 1.0f, 2.5f)); mi->addItem(RangeOptionMenuItem(m, "0V-3V", 1.0f, 1.5f)); mi->addItem(RangeOptionMenuItem(m, "0V-1V", 1.0f, 0.5f)); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } }; diff --git a/src/Analyzer.cpp b/src/Analyzer.cpp @@ -161,7 +161,7 @@ struct AnalyzerWidget : ModuleWidget { OptionsMenuItem* mi = new OptionsMenuItem("Amplitude range"); mi->addItem(OptionMenuItem("To -60dB", [a]() { return a->_rangeDb == 80.0f; }, [a]() { a->_rangeDb = 80.0f; })); mi->addItem(OptionMenuItem("To -120dB", [a]() { return a->_rangeDb == 140.0f; }, [a]() { a->_rangeDb = 140.0f; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } }; diff --git a/src/AnalyzerXL.cpp b/src/AnalyzerXL.cpp @@ -185,13 +185,13 @@ struct AnalyzerXLWidget : ModuleWidget { mi->addItem(OptionMenuItem("Full", [a]() { return a->_range == 0.0f; }, [a]() { a->_range = 0.0f; })); mi->addItem(OptionMenuItem("Upper 50%", [a]() { return a->_range == 0.5f; }, [a]() { a->_range = 0.5f; })); mi->addItem(OptionMenuItem("Upper 25%", [a]() { return a->_range == 0.75f; }, [a]() { a->_range = 0.75f; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } { OptionsMenuItem* mi = new OptionsMenuItem("Amplitude range"); mi->addItem(OptionMenuItem("To -60dB", [a]() { return a->_rangeDb == 80.0f; }, [a]() { a->_rangeDb = 80.0f; })); mi->addItem(OptionMenuItem("To -120dB", [a]() { return a->_rangeDb == 140.0f; }, [a]() { a->_rangeDb = 140.0f; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } { OptionsMenuItem* mi = new OptionsMenuItem("Smoothing"); @@ -201,21 +201,21 @@ struct AnalyzerXLWidget : ModuleWidget { mi->addItem(OptionMenuItem("100ms", [a]() { return a->_smooth == 0.1f; }, [a]() { a->_smooth = 0.1f; })); mi->addItem(OptionMenuItem("250ms", [a]() { return a->_smooth == 0.25f; }, [a]() { a->_smooth = 0.25f; })); mi->addItem(OptionMenuItem("500ms", [a]() { return a->_smooth == 0.5f; }, [a]() { a->_smooth = 0.5f; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } { OptionsMenuItem* mi = new OptionsMenuItem("Quality"); mi->addItem(OptionMenuItem("Good", [a]() { return a->_quality == AnalyzerCore::QUALITY_GOOD; }, [a]() { a->_quality = AnalyzerCore::QUALITY_GOOD; })); mi->addItem(OptionMenuItem("High", [a]() { return a->_quality == AnalyzerCore::QUALITY_HIGH; }, [a]() { a->_quality = AnalyzerCore::QUALITY_HIGH; })); mi->addItem(OptionMenuItem("Ultra", [a]() { return a->_quality == AnalyzerCore::QUALITY_ULTRA; }, [a]() { a->_quality = AnalyzerCore::QUALITY_ULTRA; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } { OptionsMenuItem* mi = new OptionsMenuItem("Window"); mi->addItem(OptionMenuItem("Kaiser", [a]() { return a->_window == AnalyzerCore::WINDOW_KAISER; }, [a]() { a->_window = AnalyzerCore::WINDOW_KAISER; })); mi->addItem(OptionMenuItem("Hamming", [a]() { return a->_window == AnalyzerCore::WINDOW_HAMMING; }, [a]() { a->_window = AnalyzerCore::WINDOW_HAMMING; })); mi->addItem(OptionMenuItem("None", [a]() { return a->_window == AnalyzerCore::WINDOW_NONE; }, [a]() { a->_window = AnalyzerCore::WINDOW_NONE; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } } }; diff --git a/src/Mix4.cpp b/src/Mix4.cpp @@ -200,7 +200,7 @@ struct Mix4Widget : ModuleWidget { mi->addItem(OptionMenuItem("Channels 5-8", [m]() { return m->_polyChannelOffset == 4; }, [m]() { m->_polyChannelOffset = 4; })); mi->addItem(OptionMenuItem("Channels 9-12", [m]() { return m->_polyChannelOffset == 8; }, [m]() { m->_polyChannelOffset = 8; })); mi->addItem(OptionMenuItem("Channels 13-16", [m]() { return m->_polyChannelOffset == 12; }, [m]() { m->_polyChannelOffset = 12; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } }; diff --git a/src/Mix8.cpp b/src/Mix8.cpp @@ -250,7 +250,7 @@ struct Mix8Widget : ModuleWidget { mi->addItem(OptionMenuItem("None", [m]() { return m->_polyChannelOffset == -1; }, [m]() { m->_polyChannelOffset = -1; })); mi->addItem(OptionMenuItem("Channels 1-8", [m]() { return m->_polyChannelOffset == 0; }, [m]() { m->_polyChannelOffset = 0; })); mi->addItem(OptionMenuItem("Channels 9-16", [m]() { return m->_polyChannelOffset == 8; }, [m]() { m->_polyChannelOffset = 8; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } }; diff --git a/src/SampleHold.cpp b/src/SampleHold.cpp @@ -214,7 +214,7 @@ struct SampleHoldWidget : ModuleWidget { mi->addItem(OptionMenuItem("White", [m]() { return m->_noiseType == SampleHold::WHITE_NOISE_TYPE; }, [m]() { m->_noiseType = SampleHold::WHITE_NOISE_TYPE; })); mi->addItem(OptionMenuItem("Pink", [m]() { return m->_noiseType == SampleHold::PINK_NOISE_TYPE; }, [m]() { m->_noiseType = SampleHold::PINK_NOISE_TYPE; })); mi->addItem(OptionMenuItem("Red", [m]() { return m->_noiseType == SampleHold::RED_NOISE_TYPE; }, [m]() { m->_noiseType = SampleHold::RED_NOISE_TYPE; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } { OptionsMenuItem* mi = new OptionsMenuItem("Normal range"); @@ -226,7 +226,7 @@ struct SampleHoldWidget : ModuleWidget { mi->addItem(RangeOptionMenuItem(m, "0V-5V", 1.0f, 2.5f)); mi->addItem(RangeOptionMenuItem(m, "0V-3V", 1.0f, 1.5f)); mi->addItem(RangeOptionMenuItem(m, "0V-1V", 1.0f, 0.5f)); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } } }; diff --git a/src/Walk2.cpp b/src/Walk2.cpp @@ -494,7 +494,7 @@ struct Walk2Widget : ModuleWidget { OptionsMenuItem* mi = new OptionsMenuItem("Display range"); mi->addItem(OptionMenuItem("+/-5V", [m]() { return m->_zoomOut == false; }, [m]() { m->_zoomOut = false; })); mi->addItem(OptionMenuItem("+/-10V", [m]() { return m->_zoomOut == true; }, [m]() { m->_zoomOut = true; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } menu->addChild(new BoolOptionMenuItem("Show grid", [m]() { return &m->_drawGrid; })); { @@ -503,7 +503,7 @@ struct Walk2Widget : ModuleWidget { mi->addItem(OptionMenuItem("Orange", [m]() { return m->_traceColor == Walk2::ORANGE_TRACE_COLOR; }, [m]() { m->_traceColor = Walk2::ORANGE_TRACE_COLOR; })); mi->addItem(OptionMenuItem("Red", [m]() { return m->_traceColor == Walk2::RED_TRACE_COLOR; }, [m]() { m->_traceColor = Walk2::RED_TRACE_COLOR; })); mi->addItem(OptionMenuItem("Blue", [m]() { return m->_traceColor == Walk2::BLUE_TRACE_COLOR; }, [m]() { m->_traceColor = Walk2::BLUE_TRACE_COLOR; })); - menu->addChild(mi); + OptionsMenuItem::addToMenu(mi, menu); } } }; diff --git a/src/menu.cpp b/src/menu.cpp @@ -0,0 +1,23 @@ + +#include "menu.hpp" + +using namespace bogaudio; + +#define SUBMENUS 1 + +void OptionsMenuItem::addToMenu(OptionsMenuItem* item, Menu* menu) { + // one way or another, this will cause item to eventually be deleted; call only one per item. +#ifdef SUBMENUS + menu->addChild(item); +#else + std::string label(item->text); + label += ":"; + menu->addChild(createMenuLabel(label.c_str())); + for (const OptionMenuItem& omi : item->_items) { + auto nomi = new OptionMenuItem(omi); + nomi->text = std::string("\t") + nomi->text; + menu->addChild(nomi); + } + delete item; +#endif +} diff --git a/src/menu.hpp b/src/menu.hpp @@ -52,6 +52,8 @@ struct OptionsMenuItem : MenuItem { } return menu; } + + static void addToMenu(OptionsMenuItem* item, Menu* menu); }; } // namespace bogaudio