crude scrolling
[taskasaur.git] / taskasaur.c
index bdc72f5..dbc3d31 100644 (file)
@@ -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;
@@ -67,8 +68,8 @@ main(int argc, char** argv)
                     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,
@@ -96,8 +97,8 @@ main(int argc, char** argv)
                     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,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);
+}