X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=taskasaur.c;h=783ed90c6c3ac2cfdab63456029579639c50df16;hb=3b924bd8e3f3698fec5c31a20475597f0d749870;hp=bdc72f57720b14672ae0c1c3e18833853cfd58e2;hpb=bcb6f1950bfd2867df61d5c93aa73b73e093edbc;p=taskasaur.git diff --git a/taskasaur.c b/taskasaur.c index bdc72f5..783ed90 100644 --- a/taskasaur.c +++ b/taskasaur.c @@ -5,6 +5,9 @@ #include "headers/utils.h" #include "config.h" +void render_step(BoardMenu* boardmenu); +void save_to_file(char* filepath, BoardMenu* boardmenu); + int main(int argc, char** argv) { @@ -22,12 +25,10 @@ main(int argc, char** argv) BoardMenu* boardmenu; boardmenu = create_board_menu(board); - // this is temp - for (int i = 0; i < boardmenu->menu_count; i++) { - render_menu(boardmenu->menu_list[i]); - } + /* need to render before user presses anything */ + render_step(boardmenu); - char ch; + int ch; while ((ch = getch()) != BINDING_QUIT) { Menu* active_menu; @@ -149,27 +150,55 @@ main(int argc, char** argv) menu_driver(active_menu, MENU_EDIT); break; case BINDING_SELECT: - break; case BINDING_WRITE: - { - Board* writeboard; - writeboard = boardmenu_to_board(boardmenu); - - begin_write(boardfile_name, writeboard); - free_board(writeboard); - } + save_to_file(boardfile_name, boardmenu); + break; + case KEY_RESIZE: + /* ; */ + /* int y, x; */ + /* char out[10]; */ + /* getmaxyx(stdscr, y, x); */ + /* sprintf(out, "%d,%d", y, x); */ + /* mvprintw(20, 20, out); */ + /* resize_term(y, x); */ break; } - for (int i = 0; i < boardmenu->menu_count; i++) { - render_menu(boardmenu->menu_list[i]); - } + render_step(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; } +void +render_step(BoardMenu* boardmenu) +{ + for (int i = 0; i < boardmenu->menu_count; i++) { + + Menu* curmenu = boardmenu->menu_list[i]; + + /* update the descriptions - maybe not do this here */ + for (int j = 0; j < get_menu_length(curmenu); j++) { + update_menuitem_descrip(get_menu_item(curmenu, j)); + } + + render_menu(curmenu); + } +} + +void +save_to_file(char* filepath, BoardMenu* boardmenu) +{ + Board* writeboard; + writeboard = boardmenu_to_board(boardmenu); + + begin_write(filepath, writeboard); + free_board(writeboard); +}