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:
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