Move tab widgets into a separate file

This commit is contained in:
Dmitrii Kovanikov 2024-03-23 11:09:42 +00:00
parent dfcca199c3
commit 20bf532497
3 changed files with 34 additions and 23 deletions

View File

@ -10,10 +10,10 @@ val str : string -> doc
(** Create a single chunk of string with formatting. *)
val fmt : styles -> string -> doc
(** Put all documents in a list vertically after each other with a line separator. *)
(** Put all documents in a list horizontally, automatically adding required padding. *)
val row : doc list -> doc
(** Put all documents in a list horizontally, automatically adding required padding. *)
(** Put all documents in a list vertically after each other with a line separator. *)
val col : doc list -> doc
(** Render the resulting document. *)

View File

@ -4,32 +4,14 @@ let style_directory = ANSITerminal.[ Bold; magenta ]
let tabs_section cur_tab =
let open Pretty in
let p_tab tab txt =
if cur_tab = tab then fmt style_selected txt else str txt
in
let sep = col [ str " "; str " "; str "" ] in
row
[
col
[
p_tab Model.Code "╭──────╮";
p_tab Model.Code "│ Code │";
p_tab Model.Code "└──────┴";
];
Widget.code_tab ~is_selected:(cur_tab = Model.Code);
sep;
col
[
p_tab Model.Issues "╭────────╮";
p_tab Model.Issues "│ Issues │";
p_tab Model.Issues "┴────────┴";
];
Widget.issues_tab ~is_selected:(cur_tab = Model.Issues);
sep;
col
[
p_tab Model.PullRequests "╭───────────────╮";
p_tab Model.PullRequests "│ Pull Requests │";
p_tab Model.PullRequests "┴───────────────┘";
];
Widget.pull_requests_tab ~is_selected:(cur_tab = Model.PullRequests);
]
let current_path_to_doc root_path parents =

29
lib/tui/widget.ml Normal file
View File

@ -0,0 +1,29 @@
let style_selected = ANSITerminal.[ Bold; green ]
(* let style_directory = ANSITerminal.[ Bold; magenta ] *)
let tab_doc ~is_selected tab_lines =
let open Pretty in
let format = if is_selected then fmt style_selected else str in
tab_lines |> List.map format |> col
let code_tab ~is_selected =
tab_doc ~is_selected
[ "╭──────╮";
"│ Code │";
"└──────┴";
] [@@ocamlformat "disable"]
let issues_tab ~is_selected =
tab_doc ~is_selected
[ "╭────────╮";
"│ Issues │";
"┴────────┴";
] [@@ocamlformat "disable"]
let pull_requests_tab ~is_selected =
tab_doc ~is_selected
[ "╭───────────────╮";
"│ Pull Requests │";
"┴───────────────┘";
] [@@ocamlformat "disable"]