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