-
Notifications
You must be signed in to change notification settings - Fork 0
/
layout_center.rs
58 lines (48 loc) · 1.86 KB
/
layout_center.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
use druid_shell::kurbo;
use guiver::widget_manager::WidgetManager;
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_center = widget_manager.widget_id_provider().next_widget_id();
let text = widget_manager.widget_id_provider().next_widget_id();
widget_manager
.handle_commands(vec![
// Create the widgets.
// =================================================================================
Command::CreateWidget(layout_center, WidgetType::LayoutCenter),
Command::CreateWidget(
layout_center,
WidgetType::Text("This is a text at the center".to_string()),
),
// Compose the widgets.
// =================================================================================
Command::SetMainWidget(layout_center),
Command::AddChild {
parent_widget_id: layout_center,
widget_placement: None,
child_widget_id: text,
},
])
.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()), "center", (400.0, 200.0).into());
}