package tiny_appkits

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file Tui_turbo.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(* Claude Code
 *
 * Copyright (C) 2026 Yoann Padioleau
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public License
 * (LGPL) as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 *)

(* See Tui_turbo.mli *)

open Turbo_model

type model = Turbo_model.model

(*****************************************************************************)
(* The start *)
(*****************************************************************************)

let init : model =
  Turbo_edit.load
    { lines = [| "" |]; row = 0; col = 0; top = 0; left = 0; file = Turbo_edit.noname; modified = false; overwrite = false; disk = Pascal_disk.files;
      mode = Editing; error = None; compiled = None; last_screen = None; search = ""; runs = 0; session = None; breakpoints = []; watches = [];
      quit = false;
      escaped = false }
    "QUEENS.PAS"

let update = Turbo_update.update
let view = Turbo_view.view
let program : model Tui.program = { init; update; view; over = (fun m -> m.quit) }
let lines (m : model) = Array.to_list m.lines
let cursor (m : model) = (m.row, m.col)
let error (m : model) = m.error

let screen (m : model) =
  match m.mode with
  | Editing -> "edit"
  | Menu _ -> "menu"
  | Open_dialog _ | Input _ | Info _ -> "dialog"
  | Executing -> "run"
  | Stack -> "dialog"
  | Finished _ | Showing _ -> "user"
  | Listing _ -> "p-code"

let file (m : model) (name : string) = List.assoc_opt name m.disk
let execution_line = Turbo_debug.execution_line