BogaudioModules

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

menu.cpp (1081B)


      1 
      2 #include "menu.hpp"
      3 
      4 using namespace bogaudio;
      5 
      6 #define SUBMENUS 1
      7 
      8 void OptionsMenuItem::addItem(const OptionMenuItem& item) {
      9 	_items.push_back(item);
     10 }
     11 
     12 void OptionsMenuItem::addSpacer() {
     13 	_items.push_back(SpacerOptionMenuItem());
     14 }
     15 
     16 Menu* OptionsMenuItem::createChildMenu() {
     17 	Menu* menu = new Menu;
     18 	for (const OptionMenuItem& item : _items) {
     19 		if (item.text == "<spacer>") {
     20 			menu->addChild(new MenuLabel());
     21 		}
     22 		else {
     23 			menu->addChild(new OptionMenuItem(item));
     24 		}
     25 	}
     26 	return menu;
     27 }
     28 
     29 void OptionsMenuItem::addToMenu(OptionsMenuItem* item, Menu* menu) {
     30 	// one way or another, this will cause item to eventually be deleted; call only one per item.
     31 #ifdef SUBMENUS
     32 	menu->addChild(item);
     33 #else
     34 	std::string label(item->text);
     35 	label += ":";
     36 	menu->addChild(createMenuLabel(label.c_str()));
     37 	for (const OptionMenuItem& omi : item->_items) {
     38 		if (omi.text == "<spacer>") {
     39 			menu->addChild(new MenuLabel());
     40 		}
     41 		else {
     42 			auto nomi = new OptionMenuItem(omi);
     43 			nomi->text = std::string("\t") + nomi->text;
     44 			menu->addChild(nomi);
     45 		}
     46 	}
     47 	delete item;
     48 #endif
     49 }