|
|
@ -1846,6 +1846,7 @@ enum { |
|
|
|
Set_tempo_form_id, |
|
|
|
Set_grid_dims_form_id, |
|
|
|
Autofit_menu_id, |
|
|
|
Confirm_new_file_menu_id, |
|
|
|
}; |
|
|
|
enum { |
|
|
|
Open_name_text_line_id = 1, |
|
|
@ -1863,6 +1864,10 @@ enum { |
|
|
|
Autofit_nicely_id = 1, |
|
|
|
Autofit_tightly_id, |
|
|
|
}; |
|
|
|
enum { |
|
|
|
Confirm_new_file_reject_id = 1, |
|
|
|
Confirm_new_file_accep_id, |
|
|
|
}; |
|
|
|
enum { |
|
|
|
Main_menu_quit = 1, |
|
|
|
Main_menu_controls, |
|
|
@ -1904,6 +1909,14 @@ void pop_qnav_if_main_menu(void) { |
|
|
|
qnav_stack_pop(); |
|
|
|
} |
|
|
|
|
|
|
|
void push_confirm_new_file_menu(void) { |
|
|
|
Qmenu* qm = qmenu_create(Confirm_new_file_menu_id); |
|
|
|
qmenu_set_title(qm, "Are you sure?"); |
|
|
|
qmenu_add_choice(qm, "Cancel", Confirm_new_file_reject_id); |
|
|
|
qmenu_add_choice(qm, "Create New File", Confirm_new_file_accep_id); |
|
|
|
qmenu_push_to_nav(qm); |
|
|
|
} |
|
|
|
|
|
|
|
void push_autofit_menu(void) { |
|
|
|
Qmenu* qm = qmenu_create(Autofit_menu_id); |
|
|
|
qmenu_set_title(qm, "Auto-fit Grid"); |
|
|
@ -2798,32 +2811,9 @@ int main(int argc, char** argv) { |
|
|
|
case Main_menu_about: |
|
|
|
push_about_msg(); |
|
|
|
break; |
|
|
|
case Main_menu_new: { |
|
|
|
Usz new_field_h, new_field_w; |
|
|
|
if (ged_suggest_nice_grid_size(ged_state.win_h, ged_state.win_w, |
|
|
|
ged_state.softmargin_y, |
|
|
|
ged_state.softmargin_x, |
|
|
|
(int)ged_state.ruler_spacing_y, |
|
|
|
(int)ged_state.ruler_spacing_x, |
|
|
|
&new_field_h, &new_field_w)) { |
|
|
|
undo_history_push(&ged_state.undo_hist, &ged_state.field, |
|
|
|
ged_state.tick_num); |
|
|
|
field_resize_raw(&ged_state.field, new_field_h, new_field_w); |
|
|
|
memset(ged_state.field.buffer, '.', |
|
|
|
new_field_h * new_field_w * sizeof(Glyph)); |
|
|
|
ged_cursor_confine(&ged_state.ged_cursor, new_field_h, |
|
|
|
new_field_w); |
|
|
|
mbuf_reusable_ensure_size(&ged_state.mbuf_r, new_field_h, |
|
|
|
new_field_w); |
|
|
|
ged_update_internal_geometry(&ged_state); |
|
|
|
ged_make_cursor_visible(&ged_state); |
|
|
|
ged_state.needs_remarking = true; |
|
|
|
ged_state.is_draw_dirty = true; |
|
|
|
heapstr_set_cstr(&file_name, ""); |
|
|
|
ged_state.filename = "unnamed"; // slightly redundant
|
|
|
|
pop_qnav_if_main_menu(); |
|
|
|
} |
|
|
|
} break; |
|
|
|
case Main_menu_new: |
|
|
|
push_confirm_new_file_menu(); |
|
|
|
break; |
|
|
|
case Main_menu_open: |
|
|
|
push_open_form(file_name.str); |
|
|
|
break; |
|
|
@ -2876,6 +2866,39 @@ int main(int argc, char** argv) { |
|
|
|
} |
|
|
|
qnav_stack_pop(); |
|
|
|
pop_qnav_if_main_menu(); |
|
|
|
} else if (qmenu_id(qm) == Confirm_new_file_menu_id) { |
|
|
|
switch (act.picked.id) { |
|
|
|
case Confirm_new_file_reject_id: |
|
|
|
qnav_stack_pop(); |
|
|
|
break; |
|
|
|
case Confirm_new_file_accep_id: { |
|
|
|
Usz new_field_h, new_field_w; |
|
|
|
if (ged_suggest_nice_grid_size(ged_state.win_h, ged_state.win_w, |
|
|
|
ged_state.softmargin_y, |
|
|
|
ged_state.softmargin_x, |
|
|
|
(int)ged_state.ruler_spacing_y, |
|
|
|
(int)ged_state.ruler_spacing_x, |
|
|
|
&new_field_h, &new_field_w)) { |
|
|
|
undo_history_push(&ged_state.undo_hist, &ged_state.field, |
|
|
|
ged_state.tick_num); |
|
|
|
field_resize_raw(&ged_state.field, new_field_h, new_field_w); |
|
|
|
memset(ged_state.field.buffer, '.', |
|
|
|
new_field_h * new_field_w * sizeof(Glyph)); |
|
|
|
ged_cursor_confine(&ged_state.ged_cursor, new_field_h, |
|
|
|
new_field_w); |
|
|
|
mbuf_reusable_ensure_size(&ged_state.mbuf_r, new_field_h, |
|
|
|
new_field_w); |
|
|
|
ged_update_internal_geometry(&ged_state); |
|
|
|
ged_make_cursor_visible(&ged_state); |
|
|
|
ged_state.needs_remarking = true; |
|
|
|
ged_state.is_draw_dirty = true; |
|
|
|
heapstr_set_cstr(&file_name, ""); |
|
|
|
ged_state.filename = "unnamed"; // slightly redundant
|
|
|
|
qnav_stack_pop(); |
|
|
|
pop_qnav_if_main_menu(); |
|
|
|
} |
|
|
|
} break; |
|
|
|
} |
|
|
|
} |
|
|
|
} break; |
|
|
|
} |
|
|
|