Skip to content

Commit 8f08749

Browse files
committed
Refactor window setup
1 parent baf6181 commit 8f08749

File tree

1 file changed

+62
-49
lines changed

1 file changed

+62
-49
lines changed

src/widgets/window.rs

Lines changed: 62 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,23 @@ impl Window {
164164
let imp = this.imp();
165165
imp.config.replace(config);
166166

167+
this.squeezer_changed();
168+
this.setup_settings();
169+
this.setup_zoom_popover_item();
170+
this.setup_css_providers();
171+
this.setup_actions();
172+
this.setup_signals();
173+
this.open_in_new_tab(bookmarks_url().as_str());
174+
this
175+
}
176+
fn setup_settings(&self) {
177+
let imp = self.imp();
178+
let settings = gio::Settings::new(APP_ID);
179+
settings.bind("zoom", self, "zoom").build();
180+
imp.settings.replace(Some(settings));
181+
}
182+
fn setup_css_providers(&self) {
183+
let imp = self.imp();
167184
gtk::StyleContext::add_provider_for_display(
168185
&gdk::Display::default().unwrap(),
169186
&*imp.style_provider.borrow(),
@@ -176,55 +193,8 @@ impl Window {
176193
&imp.zoom.borrow().provider,
177194
gtk::STYLE_PROVIDER_PRIORITY_APPLICATION,
178195
);
179-
180-
let popover: gtk::PopoverMenu = imp.primary_menu_btn.popover().unwrap().downcast().unwrap();
181-
let zoom_box = gtk::Box::builder()
182-
.spacing(12)
183-
.margin_start(18)
184-
.margin_end(18)
185-
.build();
186-
187-
zoom_box.append(
188-
&gtk::Button::builder()
189-
.icon_name("zoom-out-symbolic")
190-
.action_name("win.zoom-out")
191-
.css_classes(vec!["flat".into(), "circular".into()])
192-
.build(),
193-
);
194-
195-
let value_btn = gtk::Button::with_label("100%");
196-
value_btn.set_hexpand(true);
197-
this.bind_property("zoom", &value_btn, "label")
198-
.transform_to(|_, v| {
199-
let zoom: f64 = v.get().unwrap();
200-
Some(format!("{:3}%", (zoom * 100.0) as usize).to_value())
201-
})
202-
.build();
203-
value_btn.set_action_name(Some("win.reset-zoom"));
204-
value_btn.add_css_class("flat");
205-
value_btn.add_css_class("body");
206-
value_btn.add_css_class("numeric");
207-
208-
zoom_box.append(&value_btn);
209-
zoom_box.append(
210-
&gtk::Button::builder()
211-
.icon_name("zoom-in-symbolic")
212-
.css_classes(vec!["flat".into(), "circular".into()])
213-
.action_name("win.zoom-in")
214-
.build(),
215-
);
216-
popover.add_child(&zoom_box, "zoom");
217-
218-
let settings = gio::Settings::new(APP_ID);
219-
settings.bind("zoom", &this, "zoom").build();
220-
imp.settings.replace(Some(settings));
221-
222-
this.squeezer_changed();
223-
this.setup_actions_signals();
224-
this.open_in_new_tab(bookmarks_url().as_str());
225-
this
226196
}
227-
fn setup_actions_signals(&self) {
197+
fn setup_actions(&self) {
228198
let imp = self.imp();
229199

230200
let action_previous = self_action!(self, "previous", previous);
@@ -271,8 +241,10 @@ impl Window {
271241
clone!(@weak self as this => move |_,v| this.set_clipboard(v.unwrap().get::<String>().unwrap().as_str())),
272242
);
273243
self.add_action(&act_set_clipboard);
244+
}
245+
fn setup_signals(&self) {
246+
let imp = self.imp();
274247

275-
// Signals
276248
self.add_controller(&imp.scroll_ctrl);
277249
imp.scroll_ctrl
278250
.set_propagation_phase(gtk::PropagationPhase::Capture);
@@ -329,6 +301,47 @@ impl Window {
329301
}),
330302
);
331303
}
304+
fn setup_zoom_popover_item(&self) {
305+
let imp = self.imp();
306+
307+
let popover: gtk::PopoverMenu = imp.primary_menu_btn.popover().unwrap().downcast().unwrap();
308+
let zoom_box = gtk::Box::builder()
309+
.spacing(12)
310+
.margin_start(18)
311+
.margin_end(18)
312+
.build();
313+
314+
zoom_box.append(
315+
&gtk::Button::builder()
316+
.icon_name("zoom-out-symbolic")
317+
.action_name("win.zoom-out")
318+
.css_classes(vec!["flat".into(), "circular".into()])
319+
.build(),
320+
);
321+
322+
let value_btn = gtk::Button::with_label("100%");
323+
value_btn.set_hexpand(true);
324+
self.bind_property("zoom", &value_btn, "label")
325+
.transform_to(|_, v| {
326+
let zoom: f64 = v.get().unwrap();
327+
Some(format!("{:3}%", (zoom * 100.0) as usize).to_value())
328+
})
329+
.build();
330+
value_btn.set_action_name(Some("win.reset-zoom"));
331+
value_btn.add_css_class("flat");
332+
value_btn.add_css_class("body");
333+
value_btn.add_css_class("numeric");
334+
335+
zoom_box.append(&value_btn);
336+
zoom_box.append(
337+
&gtk::Button::builder()
338+
.icon_name("zoom-in-symbolic")
339+
.css_classes(vec!["flat".into(), "circular".into()])
340+
.action_name("win.zoom-in")
341+
.build(),
342+
);
343+
popover.add_child(&zoom_box, "zoom");
344+
}
332345
fn add_tab(&self) -> adw::TabPage {
333346
let imp = self.imp();
334347
let tab = Tab::new(imp.config.borrow().clone());

0 commit comments

Comments
 (0)