From 8fa56ebf9a08b129146df6de9f6fab72e363a782 Mon Sep 17 00:00:00 2001 From: yggverse Date: Sun, 22 Sep 2024 18:36:49 +0300 Subject: [PATCH] create separated widget mod implementation --- src/browser/header/mod.rs | 23 ++++++++++++----------- src/browser/header/widget.rs | 18 ++++++++++++++++++ src/browser/mod.rs | 4 ++-- 3 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 src/browser/header/widget.rs diff --git a/src/browser/header/mod.rs b/src/browser/header/mod.rs index 2ea50a0d..b3a51d67 100644 --- a/src/browser/header/mod.rs +++ b/src/browser/header/mod.rs @@ -1,19 +1,20 @@ mod subject; mod tray; - -use std::sync::Arc; - -use gtk::HeaderBar; +mod widget; pub struct Header { - pub widget: Arc, + widget: widget::Header, } -pub fn new() -> Header { - let widget = Arc::new(HeaderBar::builder().build()); +impl Header { + pub fn new() -> Header { + Self { + widget: widget::Header::new(&tray::new(), &subject::new()), + } + } - widget.pack_start(&tray::new()); - widget.set_title_widget(Some(&subject::new())); - - Header { widget } + // Getters + pub fn widget(&self) -> &widget::Header { + &self.widget + } } diff --git a/src/browser/header/widget.rs b/src/browser/header/widget.rs new file mode 100644 index 00000000..d785d348 --- /dev/null +++ b/src/browser/header/widget.rs @@ -0,0 +1,18 @@ +pub struct Header { + gtk: gtk::HeaderBar, +} + +impl Header { + pub fn new(tray: >k::Box, subject: >k::Box) -> Header { + let gtk = gtk::HeaderBar::builder().build(); + + gtk.pack_start(tray); + gtk.set_title_widget(Some(subject)); + + Self { gtk } + } + + pub fn gtk(&self) -> >k::HeaderBar { + &self.gtk + } +} diff --git a/src/browser/mod.rs b/src/browser/mod.rs index 3f22f85c..46648836 100644 --- a/src/browser/mod.rs +++ b/src/browser/mod.rs @@ -22,8 +22,8 @@ impl Browser { // Init widget let widget = widget::Browser::new( app, - header::new().widget.as_ref(), // @TODO - main::new().widget.as_ref(), // @TODO + header::Header::new().widget().gtk(), + main::new().widget.as_ref(), // @TODO default_width, default_height, );