diff options
Diffstat (limited to 'ttt.jai')
| -rw-r--r-- | ttt.jai | 60 |
1 files changed, 49 insertions, 11 deletions
@@ -27,7 +27,8 @@ #import "String"; // #import "curses"; // #import "kscurses"; -TUI :: #import "tio"; // TODO Rename module to "tui.jai" +TIO :: #import "tio"; // TODO Move things into TUI. +TUI :: #import "tui"; #load "Integer_Saturating_Arithmetic.jai"; @@ -901,7 +902,7 @@ initialize_tui :: () { } // TODO DAM - TUI.initialize(); + TIO.initialize(); // stdscr = initscr(); // Start curses mode. TODO DAM // cbreak(); // Line buffering disabled; pass on everty thing to me. TODO DAM // keypad(stdscr, true); // I need those nifty F1..F12. TODO DAM @@ -955,7 +956,7 @@ draw_tui :: (db: *Database, layout: *Layout) { // Reset theme and clear screen. //attrset(A_NORMAL); TODO DAM - TUI.tui_clear_screen(); + TIO.tui_clear_screen(); // Draw outer border. //box(stdscr, 0, 0); TODO DAM @@ -1179,6 +1180,43 @@ read_enter_confirmation :: inline (row: int, style: int, message: string) -> boo } main :: () { + + // https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences + // https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#designate-character-set + // https://github.com/MicrosoftDocs/Console-Docs/blob/main/docs/console-virtual-terminal-sequences.md + TUI.start(); + TUI.clear_screen(); + TUI.draw_box(1,1,13,13); + sleep_milliseconds(10000); + write_string(TUI.Commands.ShowCursor); + TUI.stop(); + return; + + str: string; + + write_string("\e(0"); // Enter Line drawing mode + write_string("\e[104;93m"); // bright yellow on bright blue + write_string("x"); // in line drawing mode, \x78 -> \u2502 "Vertical Bar" + write_string("\e[10m"); // restore color + write_string("\e(B"); // exit line drawing mode + sleep_milliseconds(1000); + + + // str = "\e[sWOW\e[u\e[1P"; + str = "\e[sWOW"; + // write(STDIN_FILENO, str.data, xx str.count); + write_string(str); + sleep_milliseconds(1000); + + str = "\e[?25l"; + // write(STDIN_FILENO, str.data, xx str.count); + write_string(str); + sleep_milliseconds(1000); + + str = "\e[?25h"; + // write(STDIN_FILENO, str.data, xx str.count); + write_string(str); + return; // TODO Implement signal handling and see modules/Debug.jai for examples. @@ -1361,7 +1399,7 @@ main :: () { layout := *layouts[Layouts.COMPACT]; //flushinp(); TODO DAM - TUI.tui_ungetch(KEY_RESIZE); // TODO DAM + TIO.tui_ungetch(KEY_RESIZE); // TODO DAM while (true) { if (is_terminal_too_small) { @@ -1375,7 +1413,7 @@ main :: () { reset_temporary_storage(); //timeout(INPUT_TIMEOUT_MS); TODO DAM - key := TUI.tui_getch(); // getch(); TODO DAM + key := TIO.tui_getch(); // getch(); TODO DAM if key == #char "q" || key == #char "Q" break; update_times(*database); //timeout(INPUT_AWAIT_INF); TODO DAM @@ -1413,13 +1451,13 @@ main :: () { // When terminal is resized. case KEY_RESIZE; - TUI.tui_clear_screen(); + TIO.tui_clear_screen(); //getmaxyx(stdscr, *size_y, *size_x); - TUI.update_terminal_size(); // TODO DAM - size_x = TUI.terminal_state.width; - size_y = TUI.terminal_state.height; + TIO.update_terminal_size(); // TODO DAM + size_x = TIO.terminal_state.width; + size_y = TIO.terminal_state.height; print("resize:%x%", size_x, size_y); - asd := TUI.tui_getch(); + asd := TIO.tui_getch(); is_terminal_too_small = size_x < 60 || size_y < 3; update_layout(); layout = *layouts[ifx size_x > 100 then Layouts.NORMAL else Layouts.COMPACT]; @@ -1770,7 +1808,7 @@ main :: () { //getch(); TODO DAM } - TUI.terminate(); // TODO DAM + TIO.terminate(); // TODO DAM exit(xx ifx error_saving then 1 else 0); } |
