2024-10-11 04:37:06 +03:00
|
|
|
use adw::TabView;
|
|
|
|
use gtk::glib::GString;
|
2024-10-06 16:28:46 +03:00
|
|
|
|
|
|
|
pub struct Widget {
|
2024-10-11 01:38:12 +03:00
|
|
|
gobject: TabView,
|
2024-10-06 16:28:46 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
impl Widget {
|
|
|
|
// Construct
|
|
|
|
pub fn new() -> Self {
|
2024-10-06 20:47:08 +03:00
|
|
|
Self {
|
2024-10-11 01:38:12 +03:00
|
|
|
gobject: TabView::builder().build(),
|
2024-10-06 20:47:08 +03:00
|
|
|
}
|
2024-10-06 16:28:46 +03:00
|
|
|
}
|
|
|
|
|
2024-10-06 17:12:08 +03:00
|
|
|
// Actions
|
|
|
|
pub fn close(&self) {
|
2024-10-11 01:38:12 +03:00
|
|
|
if let Some(selected_page) = self.gobject.selected_page() {
|
|
|
|
self.gobject.close_page(&selected_page);
|
|
|
|
}
|
2024-10-06 17:12:08 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn close_all(&self) {
|
|
|
|
// @TODO skip pinned or make confirmation alert (GTK>=4.10)
|
2024-10-11 01:38:12 +03:00
|
|
|
if let Some(selected_page) = self.gobject.selected_page() {
|
|
|
|
self.gobject.close_other_pages(&selected_page);
|
|
|
|
self.close();
|
2024-10-06 17:12:08 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-10-06 16:28:46 +03:00
|
|
|
// Getters
|
2024-10-06 17:12:08 +03:00
|
|
|
pub fn current_name(&self) -> Option<GString> {
|
2024-10-11 01:38:12 +03:00
|
|
|
let page = self.gobject.selected_page()?;
|
2024-10-06 17:12:08 +03:00
|
|
|
|
2024-10-11 01:38:12 +03:00
|
|
|
/* @TODO
|
|
|
|
let widget_name = page.widget_name();
|
2024-10-06 17:12:08 +03:00
|
|
|
if !widget_name.is_empty() {
|
|
|
|
Some(widget_name)
|
|
|
|
} else {
|
|
|
|
None
|
2024-10-11 01:38:12 +03:00
|
|
|
} */
|
|
|
|
None
|
2024-10-06 17:12:08 +03:00
|
|
|
}
|
|
|
|
|
2024-10-11 01:38:12 +03:00
|
|
|
pub fn gobject(&self) -> &TabView {
|
2024-10-06 16:28:46 +03:00
|
|
|
&self.gobject
|
|
|
|
}
|
|
|
|
}
|