Browse Source

Cleanup

master
cancel 6 years ago
parent
commit
1f68479f41
  1. 121
      tui_main.c

121
tui_main.c

@ -520,7 +520,8 @@ void app_draw(App_state* a, WINDOW* win) {
field_resize_raw_if_necessary(&a->scratch_field, a->field.height, field_resize_raw_if_necessary(&a->scratch_field, a->field.height,
a->field.width); a->field.width);
field_copy(&a->field, &a->scratch_field); field_copy(&a->field, &a->scratch_field);
markmap_reusable_ensure_size(&a->markmap_r, a->field.height, a->field.width); markmap_reusable_ensure_size(&a->markmap_r, a->field.height,
a->field.width);
orca_run(a->scratch_field.buffer, a->markmap_r.buffer, a->field.height, orca_run(a->scratch_field.buffer, a->markmap_r.buffer, a->field.height,
a->field.width, a->tick_num, &a->bank, &a->scratch_oevent_list, a->field.width, a->tick_num, &a->bank, &a->scratch_oevent_list,
a->piano_bits); a->piano_bits);
@ -582,46 +583,61 @@ void app_add_piano_bits_for_character(App_state* a, char c) {
a->piano_bits |= added_bits; a->piano_bits |= added_bits;
} }
void app_input_character(App_state* a, char c) {
bool ok = c >= '!' && c <= '~';
if (!ok)
return;
switch (a->input_mode) {
case Tui_input_mode_normal:
case Tui_input_mode_append:
app_write_character(a, c);
break;
case Tui_input_mode_piano:
app_add_piano_bits_for_character(a, c);
break;
}
}
typedef enum { typedef enum {
App_input_event_undo, App_input_cmd_undo,
App_input_event_toggle_append_mode, App_input_cmd_toggle_append_mode,
App_input_event_toggle_piano_mode, App_input_cmd_toggle_piano_mode,
App_input_event_step_forward, App_input_cmd_step_forward,
App_input_event_toggle_show_event_list, App_input_cmd_toggle_show_event_list,
App_input_event_toggle_play_pause, App_input_cmd_toggle_play_pause,
App_input_event_shrink_ruler_y, App_input_cmd_shrink_ruler_y,
App_input_event_grow_ruler_y, App_input_cmd_grow_ruler_y,
App_input_event_shrink_ruler_x, App_input_cmd_shrink_ruler_x,
App_input_event_grow_ruler_x, App_input_cmd_grow_ruler_x,
App_input_event_shrink_field_y, App_input_cmd_shrink_field_y,
App_input_event_grow_field_y, App_input_cmd_grow_field_y,
App_input_event_shrink_field_x, App_input_cmd_shrink_field_x,
App_input_event_grow_field_x, App_input_cmd_grow_field_x,
} App_input_event; } App_input_cmd;
void app_input_event(App_state* a, App_input_event ev) { void app_input_cmd(App_state* a, App_input_cmd ev) {
switch (ev) { switch (ev) {
case App_input_event_undo: case App_input_cmd_undo:
if (undo_history_count(&a->undo_hist) > 0) { if (undo_history_count(&a->undo_hist) > 0) {
undo_history_pop(&a->undo_hist, &a->field, &a->tick_num); undo_history_pop(&a->undo_hist, &a->field, &a->tick_num);
a->needs_remarking = true; a->needs_remarking = true;
} }
break; break;
case App_input_event_toggle_append_mode: case App_input_cmd_toggle_append_mode:
if (a->input_mode == Tui_input_mode_append) { if (a->input_mode == Tui_input_mode_append) {
a->input_mode = Tui_input_mode_normal; a->input_mode = Tui_input_mode_normal;
} else { } else {
a->input_mode = Tui_input_mode_append; a->input_mode = Tui_input_mode_append;
} }
break; break;
case App_input_event_toggle_piano_mode: case App_input_cmd_toggle_piano_mode:
if (a->input_mode == Tui_input_mode_piano) { if (a->input_mode == Tui_input_mode_piano) {
a->input_mode = Tui_input_mode_normal; a->input_mode = Tui_input_mode_normal;
} else { } else {
a->input_mode = Tui_input_mode_piano; a->input_mode = Tui_input_mode_piano;
} }
break; break;
case App_input_event_step_forward: case App_input_cmd_step_forward:
undo_history_push(&a->undo_hist, &a->field, a->tick_num); undo_history_push(&a->undo_hist, &a->field, a->tick_num);
orca_run(a->field.buffer, a->markmap_r.buffer, a->field.height, orca_run(a->field.buffer, a->markmap_r.buffer, a->field.height,
a->field.width, a->tick_num, &a->bank, &a->oevent_list, a->field.width, a->tick_num, &a->bank, &a->oevent_list,
@ -630,7 +646,7 @@ void app_input_event(App_state* a, App_input_event ev) {
a->piano_bits = ORCA_PIANO_BITS_NONE; a->piano_bits = ORCA_PIANO_BITS_NONE;
a->needs_remarking = true; a->needs_remarking = true;
break; break;
case App_input_event_toggle_play_pause: case App_input_cmd_toggle_play_pause:
if (a->is_playing) { if (a->is_playing) {
a->is_playing = false; a->is_playing = false;
nodelay(stdscr, FALSE); nodelay(stdscr, FALSE);
@ -639,35 +655,35 @@ void app_input_event(App_state* a, App_input_event ev) {
nodelay(stdscr, TRUE); nodelay(stdscr, TRUE);
} }
break; break;
case App_input_event_toggle_show_event_list: case App_input_cmd_toggle_show_event_list:
a->draw_event_list = !a->draw_event_list; a->draw_event_list = !a->draw_event_list;
break; break;
case App_input_event_shrink_ruler_y: case App_input_cmd_shrink_ruler_y:
if (a->ruler_spacing_y > 4) if (a->ruler_spacing_y > 4)
--a->ruler_spacing_y; --a->ruler_spacing_y;
break; break;
case App_input_event_grow_ruler_y: case App_input_cmd_grow_ruler_y:
if (a->ruler_spacing_y < 16) if (a->ruler_spacing_y < 16)
++a->ruler_spacing_y; ++a->ruler_spacing_y;
break; break;
case App_input_event_shrink_ruler_x: case App_input_cmd_shrink_ruler_x:
if (a->ruler_spacing_x > 4) if (a->ruler_spacing_x > 4)
--a->ruler_spacing_x; --a->ruler_spacing_x;
break; break;
case App_input_event_grow_ruler_x: case App_input_cmd_grow_ruler_x:
if (a->ruler_spacing_x < 16) if (a->ruler_spacing_x < 16)
++a->ruler_spacing_x; ++a->ruler_spacing_x;
break; break;
case App_input_event_shrink_field_y: case App_input_cmd_shrink_field_y:
app_resize_grid_relative(a, -1, 0); app_resize_grid_relative(a, -1, 0);
break; break;
case App_input_event_grow_field_y: case App_input_cmd_grow_field_y:
app_resize_grid_relative(a, 1, 0); app_resize_grid_relative(a, 1, 0);
break; break;
case App_input_event_shrink_field_x: case App_input_cmd_shrink_field_x:
app_resize_grid_relative(a, 0, -1); app_resize_grid_relative(a, 0, -1);
break; break;
case App_input_event_grow_field_x: case App_input_cmd_grow_field_x:
app_resize_grid_relative(a, 0, 1); app_resize_grid_relative(a, 0, 1);
break; break;
} }
@ -864,62 +880,53 @@ int main(int argc, char** argv) {
app_move_cursor_relative(&app_state, 0, 1); app_move_cursor_relative(&app_state, 0, 1);
break; break;
case AND_CTRL('u'): case AND_CTRL('u'):
app_input_event(&app_state, App_input_event_undo); app_input_cmd(&app_state, App_input_cmd_undo);
break; break;
case '[': case '[':
app_input_event(&app_state, App_input_event_shrink_ruler_x); app_input_cmd(&app_state, App_input_cmd_shrink_ruler_x);
break; break;
case ']': case ']':
app_input_event(&app_state, App_input_event_grow_ruler_x); app_input_cmd(&app_state, App_input_cmd_grow_ruler_x);
break; break;
case '{': case '{':
app_input_event(&app_state, App_input_event_shrink_ruler_y); app_input_cmd(&app_state, App_input_cmd_shrink_ruler_y);
break; break;
case '}': case '}':
app_input_event(&app_state, App_input_event_grow_ruler_y); app_input_cmd(&app_state, App_input_cmd_grow_ruler_y);
break; break;
case '(': case '(':
app_input_event(&app_state, App_input_event_shrink_field_x); app_input_cmd(&app_state, App_input_cmd_shrink_field_x);
break; break;
case ')': case ')':
app_input_event(&app_state, App_input_event_grow_field_x); app_input_cmd(&app_state, App_input_cmd_grow_field_x);
break; break;
case '_': case '_':
app_input_event(&app_state, App_input_event_shrink_field_y); app_input_cmd(&app_state, App_input_cmd_shrink_field_y);
break; break;
case '+': case '+':
app_input_event(&app_state, App_input_event_grow_field_y); app_input_cmd(&app_state, App_input_cmd_grow_field_y);
break; break;
case '\r': case '\r':
case KEY_ENTER: case KEY_ENTER:
app_input_event(&app_state, App_input_event_toggle_append_mode); app_input_cmd(&app_state, App_input_cmd_toggle_append_mode);
break; break;
case '/': case '/':
app_input_event(&app_state, App_input_event_toggle_piano_mode); app_input_cmd(&app_state, App_input_cmd_toggle_piano_mode);
break; break;
case AND_CTRL('f'): { case AND_CTRL('f'): {
app_input_event(&app_state, App_input_event_step_forward); app_input_cmd(&app_state, App_input_cmd_step_forward);
} break; } break;
case AND_CTRL('e'): case AND_CTRL('e'):
app_input_event(&app_state, App_input_event_toggle_show_event_list); app_input_cmd(&app_state, App_input_cmd_toggle_show_event_list);
break; break;
case ' ': case ' ':
app_input_event(&app_state, App_input_event_toggle_play_pause); app_input_cmd(&app_state, App_input_cmd_toggle_play_pause);
break; break;
default: default:
switch (app_state.input_mode) {
case Tui_input_mode_normal:
case Tui_input_mode_append: {
if (key >= '!' && key <= '~') {
app_write_character(&app_state, (char)key);
}
} break;
case Tui_input_mode_piano: {
if (key >= '!' && key <= '~') { if (key >= '!' && key <= '~') {
app_add_piano_bits_for_character(&app_state, (char)key); app_input_character(&app_state, (char)key);
}
} break;
} }
break;
#if 0 #if 0
else { else {
fprintf(stderr, "Unknown key number: %d\n", key); fprintf(stderr, "Unknown key number: %d\n", key);

Loading…
Cancel
Save