From e04d14102da7cd1a67bb13e7827b2e40bffc9acc Mon Sep 17 00:00:00 2001 From: heliguy Date: Wed, 10 Jul 2024 15:56:48 -0400 Subject: [PATCH] mask and pin switches toggle status icons on the rows --- src/host_info.py | 1 + src/packages_page/packages_page.blp | 21 ++++++++++++++++++++- src/packages_page/packages_page.py | 7 ++++--- src/properties_page/properties_page.py | 7 +++++-- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/host_info.py b/src/host_info.py index 7c61c40..2e93d08 100644 --- a/src/host_info.py +++ b/src/host_info.py @@ -155,6 +155,7 @@ class Flatpak: self.dependant_runtime = None self.failed_app_run = None self.failed_mask = None + self.app_row = None try: self.is_masked = self.info["id"] in HostInfo.masks[self.info["installation"]] diff --git a/src/packages_page/packages_page.blp b/src/packages_page/packages_page.blp index 448927c..fb624e3 100644 --- a/src/packages_page/packages_page.blp +++ b/src/packages_page/packages_page.blp @@ -88,13 +88,14 @@ template $PackagesPage : Adw.BreakpointBin { can-shrink: true; } } - Button { + MenuButton copy_button { styles ["raised"] Adw.ButtonContent { icon-name: "edit-copy-symbolic"; label: _("Copy"); can-shrink: true; } + popover: copy_pop; } Button { styles ["raised"] @@ -120,4 +121,22 @@ template $PackagesPage : Adw.BreakpointBin { } } } +} + +Popover copy_pop { + styles ["menu"] + ListBox copy_menu { + Label copy_names { + label: _("Copy Names"); + } + Label copy_ids { + label: _("Copy IDs"); + } + Label copy_refs { + label: _("Copy Refs"); + } + Label copy_data { + label: _("Copy Data Paths"); + } + } } \ No newline at end of file diff --git a/src/packages_page/packages_page.py b/src/packages_page/packages_page.py index 29e7d84..1d89fc3 100644 --- a/src/packages_page/packages_page.py +++ b/src/packages_page/packages_page.py @@ -35,6 +35,7 @@ class PackagesPage(Adw.BreakpointBin): self.packages_list_box.remove_all() for package in HostInfo.flatpaks: row = AppRow(package) + package.app_row = row row.masked_status_icon.set_visible(package.is_masked) row.pinned_status_icon.set_visible(package.is_pinned) row.eol_package_package_status_icon.set_visible(package.is_eol) @@ -78,7 +79,7 @@ class PackagesPage(Adw.BreakpointBin): return self.status_view.set_content(status_box) - def refresh_button_handler(self, *args): + def refresh_handler(self, *args): self.set_status(self.loading_status) HostInfo.get_flatpaks(callback=self.generate_list) @@ -101,7 +102,7 @@ class PackagesPage(Adw.BreakpointBin): # Extra Object Creation self.main_window = main_window - self.properties_page = PropertiesPage(main_window) + self.properties_page = PropertiesPage(main_window, self) self.filters_page = FiltersPage(main_window, self) self.loading_status = StatusBox(_("Fetching Packages"), _("This should only take a moment")) @@ -121,7 +122,7 @@ class PackagesPage(Adw.BreakpointBin): self.search_entry.connect("search-changed", lambda *_: self.packages_list_box.invalidate_filter()) self.search_bar.set_key_capture_widget(main_window) self.packages_list_box.connect("row-activated", self.row_select_handler) - self.refresh_button.connect("clicked", self.refresh_button_handler) + self.refresh_button.connect("clicked", self.refresh_handler) self.select_button.connect("clicked", self.select_button_handler) self.filter_button.connect("toggled", self.filter_button_handler) self.packages_split.connect("notify::show-content", self.filter_page_handler) diff --git a/src/properties_page/properties_page.py b/src/properties_page/properties_page.py index 9da6943..1816f32 100644 --- a/src/properties_page/properties_page.py +++ b/src/properties_page/properties_page.py @@ -179,6 +179,7 @@ class PropertiesPage(Adw.NavigationPage): response = _("Disabled Updates") if state else _("Enabled Updates") self.toast_overlay.add_toast(Adw.Toast(title=response)) GLib.idle_add(lambda *_: self.mask_switch.set_active(state)) + self.package.app_row.masked_status_icon.set_visible(state) self.package.set_mask(state, callback) @@ -194,11 +195,12 @@ class PropertiesPage(Adw.NavigationPage): response = _("Disabled Autoremoval") if state else _("Enabled Autoremoval") self.toast_overlay.add_toast(Adw.Toast(title=response)) GLib.idle_add(lambda *_: self.pin_switch.set_active(state)) + self.package.app_row.pinned_status_icon.set_visible(state) self.package.set_pin(state, callback) def runtime_row_handler(self, *args): - new_page = self.__class__(self.main_window) + new_page = self.__class__(self.main_window, self.packages_page) new_page.set_properties(self.package.dependant_runtime) self.nav_view.push(new_page) @@ -220,7 +222,7 @@ class PropertiesPage(Adw.NavigationPage): page = ChangeVersionPage(self.main_window, self.package) self.nav_view.push(page) - def __init__(self, main_window, **kwargs): + def __init__(self, main_window, packages_page, **kwargs): super().__init__(**kwargs) # Extra Object Creation @@ -246,6 +248,7 @@ class PropertiesPage(Adw.NavigationPage): "date": self.date_row, } + self.packages_page = packages_page self.__class__.main_window = main_window # Connections