Skip to content
This repository was archived by the owner on May 12, 2022. It is now read-only.

Commit ff5de29

Browse files
committed
[refactor] Move ToolbarView to a separate .tcwdl file
1 parent 02028c8 commit ff5de29

File tree

2 files changed

+103
-89
lines changed

2 files changed

+103
-89
lines changed

stella2/meta/lib.tcwdl

Lines changed: 3 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ use tcw3::{
1010
pal,
1111
};
1212

13-
use crate::{model, stylesheet::elem_id};
13+
use crate::{model, stylesheet::elem_id, view::toolbar::ToolbarView};
14+
15+
import!("view/toolbar.tcwdl");
1416

1517
#[widget]
1618
comp crate::view::MainView {
@@ -135,94 +137,6 @@ comp crate::view::MainView {
135137
on (init) get!(&this).init();
136138
}
137139

138-
use crate::view::toolbar::ToolbarView;
139-
#[widget]
140-
pub(crate) comp ToolbarView {
141-
const wm: pal::Wm { pub set; }
142-
const style_manager: &Manager { pub set; }
143-
144-
pub prop wnd_state: Elem<model::WndState>;
145-
pub event dispatch(action: model::WndAction);
146-
147-
on (init) get!(&this).init();
148-
149-
pub const wrapper = StyledBox::new! {
150-
style_manager,
151-
class_set = elem_id::TOOLBAR,
152-
subview_generic = HView::new! {
153-
layout = TableLayout::stack_horz(
154-
[
155-
(get!(&toggle_sidebar_button.view), AlignFlags::JUSTIFY),
156-
(get!(&spacer1.view), AlignFlags::HORZ_JUSTIFY),
157-
(get!(&go_back_button.view), AlignFlags::JUSTIFY),
158-
(get!(&spacer2.view), AlignFlags::HORZ_JUSTIFY),
159-
(get!(&go_forward_button.view), AlignFlags::JUSTIFY),
160-
(get!(&spacer3.view), AlignFlags::CENTER),
161-
(get!(&search_bar.view), AlignFlags::RIGHT),
162-
]
163-
.iter()
164-
.map(|&(view, align)| (view.clone(), align))
165-
),
166-
},
167-
};
168-
169-
pub const view: HView = get!(wrapper.view);
170-
171-
const spacer1 = FixedSpacer::new! { wm, size = [5.0, 0.0].into() };
172-
const spacer2 = FixedSpacer::new! { wm, size = [5.0, 0.0].into() };
173-
const spacer3 = FixedSpacer::new! { wm };
174-
175-
const toggle_sidebar_button = Button::new! {
176-
style_manager,
177-
178-
class_set = theming::ClassSet::BUTTON
179-
| [elem_id::SIDEBAR_SHOW, elem_id::SIDEBAR_HIDE]
180-
[get!(&wnd_state).sidebar_visible as usize],
181-
182-
// TODO: `on_activate` is set by `init` for now
183-
};
184-
185-
on (toggle_sidebar_button.activated) get!(&this).toggle_sidebar();
186-
187-
const go_back_button = Button::new! {
188-
style_manager,
189-
class_set = theming::ClassSet::BUTTON | elem_id::GO_BACK,
190-
};
191-
192-
const go_forward_button = Button::new! {
193-
style_manager,
194-
class_set = theming::ClassSet::BUTTON | elem_id::GO_FORWARD,
195-
};
196-
197-
on (go_back_button.activated) dbg!();
198-
on (go_forward_button.activated) dbg!();
199-
200-
// TODO
201-
const search_bar = StyledBox::new! {
202-
style_manager,
203-
view_flags = {
204-
// Make `set_cursor_shape` work
205-
use tcw3::uicore::ViewFlags;
206-
ViewFlags::default() | ViewFlags::ACCEPT_MOUSE_OVER
207-
},
208-
class_set = elem_id::SEARCH_FIELD,
209-
subview_generic = get!(search_bar_placeholder.view),
210-
};
211-
on (init) {
212-
// TODO: find a prettier way
213-
get!(&search_bar).set_subelement(
214-
tcw3::ui::theming::Role::Generic,
215-
Some(get!(search_bar_placeholder.style_elem))
216-
);
217-
get!(&search_bar.view).set_cursor_shape(Some(tcw3::uicore::CursorShape::Text));
218-
}
219-
220-
const search_bar_placeholder = Label::new! {
221-
style_manager,
222-
text = "Search",
223-
};
224-
}
225-
226140
use crate::view::PlaceholderView;
227141
#[widget]
228142
pub(crate) comp PlaceholderView {

stella2/meta/view/toolbar.tcwdl

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
use harmony::Elem;
2+
use tcw3::{
3+
ui::{
4+
AlignFlags,
5+
views::{Label, Button, FixedSpacer},
6+
layouts::TableLayout,
7+
theming::{self, Manager, StyledBox},
8+
},
9+
uicore::HView,
10+
pal,
11+
};
12+
13+
use crate::{model, stylesheet::elem_id};
14+
15+
#[widget]
16+
pub(crate) comp crate::view::toolbar::ToolbarView {
17+
const wm: pal::Wm { pub set; }
18+
const style_manager: &Manager { pub set; }
19+
20+
pub prop wnd_state: Elem<model::WndState>;
21+
pub event dispatch(action: model::WndAction);
22+
23+
on (init) get!(&this).init();
24+
25+
pub const wrapper = StyledBox::new! {
26+
style_manager,
27+
class_set = elem_id::TOOLBAR,
28+
subview_generic = HView::new! {
29+
layout = TableLayout::stack_horz(
30+
[
31+
(get!(&toggle_sidebar_button.view), AlignFlags::JUSTIFY),
32+
(get!(&spacer1.view), AlignFlags::HORZ_JUSTIFY),
33+
(get!(&go_back_button.view), AlignFlags::JUSTIFY),
34+
(get!(&spacer2.view), AlignFlags::HORZ_JUSTIFY),
35+
(get!(&go_forward_button.view), AlignFlags::JUSTIFY),
36+
(get!(&spacer3.view), AlignFlags::CENTER),
37+
(get!(&search_bar.view), AlignFlags::RIGHT),
38+
]
39+
.iter()
40+
.map(|&(view, align)| (view.clone(), align))
41+
),
42+
},
43+
};
44+
45+
pub const view: HView = get!(wrapper.view);
46+
47+
const spacer1 = FixedSpacer::new! { wm, size = [5.0, 0.0].into() };
48+
const spacer2 = FixedSpacer::new! { wm, size = [5.0, 0.0].into() };
49+
const spacer3 = FixedSpacer::new! { wm };
50+
51+
const toggle_sidebar_button = Button::new! {
52+
style_manager,
53+
54+
class_set = theming::ClassSet::BUTTON
55+
| [elem_id::SIDEBAR_SHOW, elem_id::SIDEBAR_HIDE]
56+
[get!(&wnd_state).sidebar_visible as usize],
57+
58+
// TODO: `on_activate` is set by `init` for now
59+
};
60+
61+
on (toggle_sidebar_button.activated) get!(&this).toggle_sidebar();
62+
63+
const go_back_button = Button::new! {
64+
style_manager,
65+
class_set = theming::ClassSet::BUTTON | elem_id::GO_BACK,
66+
};
67+
68+
const go_forward_button = Button::new! {
69+
style_manager,
70+
class_set = theming::ClassSet::BUTTON | elem_id::GO_FORWARD,
71+
};
72+
73+
on (go_back_button.activated) dbg!();
74+
on (go_forward_button.activated) dbg!();
75+
76+
// TODO
77+
const search_bar = StyledBox::new! {
78+
style_manager,
79+
view_flags = {
80+
// Make `set_cursor_shape` work
81+
use tcw3::uicore::ViewFlags;
82+
ViewFlags::default() | ViewFlags::ACCEPT_MOUSE_OVER
83+
},
84+
class_set = elem_id::SEARCH_FIELD,
85+
subview_generic = get!(search_bar_placeholder.view),
86+
};
87+
on (init) {
88+
// TODO: find a prettier way
89+
get!(&search_bar).set_subelement(
90+
tcw3::ui::theming::Role::Generic,
91+
Some(get!(search_bar_placeholder.style_elem))
92+
);
93+
get!(&search_bar.view).set_cursor_shape(Some(tcw3::uicore::CursorShape::Text));
94+
}
95+
96+
const search_bar_placeholder = Label::new! {
97+
style_manager,
98+
text = "Search",
99+
};
100+
}

0 commit comments

Comments
 (0)