From 41324f9483b784d90d2ef8d966d949b137c2b756 Mon Sep 17 00:00:00 2001 From: Heliguy Date: Tue, 11 Mar 2025 13:58:29 -0400 Subject: [PATCH] Improve function flow --- GNOME Circle.md | 9 ----- src/properties_page/properties_page.py | 53 +++++++++++++++++--------- 2 files changed, 34 insertions(+), 28 deletions(-) delete mode 100644 GNOME Circle.md diff --git a/GNOME Circle.md b/GNOME Circle.md deleted file mode 100644 index 886846c..0000000 --- a/GNOME Circle.md +++ /dev/null @@ -1,9 +0,0 @@ -## Changes needed before acceptance into GNOME Circle -### This list may be extended in the future - -- [x] Close selection mode after batch action -- [ ] Change app summary -- [ ] Fix the reload lag -- [x] Do not allow uninstallation of Warehouse -- [x] Add tooltip text to Snapshot Window's row buttons -- [ ] Fix subtitle issue in Leftover Data Window diff --git a/src/properties_page/properties_page.py b/src/properties_page/properties_page.py index 01f8359..cae2f23 100644 --- a/src/properties_page/properties_page.py +++ b/src/properties_page/properties_page.py @@ -5,6 +5,7 @@ from src.change_version_page.change_version_page import ChangeVersionPage from src.packages_page.uninstall_dialog import UninstallDialog from src.gtk.loading_status import LoadingStatus from src.package_install_worker import PackageInstallWorker +from src.const import Config import subprocess, os import gettext @@ -74,31 +75,41 @@ class PropertiesPage(Adw.NavigationPage): self.reinstall_did_error = False self.package = package + package_is_not_this_app = package.info["id"] != Config.APP_ID + + # Show Package Name pkg_name = package.info["name"] if pkg_name != "": - self.inner_nav_page.set_title(_("{} Properties").format(package.info["name"])) - self.name.set_visible(True) + self.inner_nav_page.set_title(_("{} Properties").format(pkg_name)) self.name.set_label(pkg_name) + self.name.set_visible(True) else: - self.name.set_visible(False) self.inner_nav_page.set_title(_("Properties")) + self.name.set_visible(False) + # Show Package Icon if package.icon_path: GLib.idle_add(lambda *_: self.app_icon.set_from_file(package.icon_path)) else: GLib.idle_add(lambda *_: self.app_icon.set_from_icon_name("application-x-executable-symbolic")) + # Toggle UI Items for Package State self.eol_box.set_visible(package.is_eol) self.pin_row.set_visible(package.is_runtime) - self.open_app_button.set_visible(package.is_runtime) self.open_app_button.set_visible(not package.is_runtime) self.data_row.set_visible(not package.is_runtime) - self.uninstall_button.set_sensitive(self.package.info["id"] != "io.github.flattool.Warehouse") + self.uninstall_button.set_sensitive(package_is_not_this_app) + self.open_app_button.set_sensitive(package_is_not_this_app) + self.mask_label.set_visible(package.is_masked) + self.mask_switch.set_active(package.is_masked) + self.pin_switch.set_active(package.is_pinned) + + # Runtime Specific Logic if package.is_runtime: self.runtime_row.set_visible(False) else: has_path = os.path.exists(package.data_path) - self.trash_data_button.set_sensitive(has_path and self.package.info["id"] != "io.github.flattool.Warehouse") + self.trash_data_button.set_sensitive(has_path and package_is_not_this_app) self.open_data_button.set_sensitive(has_path) if not self.package.dependent_runtime is None: @@ -133,33 +144,37 @@ class PropertiesPage(Adw.NavigationPage): self.toast_overlay.add_toast(ErrorToast(_("Could not get properties"), str(e)).toast) return + failure = None for key, row in self.info_rows.items(): - row.set_visible(False) + should_be_visible = False try: - subtitle = cli_info[key] - row.set_subtitle(subtitle) - row.set_visible(True) + row.set_subtitle(cli_info[key]) + should_be_visible = True except KeyError: if key == "version": - row.set_visible(True) row.set_subtitle(_("No version information found")) - continue + should_be_visible = True except Exception as e: - self.toast_overlay.add_toast(ErrorToast(_("Could not get properties"), str(e)).toast) - continue + failure = str(e) + + row.set_visible(should_be_visible) + + if not failure is None: + self.toast_overlay.add_toast(ErrorToast(_("Could not get properties"), str(e)).toast) - self.mask_label.set_visible(package.is_masked) - self.mask_switch.set_active(package.is_masked) - self.pin_switch.set_active(package.is_pinned) GLib.idle_add(lambda *_: self.stack.set_visible_child(self.nav_view)) + self.more_list.remove_all() if self.open_app_button.get_visible(): - self.more_list.append(self.view_snapshots) + if self.package.info["id"] != Config.APP_ID: + self.more_list.append(self.view_snapshots) self.more_list.append(self.copy_launch_command) self.more_list.append(self.show_details) - self.more_list.append(self.reinstall) + + if self.package.info["id"] != Config.APP_ID: + self.more_list.append(self.reinstall) def open_data_handler(self, *args): if error := self.package.open_data():