From fcff38543be6a1b321641f26aa349cf0f02d66bb Mon Sep 17 00:00:00 2001 From: Julian Hurst Date: Wed, 12 Mar 2025 04:14:25 +0100 Subject: Initial commit --- tui/layout/layout.ha | 14 ++++++++++++++ tui/layout/vlayout.ha | 26 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 tui/layout/layout.ha create mode 100644 tui/layout/vlayout.ha (limited to 'tui/layout') diff --git a/tui/layout/layout.ha b/tui/layout/layout.ha new file mode 100644 index 0000000..d425891 --- /dev/null +++ b/tui/layout/layout.ha @@ -0,0 +1,14 @@ +use tui::widget; + +export type printfn = fn(l: *layout) void; +export type finishfn = fn(l: *layout) void; + +export type layout = struct { + widgets: []*widget::widget, + print: *printfn, + finish: *finishfn, +}; + +fn finish(l: *layout) void = { + free(l.widgets); +}; diff --git a/tui/layout/vlayout.ha b/tui/layout/vlayout.ha new file mode 100644 index 0000000..0381a9f --- /dev/null +++ b/tui/layout/vlayout.ha @@ -0,0 +1,26 @@ +use tui::widget; + +export type vlayout = struct { + layout: layout, +}; + +export fn newvlayout(widgets: *widget::widget...) vlayout = { + return vlayout { + layout = layout { + widgets = widgets, + print = &printvlayout, + finish = &finishvlayout, + }, + }; +}; + +fn printvlayout(l: *layout) void = { + for (let widget .. l.widgets) { + widget.print(widget); + }; +}; + +fn finishvlayout(l: *layout) void = { + let vl = l: *vlayout; + finish(&vl.layout); +}; -- cgit v1.2.3