give name to gobject variables

This commit is contained in:
yggverse 2024-12-14 06:50:30 +02:00
parent 702269f1f1
commit a1617b2b1b
35 changed files with 213 additions and 209 deletions

View file

@ -9,7 +9,7 @@ const DEFAULT_TAB_ICON: &str = "view-pin-symbolic";
/// Wrapper for [TabView](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.TabView.html) GObject
pub struct Widget {
pub gobject: TabView,
pub tab_view: TabView,
}
impl Widget {
@ -18,17 +18,17 @@ impl Widget {
/// Create new `Self`
pub fn new(menu_model: &impl IsA<MenuModel>) -> Self {
// Init gobject
let gobject = TabView::builder().menu_model(menu_model).build();
let tab_view = TabView::builder().menu_model(menu_model).build();
// Change default icon (if available in the system icon set)
// * visible for pinned tabs only
// * @TODO not default GTK behavior, make this feature optional
if let Ok(default_icon) = Icon::for_string(DEFAULT_TAB_ICON) {
gobject.set_default_icon(&default_icon);
tab_view.set_default_icon(&default_icon);
}
// Done
Self { gobject }
Self { tab_view }
}
// Actions
@ -39,8 +39,8 @@ impl Widget {
/// * use native [TabView](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.TabView.html) API with `GObject` reference getter
pub fn close(&self, position: Option<i32>) {
if let Some(page) = self.page(position) {
self.gobject.set_page_pinned(&page, false);
self.gobject.close_page(&page);
self.tab_view.set_page_pinned(&page, false);
self.tab_view.close_page(&page);
}
}
@ -49,16 +49,16 @@ impl Widget {
/// * deactivate [SimpleAction](https://docs.gtk.org/gio/class.SimpleAction.html) outside if selected page should not be closed
/// * use native [TabView](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.TabView.html) API with `GObject` reference getter
pub fn close_all(&self) {
while let Some(page) = self.gobject.selected_page() {
self.gobject.set_page_pinned(&page, false);
self.gobject.close_page(&page);
while let Some(page) = self.tab_view.selected_page() {
self.tab_view.set_page_pinned(&page, false);
self.tab_view.close_page(&page);
}
}
/// Toggle pin for page at given `position`, `None` to pin selected page (if available)
pub fn pin(&self, position: Option<i32>) {
if let Some(page) = self.page(position) {
self.gobject.set_page_pinned(&page, !page.is_pinned()); // toggle
self.tab_view.set_page_pinned(&page, !page.is_pinned()); // toggle
}
}
@ -68,8 +68,8 @@ impl Widget {
/// * return `None` if requested or selected page not found
pub fn page(&self, position: Option<i32>) -> Option<TabPage> {
match position {
Some(value) => Some(self.gobject.nth_page(value)),
None => self.gobject.selected_page(),
Some(value) => Some(self.tab_view.nth_page(value)),
None => self.tab_view.selected_page(),
}
}
}