Browse Source

Change saving system to use new msg box

master
cancel 6 years ago
parent
commit
8fdf21b7c0
  1. 55
      tui_main.c

55
tui_main.c

@ -1441,6 +1441,7 @@ bool hacky_try_save(Field* field, char const* filename) {
enum { enum {
Menu_id_quit = 1, Menu_id_quit = 1,
Menu_id_save, Menu_id_save,
Menu_id_save_as,
}; };
struct { struct {
@ -1450,7 +1451,8 @@ struct {
void push_main_menu() { void push_main_menu() {
Qmenu* qm = &g_main_menu.qmenu; Qmenu* qm = &g_main_menu.qmenu;
qmenu_start(qm); qmenu_start(qm);
qmenu_add_text_item(qm, "Save As...", Menu_id_save); qmenu_add_text_item(qm, "Save", Menu_id_save);
// qmenu_add_text_item(qm, "Save As...", Menu_id_save_as);
qmenu_add_spacer(qm); qmenu_add_spacer(qm);
qmenu_add_text_item(qm, "Quit", Menu_id_quit); qmenu_add_text_item(qm, "Quit", Menu_id_quit);
qmenu_push_to_nav(qm); qmenu_push_to_nav(qm);
@ -1458,6 +1460,20 @@ void push_main_menu() {
qnav_draw_title(&qm->nav_block, "ORCA"); qnav_draw_title(&qm->nav_block, "ORCA");
} }
void try_save_with_msg(Ged* ged) {
if (!ged->filename)
return;
bool ok = hacky_try_save(&ged->field, ged->filename);
Qnav_block* msg = qnav_push_message(3, 50);
WINDOW* msgw = msg->content_window;
wmove(msgw, 0, 1);
if (ok) {
wprintw(msgw, "Saved to: %s", ged->filename);
} else {
wprintw(msgw, "FAILED to save to %s", ged->filename);
}
}
// //
// main // main
// //
@ -1760,10 +1776,13 @@ int main(int argc, char** argv) {
case Menu_id_quit: case Menu_id_quit:
goto quit; goto quit;
case Menu_id_save: { case Menu_id_save: {
try_save_with_msg(&ged_state);
} break;
case Menu_id_save_as: {
Qnav_block* msg = qnav_push_message(3, 30); Qnav_block* msg = qnav_push_message(3, 30);
WINDOW* msgw = msg->content_window; WINDOW* msgw = msg->content_window;
wmove(msgw, 0, 1); wmove(msgw, 0, 1);
wprintw(msgw, "Not yet implemented from this menu"); wprintw(msgw, "Not yet implemented");
} break; } break;
} }
} }
@ -1891,36 +1910,8 @@ int main(int argc, char** argv) {
} }
} break; } break;
case KEY_F(2): { case CTRL_PLUS('s'): {
if (!ged_state.filename) try_save_with_msg(&ged_state);
break;
if (ged_state.is_playing) {
ged_input_cmd(&ged_state, Ged_input_cmd_toggle_play_pause);
}
bool ok = hacky_try_save(&ged_state.field, ged_state.filename);
werase(stdscr);
notimeout(stdscr, FALSE);
wmove(stdscr, 0, 0);
if (ok) {
wprintw(stdscr, "Saved file %s\nPress any key to continue\n",
ged_state.filename);
} else {
wprintw(stdscr, "FAILED to save %s\nPress any key to continue\n",
ged_state.filename);
}
bool did_resize = false;
for (;;) {
int key0 = wgetch(stdscr);
if (key0 == KEY_RESIZE)
did_resize = true;
if (key0 != KEY_RESIZE && key0 != ERR)
break;
}
werase(stdscr);
ged_state.is_draw_dirty = true;
if (did_resize)
ungetch(KEY_RESIZE);
wtimeout(stdscr, cur_timeout);
} break; } break;
default: default:

Loading…
Cancel
Save