From 1be2a7e7a72a154cd14965e7a23ce8e6f1571d33 Mon Sep 17 00:00:00 2001 From: Heliguy Date: Fri, 27 Sep 2024 22:24:36 -0400 Subject: [PATCH] Spruce up the UI for applying snapshots, and ask for confirmation --- src/snapshot_page/new_snapshot_dialog.py | 2 ++ src/snapshot_page/snapshot_box.py | 25 ++++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/snapshot_page/new_snapshot_dialog.py b/src/snapshot_page/new_snapshot_dialog.py index d84c64f..96ca13f 100644 --- a/src/snapshot_page/new_snapshot_dialog.py +++ b/src/snapshot_page/new_snapshot_dialog.py @@ -98,6 +98,7 @@ class NewSnapshotDialog(Adw.Dialog): def on_create(self, button): self.loading_status.title_label.set_label(_("Creating Snapshot")) + self.loading_status.progress_bar.set_fraction(0.0) self.snapshot_page.status_stack.set_visible_child(self.snapshot_page.snapshotting_view) self.workers.clear() for row in self.selected_rows: @@ -114,6 +115,7 @@ class NewSnapshotDialog(Adw.Dialog): self.workers.append(worker) worker.compress() + self.loading_status.progress_label.set_visible(len(self.workers) > 1) GLib.timeout_add(200, self.get_total_fraction) self.close() diff --git a/src/snapshot_page/snapshot_box.py b/src/snapshot_page/snapshot_box.py index a56a6bd..ac5bef8 100644 --- a/src/snapshot_page/snapshot_box.py +++ b/src/snapshot_page/snapshot_box.py @@ -113,18 +113,35 @@ class SnapshotBox(Gtk.Box): def get_fraction(self): loading_status = self.snapshot_page.snapshotting_status - loading_status.title_label.set_label(_("Applying Snapshot")) loading_status.progress_bar.set_fraction(self.worker.fraction) if self.worker.stop: self.snapshot_page.status_stack.set_visible_child(self.snapshot_page.split_view) + self.parent_page.set_snapshots(self.parent_page.package_or_folder, True) return False # Stop the timeout else: return True # Continue the timeout def on_apply(self, button): - self.snapshot_page.status_stack.set_visible_child(self.snapshot_page.snapshotting_view) - self.worker.extract() - GLib.timeout_add(200, self.get_fraction) + def on_response(dialog, response): + if response != "continue": + return + + self.snapshot_page.snapshotting_status.title_label.set_label(_("Applying Snapshot")) + self.snapshot_page.snapshotting_status.progress_label.set_visible(False) + self.snapshot_page.snapshotting_status.progress_bar.set_fraction(0.0) + self.snapshot_page.status_stack.set_visible_child(self.snapshot_page.snapshotting_view) + self.worker.extract() + GLib.timeout_add(200, self.get_fraction) + + has_data = os.path.exists(self.worker.new_path) + dialog = Adw.AlertDialog( + heading=_("Apply Snapshot?"), + body=_("Any current user data for this app will be trashed") if has_data else "", + ) + dialog.add_response("cancel", _("Cancel")) + dialog.add_response("continue", _("Apply")) + dialog.connect("response", on_response) + dialog.present(HostInfo.main_window) def __init__(self, parent_page, folder, snapshots_path, toast_overlay, **kwargs): super().__init__(**kwargs)