49 lines
1.0 KiB
Rust
Raw Normal View History

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 {
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 {
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) {
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)
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> {
let page = self.gobject.selected_page()?;
2024-10-06 17:12:08 +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
} */
None
2024-10-06 17:12:08 +03:00
}
pub fn gobject(&self) -> &TabView {
2024-10-06 16:28:46 +03:00
&self.gobject
}
}