X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=taskasaur.c;h=5392cf6a607ec03da000bd7a0d410c766ff864f9;hb=abf215afaba441f488105fb9d30d95264c2e5850;hp=cb929e908b5c3e9f46ac4fb7166502fc90326d31;hpb=b93f9808ed43d0b1ef875aaaa4047a9ce8123eda;p=taskasaur.git diff --git a/taskasaur.c b/taskasaur.c index cb929e9..5392cf6 100644 --- a/taskasaur.c +++ b/taskasaur.c @@ -6,6 +6,7 @@ #include "config.h" void render_step(BoardMenu* boardmenu); +void save_to_file(char* filepath, BoardMenu* boardmenu); int main(int argc, char** argv) @@ -27,7 +28,7 @@ main(int argc, char** argv) /* need to render before user presses anything */ render_step(boardmenu); - char ch; + int ch; while ((ch = getch()) != BINDING_QUIT) { Menu* active_menu; @@ -63,12 +64,13 @@ main(int argc, char** argv) break; case BINDING_MOVE_ITEM_LEFT: if (boardmenu->selected-1 < 0) break; + if (get_menu_length(boardmenu->menu_list[boardmenu->selected]) == 0) break; { Menu* from_menu; Menu* to_menu; - from_menu = boardmenu->menu_list[boardmenu->selected], - to_menu = boardmenu->menu_list[boardmenu->selected-1], + from_menu = boardmenu->menu_list[boardmenu->selected]; + to_menu = boardmenu->menu_list[boardmenu->selected-1]; insert_item( to_menu, @@ -91,13 +93,14 @@ main(int argc, char** argv) break; case BINDING_MOVE_ITEM_RIGHT: if (boardmenu->selected >= boardmenu->menu_count-1) break; + if (get_menu_length(boardmenu->menu_list[boardmenu->selected]) == 0) break; // this is legit cpy paste please fix this { Menu* from_menu; Menu* to_menu; - from_menu = boardmenu->menu_list[boardmenu->selected], - to_menu = boardmenu->menu_list[boardmenu->selected+1], + from_menu = boardmenu->menu_list[boardmenu->selected]; + to_menu = boardmenu->menu_list[boardmenu->selected+1]; insert_item( to_menu, @@ -149,23 +152,28 @@ 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; } 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; @@ -186,3 +194,13 @@ render_step(BoardMenu* boardmenu) 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); +}