ref: 59ba103a05910a1cd35a24bc83f8f86bbef2ba89
parent: 593eaad2c9623e57de96b0c49a7bcfb47026f9ba
author: cancel <cancel@cancel.fm>
date: Tue Dec 31 23:34:35 EST 2019
Add basic operators guide menu item and msg
--- a/tui_main.c
+++ b/tui_main.c
@@ -1736,6 +1736,7 @@
enum {Main_menu_quit = 1,
Main_menu_controls,
+ Main_menu_opers_guide,
Main_menu_save,
Main_menu_save_as,
Main_menu_about,
@@ -1748,6 +1749,7 @@
qmenu_add_choice(qm, "Save As...", Main_menu_save_as);
qmenu_add_spacer(qm);
qmenu_add_choice(qm, "Controls...", Main_menu_controls);
+ qmenu_add_choice(qm, "Operators...", Main_menu_opers_guide);
qmenu_add_choice(qm, "About...", Main_menu_about);
qmenu_add_spacer(qm);
qmenu_add_choice(qm, "Quit", Main_menu_quit);
@@ -1863,6 +1865,73 @@
}
}
+void push_opers_guide_msg(void) {+ struct Guide_item {+ char glyph;
+ char const* name;
+ char const* desc;
+ };
+ static struct Guide_item items[] = {+ {'A', "add", "Outputs sum of inputs."},+ {'B', "between", "Outputs subtraction of inputs."},+ {'C', "clock", "Outputs modulo of frame."},+ {'D', "delay", "Bangs on modulo of frame."},+ {'E', "east", "Moves eastward, or bangs."},+ {'F', "if", "Bangs if inputs are equal."},+ {'G', "generator", "Writes operands with offset."},+ {'H', "halt", "Halts southward operand."},+ {'I', "increment", "Increments southward operand."},+ {'J', "jumper", "Outputs northward operand."},+ {'K', "konkat", "Reads multiple variables."},+ {'L', "lesser", "Outputs smallest input."},+ {'M', "multiply", "Outputs product of inputs."},+ {'N', "north", "Moves Northward, or bangs."},+ {'O', "read", "Reads operand with offset."},+ {'P', "push", "Writes eastward operand."},+ {'Q', "query", "Reads operands with offset."},+ {'R', "random", "Outputs random value."},+ {'S', "south", "Moves southward, or bangs."},+ {'T', "track", "Reads eastward operand."},+ {'U', "uclid", "Bangs on Euclidean rhythm."},+ {'V', "variable", "Reads and writes variable."},+ {'W', "west", "Moves westward, or bangs."},+ {'X', "write", "Writes operand with offset."},+ {'Y', "jymper", "Outputs westward operand."},+ {'Z', "lerp", "Transitions operand to target."},+ {'*', "bang", "Bangs neighboring operands."},+ {'#', "comment", "Halts line."},+ {'*', "self", "Sends ORCA command."},+ {':', "midi", "Sends MIDI note."},+ {'!', "cc", "Sends MIDI control change."},+ {'?', "pb", "Sends MIDI pitch bend."},+ {'%', "mono", "Sends MIDI monophonic note."},+ {'=', "osc", "Sends OSC message."},+ {';', "udp", "Sends UDP message."},+ };
+ int w_desc = 0;
+ for (Usz i = 0; i < ORCA_ARRAY_COUNTOF(items); ++i) {+ if (items[i].desc) {+ int wr = (int)strlen(items[i].desc);
+ if (wr > w_desc)
+ w_desc = wr;
+ }
+ }
+ int left_pad = 1;
+ int mid_pad = 1;
+ int total_width = left_pad + 1 + mid_pad + w_desc;
+ Qmsg* qm = qmsg_push(ORCA_ARRAY_COUNTOF(items), total_width);
+ qmsg_set_title(qm, "Operators");
+ WINDOW* w = qmsg_window(qm);
+ for (int i = 0; i < (int)ORCA_ARRAY_COUNTOF(items); ++i) {+ wmove(w, i, left_pad);
+ wattrset(w, A_bold);
+ wprintw(w, "%c", items[i].glyph);
+ wmove(w, i, left_pad + 1 + mid_pad);
+ wattrset(w, A_normal);
+ wprintw(w, "%s", items[i].desc);
+ }
+}
+
void try_save_with_msg(Ged* ged) {if (!ged->filename)
return;
@@ -2355,6 +2424,9 @@
goto quit;
case Main_menu_controls:
push_controls_msg();
+ break;
+ case Main_menu_opers_guide:
+ push_opers_guide_msg();
break;
case Main_menu_about:
push_about_msg();
--
⑨