Skip to content

Commit 1f93814

Browse files
committed
improv: No xml for keyboard_color_button
1 parent 3106cab commit 1f93814

File tree

2 files changed

+55
-89
lines changed

2 files changed

+55
-89
lines changed

src/keyboard_color_button.rs

Lines changed: 55 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,13 @@ use crate::{
1313
Rgb,
1414
};
1515

16-
#[derive(Default, gtk::CompositeTemplate)]
16+
#[derive(Default)]
1717
pub struct KeyboardColorButtonInner {
18-
#[template_child]
19-
button: TemplateChild<ColorCircle>,
2018
circles: RefCell<Vec<ColorCircle>>,
21-
#[template_child]
22-
grid: TemplateChild<gtk::Grid>,
19+
grid: DerefCell<gtk::Grid>,
2320
current_circle: RefCell<Option<ColorCircle>>,
24-
#[template_child]
25-
add_circle: TemplateChild<ColorCircle>,
26-
#[template_child]
27-
remove_button: TemplateChild<gtk::Button>,
28-
#[template_child]
29-
edit_button: TemplateChild<gtk::Button>,
30-
#[template_child]
31-
popover: TemplateChild<gtk::Popover>,
21+
add_circle: DerefCell<ColorCircle>,
22+
remove_button: DerefCell<gtk::Button>,
3223
board: DerefCell<DaemonBoard>,
3324
rgb: Cell<Rgb>,
3425
}
@@ -45,36 +36,68 @@ impl ObjectSubclass for KeyboardColorButtonInner {
4536

4637
glib::object_subclass!();
4738

48-
fn class_init(klass: &mut Self::Class) {
49-
ColorCircle::static_type();
50-
klass.set_template(include_bytes!("keyboard_color_button.ui"));
51-
Self::bind_template_children(klass);
52-
}
53-
5439
fn new() -> Self {
5540
Self::default()
5641
}
5742
}
5843

5944
impl ObjectImpl for KeyboardColorButtonInner {
6045
fn constructed(&self, obj: &KeyboardColorButton) {
61-
obj.init_template();
6246
self.parent_constructed(obj);
6347

64-
let popover: &gtk::Popover = &*&self.popover;
65-
self.button
66-
.connect_clicked(clone!(@weak popover => move |_| popover.popup()));
48+
let button = ColorCircle::new(30);
49+
50+
let grid = cascade! {
51+
gtk::Grid::new();
52+
..set_column_spacing(6);
53+
..set_row_spacing(6);
54+
..set_halign(gtk::Align::Center);
55+
};
56+
57+
let remove_button = cascade! {
58+
gtk::Button::with_label("Remove");
59+
..connect_clicked(clone!(@weak obj => move |_| obj.remove_clicked()));
60+
};
61+
62+
let edit_button = cascade! {
63+
gtk::Button::with_label("Edit");
64+
..connect_clicked(clone!(@weak obj => move |_| obj.edit_clicked()));
65+
};
6766

68-
self.add_circle.set_alpha(0.);
69-
self.add_circle.set_symbol("+");
70-
self.add_circle
71-
.connect_clicked(clone!(@weak obj => move |_| obj.add_clicked()));
67+
let popover = cascade! {
68+
gtk::Popover::new(Some(obj));
69+
..add(&cascade! {
70+
gtk::Box::new(gtk::Orientation::Vertical, 0);
71+
..add(&grid);
72+
..add(&gtk::Separator::new(gtk::Orientation::Horizontal));
73+
..add(&cascade! {
74+
gtk::Box::new(gtk::Orientation::Horizontal, 0);
75+
..add(&remove_button);
76+
..add(&edit_button);
77+
});
78+
});
79+
..show_all();
80+
..hide();
81+
};
82+
button.connect_clicked(clone!(@weak popover => move |_| popover.popup()));
7283

73-
self.remove_button
74-
.connect_clicked(clone!(@weak obj => move |_| obj.remove_clicked()));
84+
let add_circle = cascade! {
85+
ColorCircle::new(45);
86+
..set_alpha(0.);
87+
..set_symbol("+");
88+
..connect_clicked(clone!(@weak obj => move |_| obj.add_clicked()));
89+
};
7590

76-
self.edit_button
77-
.connect_clicked(clone!(@weak obj => move |_| obj.edit_clicked()));
91+
cascade! {
92+
obj;
93+
..bind_property("rgb", &button, "rgb").flags(glib::BindingFlags::SYNC_CREATE).build();
94+
..add(&button);
95+
..show_all();
96+
}
97+
98+
self.grid.set(grid);
99+
self.add_circle.set(add_circle);
100+
self.remove_button.set(remove_button);
78101
}
79102

80103
fn properties() -> &'static [glib::ParamSpec] {
@@ -176,7 +199,7 @@ impl KeyboardColorButton {
176199
let circles = self.inner().circles.borrow();
177200
for (i, circle) in circles
178201
.iter()
179-
.chain(iter::once(&self.inner().add_circle.get()))
202+
.chain(iter::once(&*self.inner().add_circle))
180203
.enumerate()
181204
{
182205
let x = i as i32 % 3;

src/keyboard_color_button.ui

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)