make separated widget mod

This commit is contained in:
yggverse 2024-10-06 05:52:16 +03:00
parent c97222d68c
commit 2adde0008d
2 changed files with 31 additions and 8 deletions

View file

@ -1,16 +1,19 @@
mod subject; mod subject;
mod tray; mod tray;
mod widget;
use subject::Subject; use subject::Subject;
use tray::Tray; use tray::Tray;
use widget::Widget;
use gtk::{gio::SimpleAction, glib::GString, HeaderBar}; use gtk::{gio::SimpleAction, glib::GString, HeaderBar};
use std::sync::Arc; use std::sync::Arc;
pub struct Header { pub struct Header {
gobject: HeaderBar, subject: Arc<Subject>,
subject: Subject, // tray: Arc<Subject>,
widget: Arc<Widget>,
} }
impl Header { impl Header {
@ -43,15 +46,13 @@ impl Header {
action_tab_pin, action_tab_pin,
); );
let subject = Subject::new(); let subject = Arc::new(Subject::new());
// Init widget // Init widget
let gobject = HeaderBar::builder().build(); let widget = Arc::new(Widget::new(tray.gobject(), Some(subject.gobject())));
gobject.pack_start(tray.gobject());
gobject.set_title_widget(Some(subject.gobject()));
// Return new struct // Return new struct
Self { gobject, subject } Self { subject, widget }
} }
// Actions // Actions
@ -61,6 +62,6 @@ impl Header {
// Getters // Getters
pub fn gobject(&self) -> &HeaderBar { pub fn gobject(&self) -> &HeaderBar {
&self.gobject &self.widget.gobject()
} }
} }

View file

@ -0,0 +1,22 @@
use gtk::{Box, HeaderBar};
pub struct Widget {
gobject: HeaderBar,
}
impl Widget {
// Construct
pub fn new(tray: &Box, title_widget: Option<&Box>) -> Self {
let gobject = HeaderBar::builder().build();
gobject.pack_start(tray);
gobject.set_title_widget(title_widget);
Self { gobject }
}
// Getters
pub fn gobject(&self) -> &HeaderBar {
&self.gobject
}
}