From 2e3d246285eef0b4dc22113980f192c85d8b09d4 Mon Sep 17 00:00:00 2001 From: heliguy4599 Date: Fri, 11 Oct 2024 21:34:26 -0400 Subject: [PATCH] Finally add change versions feature --- .../change_version_page.py | 24 +++++++++++++------ src/packages_page/packages_page.blp | 7 ++++++ src/packages_page/packages_page.py | 6 +++++ src/properties_page/properties_page.py | 2 +- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/change_version_page/change_version_page.py b/src/change_version_page/change_version_page.py index 18aa8f4..7ff7f06 100644 --- a/src/change_version_page/change_version_page.py +++ b/src/change_version_page/change_version_page.py @@ -87,19 +87,29 @@ class ChangeVersionPage(Adw.NavigationPage): else: self.scrolled_window.set_child(self.versions_clamp) + def callback(self, did_error): + HostInfo.main_window.refresh_handler() + if not did_error: + HostInfo.main_window.toast_overlay.add_toast(Adw.Toast(title=_("Changed {}'s Version").format(self.package.info['name']))) + + def error_callback(self, user_facing_label, error_message): + HostInfo.main_window.toast_overlay.add_toast(ErrorToast(user_facing_label, error_message).toast) + def on_apply(self, *args): - ChangeVersionWorker.change_version( + if ChangeVersionWorker.change_version( self.mask_row.get_active(), self.package, self.selected_commit, - None, - lambda did_error: print("done!", did_error), - print, - ) - - def __init__(self, main_window, package, **kwargs): + self.packages_page.changing_version, + self.callback, + self.error_callback, + ): + self.packages_page.set_status(self.packages_page.changing_version) + + def __init__(self, packages_page, package, **kwargs): super().__init__(**kwargs) # Extra Object Creation + self.packages_page = packages_page self.package = package # Apply diff --git a/src/packages_page/packages_page.blp b/src/packages_page/packages_page.blp index 5b4c3f9..0d2ced2 100644 --- a/src/packages_page/packages_page.blp +++ b/src/packages_page/packages_page.blp @@ -40,6 +40,13 @@ template $PackagesPage : Adw.BreakpointBin { $SidebarButton {} } } + Adw.ToolbarView changing_version_view { + [top] + Adw.HeaderBar { + [start] + $SidebarButton {} + } + } Adw.NavigationSplitView packages_split { sidebar-width-fraction: 0.5; max-sidebar-width: 999999999; diff --git a/src/packages_page/packages_page.py b/src/packages_page/packages_page.py index ca13a7f..810f48a 100644 --- a/src/packages_page/packages_page.py +++ b/src/packages_page/packages_page.py @@ -8,6 +8,7 @@ from .sidebar_button import SidebarButton from .uninstall_dialog import UninstallDialog from .loading_status import LoadingStatus from .package_install_worker import PackageInstallWorker +from .change_version_worker import ChangeVersionWorker import subprocess, os @Gtk.Template(resource_path="/io/github/flattool/Warehouse/packages_page/packages_page.ui") @@ -22,6 +23,7 @@ class PackagesPage(Adw.BreakpointBin): loading_view = gtc() uninstalling_view = gtc() reinstalling_view = gtc() + changing_version_view = gtc() no_filter_results = gtc() reset_filters_button = gtc() no_packages = gtc() @@ -84,6 +86,8 @@ class PackagesPage(Adw.BreakpointBin): self.stack.set_visible_child(self.uninstalling_view) elif to_set is self.reinstalling: self.stack.set_visible_child(self.reinstalling_view) + elif to_set is self.changing_version: + self.stack.set_visible_child(self.changing_version_view) else: self.stack.set_visible_child(self.packages_split) self.status_stack.set_visible_child(to_set) @@ -321,6 +325,8 @@ class PackagesPage(Adw.BreakpointBin): self.uninstalling_view.set_content(self.uninstalling) self.reinstalling = LoadingStatus(_("Reinstalling Package"), _("This could take a while"), True, PackageInstallWorker.cancel) self.reinstalling_view.set_content(self.reinstalling) + self.changing_version = LoadingStatus(_("Changing Version"), _("This could take a while"), True, ChangeVersionWorker.cancel) + self.changing_version_view.set_content(self.changing_version) self.properties_page = PropertiesPage(main_window, self) self.filters_page = FiltersPage(main_window, self) self.filter_settings = Gio.Settings.new("io.github.flattool.Warehouse.filter") diff --git a/src/properties_page/properties_page.py b/src/properties_page/properties_page.py index 5535e9a..607f822 100644 --- a/src/properties_page/properties_page.py +++ b/src/properties_page/properties_page.py @@ -263,7 +263,7 @@ class PropertiesPage(Adw.NavigationPage): self.toast_overlay.add_toast(Adw.Toast(title=_("Copied {}").format(row.get_title()))) def change_version_handler(self, row): - page = ChangeVersionPage(self.main_window, self.package) + page = ChangeVersionPage(self.packages_page, self.package) self.nav_view.push(page) def reinstall_callback(self):