void popup_renderstep(BoardMenu* boardmenu);
void save_to_file(char* filepath, BoardMenu* boardmenu);
+void exit_step(BoardMenu* boardmenu);
+
int
main(int argc, char** argv)
{
normal_renderstep(boardmenu);
int ch;
- while ((ch = getch()) != BINDING_QUIT) {
+ while (1) {
+
+ ch = getch();
if (boardmenu->popup_open == 0) {
normal_handleinput(boardmenu, ch);
/* save on exit - this causes weird stuff to happen, maybe it's not given enough time to write before program exits? */
/* save_to_file(boardfile_name, boardmenu); */
- exit_tscurses();
return 0;
}
);
/* set mode to popup */
- boardmenu->popup_menu = make_popup_menu(sel_itemdata);
+ boardmenu->popupmenu = make_popupmenu(sel_itemdata);
boardmenu->popup_open = 1;
}
case BINDING_WRITE:
save_to_file(boardfile_name, boardmenu);
break;
+ case BINDING_QUIT:
+ exit_step(boardmenu);
+ break;
case KEY_RESIZE:
/* ; */
/* int y, x; */
void
popup_handleinput(BoardMenu* boardmenu, int ch)
{
- Menu* popup_menu;
+ Menu* popupmenu_menu;
- popup_menu = boardmenu->popup_menu;
+ popupmenu_menu = boardmenu->popupmenu->menu;
switch (ch) {
case BINDING_SCROLL_UP:
- menu_driver(popup_menu, MENU_UP);
+ menu_driver(popupmenu_menu, MENU_UP);
break;
case BINDING_SCROLL_DOWN:
- menu_driver(popup_menu, MENU_DOWN);
+ menu_driver(popupmenu_menu, MENU_DOWN);
+ break;
+ case BINDING_QUIT:
+ boardmenu->popup_open = 0;
break;
}
}
void
popup_renderstep(BoardMenu* boardmenu)
{
- if (boardmenu->popup_menu == NULL) return;
-
- render_popup_menu(boardmenu->popup_menu);
+ if (boardmenu->popupmenu == NULL) return;
+ render_popupmenu(boardmenu->popupmenu);
}
void
begin_write(filepath, writeboard);
free_board(writeboard);
}
+
+void
+exit_step(BoardMenu* boardmenu)
+{
+ exit_tscurses();
+ exit(0);
+}