create separated widget mod implementation

This commit is contained in:
yggverse 2024-09-22 18:36:49 +03:00
parent 034bfb44f6
commit 8fa56ebf9a
3 changed files with 32 additions and 13 deletions

View File

@ -1,19 +1,20 @@
mod subject;
mod tray;
use std::sync::Arc;
use gtk::HeaderBar;
mod widget;
pub struct Header {
pub widget: Arc<gtk::HeaderBar>,
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
}
}

View File

@ -0,0 +1,18 @@
pub struct Header {
gtk: gtk::HeaderBar,
}
impl Header {
pub fn new(tray: &gtk::Box, subject: &gtk::Box) -> Header {
let gtk = gtk::HeaderBar::builder().build();
gtk.pack_start(tray);
gtk.set_title_widget(Some(subject));
Self { gtk }
}
pub fn gtk(&self) -> &gtk::HeaderBar {
&self.gtk
}
}

View File

@ -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,
);