diff --git a/tui_main.c b/tui_main.c index c414679..a383a34 100644 --- a/tui_main.c +++ b/tui_main.c @@ -3131,166 +3131,159 @@ int main(int argc, char **argv) { qnav_stack_pop(); break; } - if (qmenu_drive(qm, key, &act)) { - switch (act.any.type) { - case Qmenu_action_type_canceled: - qnav_stack_pop(); - break; - case Qmenu_action_type_picked: { - switch (qmenu_id(qm)) { - case Main_menu_id: { - switch (act.picked.id) { - case Main_menu_quit: - goto quit; - case Main_menu_cosmetics: - push_cosmetics_menu(); - break; - 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(); - break; - case Main_menu_new: - push_confirm_new_file_menu(); - break; - case Main_menu_open: - push_open_form(osoc(t.file_name)); - break; - case Main_menu_save: - if (osolen(t.file_name) > 0) { - try_save_with_msg(&t.ged.field, t.file_name); - } else { - push_save_as_form(""); - } - break; - case Main_menu_save_as: - push_save_as_form(osoc(t.file_name)); - break; - case Main_menu_set_tempo: - push_set_tempo_form(t.ged.bpm); - break; - case Main_menu_set_grid_dims: - push_set_grid_dims_form(t.ged.field.height, t.ged.field.width); - break; - case Main_menu_autofit_grid: - push_autofit_menu(); - break; + if (!qmenu_drive(qm, key, &act)) + break; + switch (act.any.type) { + case Qmenu_action_type_canceled: + qnav_stack_pop(); + break; + case Qmenu_action_type_picked: + switch (qmenu_id(qm)) { + case Main_menu_id: + switch (act.picked.id) { + case Main_menu_quit: + goto quit; + case Main_menu_cosmetics: + push_cosmetics_menu(); + break; + 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(); + break; + case Main_menu_new: + push_confirm_new_file_menu(); + break; + case Main_menu_open: + push_open_form(osoc(t.file_name)); + break; + case Main_menu_save: + if (osolen(t.file_name) > 0) { + try_save_with_msg(&t.ged.field, t.file_name); + } else { + push_save_as_form(""); + } + break; + case Main_menu_save_as: + push_save_as_form(osoc(t.file_name)); + break; + case Main_menu_set_tempo: + push_set_tempo_form(t.ged.bpm); + break; + case Main_menu_set_grid_dims: + push_set_grid_dims_form(t.ged.field.height, t.ged.field.width); + break; + case Main_menu_autofit_grid: + push_autofit_menu(); + break; #ifdef FEAT_PORTMIDI - case Main_menu_choose_portmidi_output: - push_portmidi_output_device_menu(&t.midi_mode); - break; + case Main_menu_choose_portmidi_output: + push_portmidi_output_device_menu(&t.midi_mode); + break; #endif - } + } + break; + case Autofit_menu_id: { + Usz new_field_h, new_field_w; + bool did_get_ok_size = false; + switch (act.picked.id) { + case Autofit_nicely_id: + did_get_ok_size = tui_suggest_nice_grid_size( + &t, t.ged.win_h, t.ged.win_w, &new_field_h, &new_field_w); break; + case Autofit_tightly_id: + did_get_ok_size = tui_suggest_tight_grid_size( + &t, t.ged.win_h, t.ged.win_w, &new_field_h, &new_field_w); + break; + } + if (did_get_ok_size) { + ged_resize_grid(&t.ged.field, &t.ged.mbuf_r, new_field_h, + new_field_w, t.ged.tick_num, &t.ged.scratch_field, + &t.ged.undo_hist, &t.ged.ged_cursor); + ged_update_internal_geometry(&t.ged); + t.ged.needs_remarking = true; + t.ged.is_draw_dirty = true; + ged_make_cursor_visible(&t.ged); } - case Autofit_menu_id: { + qnav_stack_pop(); + pop_qnav_if_main_menu(); + break; + } + case Confirm_new_file_menu_id: + switch (act.picked.id) { + case Confirm_new_file_reject_id: + qnav_stack_pop(); + break; + case Confirm_new_file_accept_id: { Usz new_field_h, new_field_w; - bool did_get_ok_size = false; - switch (act.picked.id) { - case Autofit_nicely_id: - did_get_ok_size = tui_suggest_nice_grid_size( - &t, t.ged.win_h, t.ged.win_w, &new_field_h, &new_field_w); - break; - case Autofit_tightly_id: - did_get_ok_size = tui_suggest_tight_grid_size( - &t, t.ged.win_h, t.ged.win_w, &new_field_h, &new_field_w); - break; - } - if (did_get_ok_size) { - ged_resize_grid(&t.ged.field, &t.ged.mbuf_r, new_field_h, - new_field_w, t.ged.tick_num, - &t.ged.scratch_field, &t.ged.undo_hist, - &t.ged.ged_cursor); + if (tui_suggest_nice_grid_size(&t, t.ged.win_h, t.ged.win_w, + &new_field_h, &new_field_w)) { + undo_history_push(&t.ged.undo_hist, &t.ged.field, + t.ged.tick_num); + field_resize_raw(&t.ged.field, new_field_h, new_field_w); + memset(t.ged.field.buffer, '.', + new_field_h * new_field_w * sizeof(Glyph)); + ged_cursor_confine(&t.ged.ged_cursor, new_field_h, new_field_w); + mbuf_reusable_ensure_size(&t.ged.mbuf_r, new_field_h, + new_field_w); ged_update_internal_geometry(&t.ged); + ged_make_cursor_visible(&t.ged); t.ged.needs_remarking = true; t.ged.is_draw_dirty = true; - ged_make_cursor_visible(&t.ged); - } - qnav_stack_pop(); - pop_qnav_if_main_menu(); - break; - } - case Confirm_new_file_menu_id: { - switch (act.picked.id) { - case Confirm_new_file_reject_id: + osoclear(&t.file_name); qnav_stack_pop(); - break; - case Confirm_new_file_accept_id: { - Usz new_field_h, new_field_w; - if (tui_suggest_nice_grid_size(&t, t.ged.win_h, t.ged.win_w, - &new_field_h, &new_field_w)) { - undo_history_push(&t.ged.undo_hist, &t.ged.field, - t.ged.tick_num); - field_resize_raw(&t.ged.field, new_field_h, new_field_w); - memset(t.ged.field.buffer, '.', - new_field_h * new_field_w * sizeof(Glyph)); - ged_cursor_confine(&t.ged.ged_cursor, new_field_h, - new_field_w); - mbuf_reusable_ensure_size(&t.ged.mbuf_r, new_field_h, - new_field_w); - ged_update_internal_geometry(&t.ged); - ged_make_cursor_visible(&t.ged); - t.ged.needs_remarking = true; - t.ged.is_draw_dirty = true; - osoclear(&t.file_name); - qnav_stack_pop(); - pop_qnav_if_main_menu(); - } - break; - } + pop_qnav_if_main_menu(); } break; } - case Cosmetics_menu_id: - switch (act.picked.id) { - case Cosmetics_soft_margins_id: - push_soft_margins_form(t.softmargin_y, t.softmargin_x); - break; - case Cosmetics_grid_dots_id: - push_plainorfancy_menu(Set_fancy_grid_dots_menu_id, "Grid Dots", - t.fancy_grid_dots); - break; - case Cosmetics_grid_rulers_id: - push_plainorfancy_menu(Set_fancy_grid_rulers_menu_id, - "Grid Rulers", t.fancy_grid_rulers); - break; - } - break; - case Set_fancy_grid_dots_menu_id: - plainorfancy_menu_was_picked(&t, act.picked.id, - &t.fancy_grid_dots, - Preftouch_griddotstype); + } + break; + case Cosmetics_menu_id: + switch (act.picked.id) { + case Cosmetics_soft_margins_id: + push_soft_margins_form(t.softmargin_y, t.softmargin_x); break; - case Set_fancy_grid_rulers_menu_id: - plainorfancy_menu_was_picked(&t, act.picked.id, - &t.fancy_grid_rulers, - Preftouch_gridrulerstype); + case Cosmetics_grid_dots_id: + push_plainorfancy_menu(Set_fancy_grid_dots_menu_id, "Grid Dots", + t.fancy_grid_dots); break; -#ifdef FEAT_PORTMIDI - case Portmidi_output_device_menu_id: { - ged_stop_all_sustained_notes(&t.ged); - midi_mode_deinit(&t.midi_mode); - PmError pme = - midi_mode_init_portmidi(&t.midi_mode, act.picked.id); - qnav_stack_pop(); - if (pme) { - qmsg_printf_push("PortMidi Error", - "Error setting PortMidi output device:\n%s", - Pm_GetErrorText(pme)); - } else { - tui_save_prefs(&t); - } + case Cosmetics_grid_rulers_id: + push_plainorfancy_menu(Set_fancy_grid_rulers_menu_id, + "Grid Rulers", t.fancy_grid_rulers); break; } -#endif + break; + case Set_fancy_grid_dots_menu_id: + plainorfancy_menu_was_picked(&t, act.picked.id, &t.fancy_grid_dots, + Preftouch_griddotstype); + break; + case Set_fancy_grid_rulers_menu_id: + plainorfancy_menu_was_picked(&t, act.picked.id, + &t.fancy_grid_rulers, + Preftouch_gridrulerstype); + break; +#ifdef FEAT_PORTMIDI + case Portmidi_output_device_menu_id: { + ged_stop_all_sustained_notes(&t.ged); + midi_mode_deinit(&t.midi_mode); + PmError pme = midi_mode_init_portmidi(&t.midi_mode, act.picked.id); + qnav_stack_pop(); + if (pme) { + qmsg_printf_push("PortMidi Error", + "Error setting PortMidi output device:\n%s", + Pm_GetErrorText(pme)); + } else { + tui_save_prefs(&t); } break; } +#endif } + break; } break; }