blob: ef6bf7133ebcc0d40ede0ecf898cae5b5d1f7317 (
plain)
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
|
use libui::widget;
use io;
use unix::tty;
use fmt;
use os;
export type layout = struct {
widgets: []*widget::widget,
};
// Create and return a new layout from a list of widgets. [[finishall]] must be
// called to properly free the widget's nad layout's resources.
export fn newlayout(widgets: *widget::widget...) layout = {
return layout {
widgets = widgets,
};
};
// Display all the widgets contained in the given layout.
export fn print(layout: layout) (void | widget::error) = {
for (let i = 0z; i < len(layout.widgets); i += 1) {
match (layout.widgets[i].print) {
case null =>
return;
case let f: *widget::print =>
f(layout.widgets[i])?;
};
};
};
// Finish and free the widgets in the given layout.
export fn finishall(layout: *layout) void = {
for (let i = 0z; i < len(layout.widgets); i += 1) {
match (layout.widgets[i].finish) {
case null =>
return;
case let f: *widget::finish =>
f(layout.widgets[i]);
};
};
free(layout.widgets);
};
|