From 2d68866aa5450ed44e6528f0cd2113f77efad1d0 Mon Sep 17 00:00:00 2001 From: Heliguy Date: Mon, 26 Aug 2024 10:37:05 -0400 Subject: [PATCH] reuse code for sidebar button --- src/gtk/sidebar_button.py | 19 +++++++++++++++++++ src/install_page/select_page.blp | 5 +---- src/install_page/select_page.py | 5 +---- src/main_window/window.py | 1 + src/meson.build | 1 + src/packages_page/packages_page.blp | 5 +---- src/packages_page/packages_page.py | 5 +---- src/remotes_page/remotes_page.blp | 5 +---- src/remotes_page/remotes_page.py | 4 ---- src/snapshot_page/snapshot_page.blp | 5 +---- src/snapshot_page/snapshot_page.py | 6 +----- src/user_data_page/user_data_page.blp | 5 +---- src/user_data_page/user_data_page.py | 6 +----- 13 files changed, 30 insertions(+), 42 deletions(-) create mode 100644 src/gtk/sidebar_button.py diff --git a/src/gtk/sidebar_button.py b/src/gtk/sidebar_button.py new file mode 100644 index 0000000..f808c5a --- /dev/null +++ b/src/gtk/sidebar_button.py @@ -0,0 +1,19 @@ +from gi.repository import Adw, Gtk, Gdk, GLib +from .host_info import HostInfo + +class SidebarButton(Gtk.ToggleButton): + __gtype_name__ = "SidebarButton" + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + # Extra Object Creation + main_split = HostInfo.main_window.main_split + + # Connections + main_split.connect("notify::show-sidebar", lambda *_: self.set_active(main_split.get_show_sidebar())) + self.connect("toggled", lambda *_: main_split.set_show_sidebar(self.get_active())) + + # Apply + self.set_icon_name("dock-left-symbolic") + self.set_tooltip_text(_("Show Sidebar")) \ No newline at end of file diff --git a/src/install_page/select_page.blp b/src/install_page/select_page.blp index 9b6796d..08f0557 100644 --- a/src/install_page/select_page.blp +++ b/src/install_page/select_page.blp @@ -12,10 +12,7 @@ template $SelectPage : Adw.NavigationPage { [top] Adw.HeaderBar { [start] - ToggleButton sidebar_button { - icon-name: "dock-left-symbolic"; - tooltip-text: _("Show Sidebar"); - } + $SidebarButton {} [start] Button test { label: "test"; diff --git a/src/install_page/select_page.py b/src/install_page/select_page.py index d1587ad..6d89f73 100644 --- a/src/install_page/select_page.py +++ b/src/install_page/select_page.py @@ -2,6 +2,7 @@ from gi.repository import Adw, Gtk, GLib, Gio from .host_info import HostInfo from .error_toast import ErrorToast from .results_page import ResultsPage +from .sidebar_button import SidebarButton @Gtk.Template(resource_path="/io/github/flattool/Warehouse/install_page/select_page.ui") class SelectPage(Adw.NavigationPage): @@ -9,7 +10,6 @@ class SelectPage(Adw.NavigationPage): gtc = Gtk.Template.Child nav_view = gtc() - sidebar_button = gtc() results_page = gtc() remotes_group = gtc() add_remote_row = gtc() @@ -40,11 +40,8 @@ class SelectPage(Adw.NavigationPage): super().__init__(**kwargs) # Extra Object Creation - ms = HostInfo.main_window.main_split # Connections - ms.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) - self.sidebar_button.connect("toggled", lambda *_: ms.set_show_sidebar(self.sidebar_button.get_active())) self.add_remote_row.connect("activated", lambda *_: HostInfo.main_window.activate_row(HostInfo.main_window.remotes_row)) self.nav_view.connect("popped", self.results_page.on_back) self.remote_rows = [] diff --git a/src/main_window/window.py b/src/main_window/window.py index a8bcc09..ca7557d 100644 --- a/src/main_window/window.py +++ b/src/main_window/window.py @@ -143,3 +143,4 @@ class WarehouseWindow(Adw.ApplicationWindow): self.start_loading() HostInfo.get_flatpaks(callback=self.end_loading) + # GLib.idle_add(lambda *_: self.main_split.set_show_sidebar(False)) diff --git a/src/meson.build b/src/meson.build index 0cdbc67..063d9bc 100644 --- a/src/meson.build +++ b/src/meson.build @@ -69,6 +69,7 @@ warehouse_sources = [ 'host_info.py', 'packages_page/app_row.py', 'gtk/error_toast.py', + 'gtk/sidebar_button.py', 'main_window/window.py', 'packages_page/packages_page.py', 'packages_page/filters_page.py', diff --git a/src/packages_page/packages_page.blp b/src/packages_page/packages_page.blp index 031ce2f..bcb55cb 100644 --- a/src/packages_page/packages_page.blp +++ b/src/packages_page/packages_page.blp @@ -27,10 +27,7 @@ template $PackagesPage : Adw.BreakpointBin { [top] Adw.HeaderBar { [start] - ToggleButton sidebar_button { - icon-name: "dock-left-symbolic"; - tooltip-text: _("Show Sidebar"); - } + $SidebarButton {} [start] ToggleButton search_button { icon-name: "loupe-large-symbolic"; diff --git a/src/packages_page/packages_page.py b/src/packages_page/packages_page.py index b937502..d2f89bd 100644 --- a/src/packages_page/packages_page.py +++ b/src/packages_page/packages_page.py @@ -4,6 +4,7 @@ from .app_row import AppRow from .error_toast import ErrorToast from .properties_page import PropertiesPage from .filters_page import FiltersPage +from .sidebar_button import SidebarButton import subprocess @Gtk.Template(resource_path="/io/github/flattool/Warehouse/packages_page/packages_page.ui") @@ -20,7 +21,6 @@ class PackagesPage(Adw.BreakpointBin): reset_filters_button = gtc() no_packages = gtc() no_results = gtc() - sidebar_button = gtc() filter_button = gtc() search_bar = gtc() search_entry = gtc() @@ -303,7 +303,6 @@ class PackagesPage(Adw.BreakpointBin): self.is_result = False self.prev_status = None self.selected_rows = [] - ms = main_window.main_split # Apply # self.set_status("loading_packages") @@ -314,8 +313,6 @@ class PackagesPage(Adw.BreakpointBin): self.__class__.instance = self # Connections - ms.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) - self.sidebar_button.connect("toggled", lambda *_: ms.set_show_sidebar(self.sidebar_button.get_active())) self.search_entry.connect("search-changed", self.on_invalidate) self.search_bar.set_key_capture_widget(main_window) diff --git a/src/remotes_page/remotes_page.blp b/src/remotes_page/remotes_page.blp index 240c666..3c3c065 100644 --- a/src/remotes_page/remotes_page.blp +++ b/src/remotes_page/remotes_page.blp @@ -7,10 +7,7 @@ template $RemotesPage : Adw.NavigationPage { [top] Adw.HeaderBar header_bar { [start] - ToggleButton sidebar_button { - icon-name: "dock-left-symbolic"; - tooltip-text: _("Show Sidebar"); - } + $SidebarButton {} [start] ToggleButton search_button { icon-name: "loupe-large-symbolic"; diff --git a/src/remotes_page/remotes_page.py b/src/remotes_page/remotes_page.py index 52aa50f..0f0e8d7 100644 --- a/src/remotes_page/remotes_page.py +++ b/src/remotes_page/remotes_page.py @@ -71,7 +71,6 @@ class RemotesPage(Adw.NavigationPage): __gtype_name__ = 'RemotesPage' gtc = Gtk.Template.Child - sidebar_button = gtc() search_button = gtc() search_bar = gtc() search_entry = gtc() @@ -261,15 +260,12 @@ class RemotesPage(Adw.NavigationPage): # Extra Object Creation self.__class__.instance = self self.main_window = main_window - ms = main_window.main_split self.search_bar.set_key_capture_widget(main_window) self.current_remote_rows = [] self.filter_setting = Gio.Settings.new("io.github.flattool.Warehouse.filter") self.total_disabled = 0 # Connections - ms.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) - self.sidebar_button.connect("toggled", lambda *_: ms.set_show_sidebar(self.sidebar_button.get_active())) self.file_remote_row.connect("activated", lambda *_: self.add_file_handler()) self.custom_remote_row.connect("activated", lambda *_: AddRemoteDialog(main_window, self).present(main_window)) self.search_entry.connect("search-changed", self.on_search) diff --git a/src/snapshot_page/snapshot_page.blp b/src/snapshot_page/snapshot_page.blp index 9d0ca73..6104e04 100644 --- a/src/snapshot_page/snapshot_page.blp +++ b/src/snapshot_page/snapshot_page.blp @@ -35,10 +35,7 @@ template $SnapshotPage : Adw.BreakpointBin { [top] Adw.HeaderBar header_bar { [start] - ToggleButton sidebar_button { - icon-name: "dock-left-symbolic"; - tooltip-text: _("Show Sidebar"); - } + $SidebarButton {} [start] ToggleButton search_button { icon-name: "loupe-large-symbolic"; diff --git a/src/snapshot_page/snapshot_page.py b/src/snapshot_page/snapshot_page.py index b1ddfbe..a447b91 100644 --- a/src/snapshot_page/snapshot_page.py +++ b/src/snapshot_page/snapshot_page.py @@ -3,6 +3,7 @@ from .host_info import HostInfo from .error_toast import ErrorToast from .app_row import AppRow from .snapshots_list_page import SnapshotsListPage +from .sidebar_button import SidebarButton import os, subprocess class LeftoverSnapshotRow(Adw.ActionRow): @@ -29,7 +30,6 @@ class SnapshotPage(Adw.BreakpointBin): __gtype_name__ = "SnapshotPage" gtc = Gtk.Template.Child - sidebar_button = gtc() toast_overlay = gtc() active_box = gtc() active_listbox = gtc() @@ -163,7 +163,6 @@ class SnapshotPage(Adw.BreakpointBin): super().__init__(**kwargs) # Extra Object Creation - ms = main_window.main_split self.__class__.instance = self self.main_window = main_window self.active_snapshot_paks = [] @@ -173,11 +172,8 @@ class SnapshotPage(Adw.BreakpointBin): self.list_page = SnapshotsListPage(self) # Connections - ms.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) - self.sidebar_button.connect("toggled", lambda *_: ms.set_show_sidebar(self.sidebar_button.get_active())) self.active_listbox.connect("row-activated", self.active_select_handler) self.leftover_listbox.connect("row-activated", self.leftover_select_handler) # Apply - self.sidebar_button.set_active(ms.get_show_sidebar()) self.split_view.set_content(self.list_page)## \ No newline at end of file diff --git a/src/user_data_page/user_data_page.blp b/src/user_data_page/user_data_page.blp index 512e52c..871a48a 100644 --- a/src/user_data_page/user_data_page.blp +++ b/src/user_data_page/user_data_page.blp @@ -28,10 +28,7 @@ template $UserDataPage : Adw.BreakpointBin { } ; [start] - ToggleButton sidebar_button { - icon-name: "dock-left-symbolic"; - tooltip-text: _("Show Sidebar"); - } + $SidebarButton {} [start] ToggleButton search_button { icon-name: "system-search-symbolic"; diff --git a/src/user_data_page/user_data_page.py b/src/user_data_page/user_data_page.py index 96e3422..80c94f4 100644 --- a/src/user_data_page/user_data_page.py +++ b/src/user_data_page/user_data_page.py @@ -3,6 +3,7 @@ from .error_toast import ErrorToast from .data_box import DataBox from .data_subpage import DataSubpage from .host_info import HostInfo +from .sidebar_button import SidebarButton import os, subprocess import time @@ -14,7 +15,6 @@ class UserDataPage(Adw.BreakpointBin): bpt = gtc() header_bar = gtc() switcher_bar = gtc() - sidebar_button = gtc() search_button = gtc() select_button = gtc() sort_button = gtc() @@ -200,12 +200,8 @@ class UserDataPage(Adw.BreakpointBin): title=_("Leftover Data"), icon_name="folder-templates-symbolic", ) - self.sidebar_button.set_active(ms.get_show_sidebar()) # Connections - # self.sidebar_button.connect("clicked", lambda *_, ms=main_window.main_split: ms.set_show_sidebar(not ms.get_show_sidebar() if not ms.get_collapsed() else True)) - ms.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) - self.sidebar_button.connect("toggled", lambda *_: ms.set_show_sidebar(self.sidebar_button.get_active())) self.stack.connect("notify::visible-child", self.view_change_handler) self.select_button.connect("toggled", self.select_toggle_handler)