char* boardfile_name = "test_board.md";
void normal_handleinput(BoardMenu* boardmenu, int ch);
+void popup_handleinput(BoardMenu* boardmenu, int ch);
void normal_renderstep(BoardMenu* boardmenu);
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);
normal_renderstep(boardmenu);
} else {
+ popup_handleinput(boardmenu, ch);
popup_renderstep(boardmenu);
}
/* 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;
}
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;
+
+ popup_menu = boardmenu->popup_menu;
+
+ switch (ch) {
+
+ case BINDING_SCROLL_UP:
+ menu_driver(popup_menu, MENU_UP);
+ break;
+ case BINDING_SCROLL_DOWN:
+ menu_driver(popup_menu, MENU_DOWN);
+ break;
+ case BINDING_QUIT:
+ boardmenu->popup_open = 0;
+ break;
+ }
+}
+
void
normal_renderstep(BoardMenu* boardmenu)
{
{
if (boardmenu->popup_menu == NULL) return;
+ render_popup_menu(boardmenu->popup_menu);
+
}
void
begin_write(filepath, writeboard);
free_board(writeboard);
}
+
+void
+exit_step(BoardMenu* boardmenu)
+{
+ exit_tscurses();
+ exit(0);
+}