aboutsummaryrefslogtreecommitdiff
path: root/kscurses/ui/master.jai
diff options
context:
space:
mode:
Diffstat (limited to 'kscurses/ui/master.jai')
-rw-r--r--kscurses/ui/master.jai105
1 files changed, 0 insertions, 105 deletions
diff --git a/kscurses/ui/master.jai b/kscurses/ui/master.jai
deleted file mode 100644
index 9cb0702..0000000
--- a/kscurses/ui/master.jai
+++ /dev/null
@@ -1,105 +0,0 @@
-UI_Master :: struct {
- style : UI_Style;
- canvas : Canvas;
- root : *UI_Elem;
- should_exit := false;
-
- blink_stage := 0;
-
- before_draw : struct {
- proc := (data : *void) { };
- data : *void;
- };
- extra_handle : struct {
- proc := (e : Event, data : *void) { };
- data : *void;
- };
-}
-__ui_master : UI_Master;
-
-
-set_main_scene :: (scene : UI_Scene) {
- __ui_master.root = scene.root;
- set_active_recursive(scene.entry);
-}
-run_singlethread_ui :: () {
- use_default_winch_handler();
- using __ui_master;
- while 1 {
- before_draw.proc(before_draw.data);
- if should_exit break;
- draw(*__ui_master);
- reset_temporary_storage();
- handle_key(*__ui_master, ks_getch(block = false));
- if should_exit break;
- }
- deinit(*__ui_master);
-}
-run_multithread_ui :: () {
- use_events(tick_duration_ms = 530);
- __event_handler = .{
- proc = (e : Event, __data : *void) {
- using __ui_master;
- if e.type == {
- case .KEY;
- handle_key(*__ui_master, e.key);
- case .TICK;
- #if ENABLE_UI_BLINKING __ui_master.blink_stage = xx !__ui_master.blink_stage;
- }
- extra_handle.proc(e, extra_handle.data);
- },
- data = null
- }; defer __event_handler = .{};
-
- using __ui_master;
-
- while 1 {
- before_draw.proc(before_draw.data);
- if should_exit break;
- processed := wait_and_process_events();
- if should_exit break;
- if processed {
- draw(*__ui_master);
- reset_temporary_storage();
- }
- }
- deinit(*__ui_master);
-}
-
-#scope_file
-draw :: (using ui_master : *UI_Master) {
- new_zone := Ibox2.{size = terminal_state.size};
- builder : String_Builder;
-
- if new_zone != canvas.zone {
- resize_clear(*canvas, new_zone);
- }
- ok := c_draw(*canvas, root, canvas.zone, *style);
- if ok {
- ks_draw_canvas(*canvas);
- } else {
- b_mode_set(*builder, style.text.default);
- b_clear_screen(*builder);
- b_print(*builder, .{0, 0}, style.text.debug, "screen to small: %x%", terminal_state.size.x, terminal_state.size.y);
- }
- b_cursor_set_visibility(*builder, terminal_state.cursor != ivec2.{-1, -1});
- if terminal_state.cursor != ivec2.{-1, -1} then b_move_cursor(*builder, terminal_state.cursor);
-
- ks_write(builder_to_string(*builder, allocator = temp));
-}
-handle_key :: (using ui_master : *UI_Master, key : Key) {
- handled := handle_key(root, key);
- if handled return;
-
- if key == {
- case .ESCAPE; {
- should_exit = true;
- unset_active_recursive(__last_set);
- }
- case; if key != .READ_ERROR ui_bell();
- }
-}
-deinit :: (using ui_master : *UI_Master) {
- deinit(*canvas);
- __ui_master = .{};
-} \ No newline at end of file