-
Notifications
You must be signed in to change notification settings - Fork 0
/
layout_row.rs
93 lines (82 loc) · 3.27 KB
/
layout_row.rs
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
use druid_shell::kurbo;
use guiver::widget_manager::WidgetManager;
use guiver::Size;
use guiver_piet::{
run, Clipboard, Command, Event, Piet, PietApplication, PietWidgetManager, Region, WidgetType,
};
pub(crate) struct App {
widget_manager: PietWidgetManager<()>,
}
impl App {
pub(crate) fn new() -> Self {
let mut widget_manager = PietWidgetManager::new();
let layout_padding = widget_manager.widget_id_provider().next_widget_id();
let layout_row = widget_manager.widget_id_provider().next_widget_id();
let placeholder1 = widget_manager.widget_id_provider().next_widget_id();
let placeholder2 = widget_manager.widget_id_provider().next_widget_id();
let placeholder3 = widget_manager.widget_id_provider().next_widget_id();
widget_manager
.handle_commands(vec![
// Create the widgets.
// =================================================================================
Command::CreateWidget(layout_padding, WidgetType::LayoutPadding),
Command::CreateWidget(layout_row, WidgetType::LayoutRow),
Command::CreateWidget(
placeholder1,
WidgetType::Placeholder {
maximum_size: Size::new(100.0, 50.0),
},
),
Command::CreateWidget(
placeholder2,
WidgetType::Placeholder {
maximum_size: Size::new(100.0, 50.0),
},
),
Command::CreateWidget(
placeholder3,
WidgetType::Placeholder {
maximum_size: Size::new(100.0, 50.0),
},
),
// Compose the widgets.
// =================================================================================
Command::SetMainWidget(layout_padding),
Command::AddChild {
parent_widget_id: layout_padding,
widget_placement: None,
child_widget_id: layout_row,
},
Command::AddChild {
parent_widget_id: layout_row,
widget_placement: None,
child_widget_id: placeholder1,
},
Command::AddChild {
parent_widget_id: layout_row,
widget_placement: None,
child_widget_id: placeholder2,
},
Command::AddChild {
parent_widget_id: layout_row,
widget_placement: None,
child_widget_id: placeholder3,
},
])
.unwrap();
App { widget_manager }
}
}
impl PietApplication for App {
fn handle_event(&mut self, _system_event_event: &Event) {}
fn paint(&mut self, piet: &mut Piet, region: &Region) {
self.widget_manager.paint(piet, region).unwrap();
}
fn resize(&mut self, size: kurbo::Size) {
self.widget_manager.resize(size);
}
fn set_clipboard(&mut self, _clipboard: Clipboard) {}
}
pub fn main() {
run(Box::new(App::new()), "row", (400.0, 200.0).into());
}