Browse Source

Add basic operators guide menu item and msg

master
cancel 5 years ago
parent
commit
59ba103a05
  1. 72
      tui_main.c

72
tui_main.c

@ -1736,6 +1736,7 @@ enum {
enum { enum {
Main_menu_quit = 1, Main_menu_quit = 1,
Main_menu_controls, Main_menu_controls,
Main_menu_opers_guide,
Main_menu_save, Main_menu_save,
Main_menu_save_as, Main_menu_save_as,
Main_menu_about, Main_menu_about,
@ -1748,6 +1749,7 @@ void push_main_menu(void) {
qmenu_add_choice(qm, "Save As...", Main_menu_save_as); qmenu_add_choice(qm, "Save As...", Main_menu_save_as);
qmenu_add_spacer(qm); qmenu_add_spacer(qm);
qmenu_add_choice(qm, "Controls...", Main_menu_controls); 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_choice(qm, "About...", Main_menu_about);
qmenu_add_spacer(qm); qmenu_add_spacer(qm);
qmenu_add_choice(qm, "Quit", Main_menu_quit); qmenu_add_choice(qm, "Quit", Main_menu_quit);
@ -1863,6 +1865,73 @@ void push_controls_msg(void) {
} }
} }
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) { void try_save_with_msg(Ged* ged) {
if (!ged->filename) if (!ged->filename)
return; return;
@ -2356,6 +2425,9 @@ int main(int argc, char** argv) {
case Main_menu_controls: case Main_menu_controls:
push_controls_msg(); push_controls_msg();
break; break;
case Main_menu_opers_guide:
push_opers_guide_msg();
break;
case Main_menu_about: case Main_menu_about:
push_about_msg(); push_about_msg();
break; break;

Loading…
Cancel
Save