aboutsummaryrefslogtreecommitdiff
path: root/ttt.jai
diff options
context:
space:
mode:
Diffstat (limited to 'ttt.jai')
-rw-r--r--ttt.jai60
1 files changed, 49 insertions, 11 deletions
diff --git a/ttt.jai b/ttt.jai
index 7431ac6..53a3e01 100644
--- a/ttt.jai
+++ b/ttt.jai
@@ -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);
}