From aadf24e9d9dd65ca9f0a736dadbfe96ee5f4f916 Mon Sep 17 00:00:00 2001 From: Heliguy Date: Thu, 11 Jan 2024 18:43:14 -0500 Subject: [PATCH] Change downgrade window to use spinner instead of progress bar --- data/ui/downgrade.blp | 50 ++++++++++++++++++++++++++++------------- src/downgrade_window.py | 36 ++++++++++++----------------- 2 files changed, 48 insertions(+), 38 deletions(-) diff --git a/data/ui/downgrade.blp b/data/ui/downgrade.blp index 8a1f321..bd8664e 100644 --- a/data/ui/downgrade.blp +++ b/data/ui/downgrade.blp @@ -29,30 +29,48 @@ template $DowngradeWindow: Adw.Window { content: Adw.ToastOverlay toast_overlay { Stack main_stack { - Overlay main_overlay { - [overlay] - ProgressBar progress_bar { - pulse-step: 0.7; - can-target: false; + Box loading { + orientation: vertical; + spacing: 10; + margin-top: 40; + margin-bottom: 20; + halign: center; + valign: center; + Spinner { + margin-bottom: 35; + width-request: 30; + height-request: 30; + opacity: 0.5; + spinning: true; + } + + Label loading_label { + label: _("Fetching Releases…"); styles [ - "osd" + "title-1", + "title" ] } - Adw.PreferencesPage outerbox { - Adw.PreferencesGroup { - Adw.SwitchRow mask_row { - title: _("Disable Updates"); - active: true; - } - } + Label { + label: _("This could take a while."); + styles ["description", "body"] + } + } - Adw.PreferencesGroup versions_group { - title: _("Select a Release"); - description: _("This will uninstall the current release and install the chosen one instead. Note that downgrading can cause issues."); + Adw.PreferencesPage outerbox { + Adw.PreferencesGroup { + Adw.SwitchRow mask_row { + title: _("Disable Updates"); + active: true; } } + + Adw.PreferencesGroup versions_group { + title: _("Select a Release"); + description: _("This will uninstall the current release and install the chosen one instead. Note that downgrading can cause issues."); + } } } }; diff --git a/src/downgrade_window.py b/src/downgrade_window.py index b51d660..693ff54 100644 --- a/src/downgrade_window.py +++ b/src/downgrade_window.py @@ -15,15 +15,13 @@ class DowngradeWindow(Adw.Window): cancel_button = Gtk.Template.Child() apply_button = Gtk.Template.Child() versions_group = Gtk.Template.Child() - progress_bar = Gtk.Template.Child() toast_overlay = Gtk.Template.Child() mask_row = Gtk.Template.Child() main_toolbar_view = Gtk.Template.Child() - - def pulser(self): - if self.should_pulse: - self.progress_bar.pulse() - GLib.timeout_add(500, self.pulser) + loading = Gtk.Template.Child() + loading_label = Gtk.Template.Child() + main_stack = Gtk.Template.Child() + outerbox = Gtk.Template.Child() def key_handler(self, _a, event, _c, _d): if event == Gdk.KEY_Escape: @@ -76,8 +74,6 @@ class DowngradeWindow(Adw.Window): self.versions.append([commits[i], changes[i], dates[i]]) def commits_callback(self): - self.progress_bar.set_visible(False) - self.should_pulse = False group_button = Gtk.CheckButton(visible=False) self.versions_group.add(group_button) for i in range(len(self.versions)): @@ -109,23 +105,21 @@ class DowngradeWindow(Adw.Window): row.set_activatable_widget(select) row.add_prefix(select) self.versions_group.add(row) - self.set_title(self.window_title) + self.main_stack.set_visible_child(self.outerbox) def generate_list(self): task = Gio.Task.new(None, None, lambda *_: self.commits_callback()) task.run_in_thread(lambda *_: self.get_commits()) def downgrade_callack(self): - self.progress_bar.set_visible(False) - self.should_pulse = False self.disconnect(self.no_close) - self.main_toolbar_view.set_sensitive(True) - self.progress_bar.set_visible = False if self.response != 0: self.toast_overlay.add_toast( - Adw.Toast.new(_("Could not downgrade {}").format(self.app_name)) + Adw.TThis is toast.new(_("Could not downgrade {}").format(self.app_name)) ) + self.apply_button.set_sensitive(True) + self.cancel_button.set_sensitive(True) return if self.mask_row.get_active(): @@ -145,12 +139,11 @@ class DowngradeWindow(Adw.Window): ) def on_apply(self): - self.set_title(_("Downgrading…")) + self.loading_label.set_label(_("Downgrading…")) self.no_close = self.connect("close-request", lambda event: True) - self.main_toolbar_view.set_sensitive(False) - self.should_pulse = True - self.progress_bar.set_visible(True) - self.pulser() + self.main_stack.set_visible_child(self.loading) + self.apply_button.set_sensitive(False) + self.cancel_button.set_sensitive(False) task = Gio.Task.new(None, None, lambda *_: self.downgrade_callack()) task.run_in_thread(lambda *_: self.downgrade_thread()) @@ -166,7 +159,6 @@ class DowngradeWindow(Adw.Window): self.install_type = flatpak_row[7] self.app_ref = flatpak_row[8] self.versions = [] - self.should_pulse = True self.commit_to_use = "" self.parent_window = parent_window self.flatpak_row = flatpak_row @@ -181,9 +173,7 @@ class DowngradeWindow(Adw.Window): self.apply_button.connect("clicked", lambda *_: self.on_apply()) # Apply - self.pulser() self.add_controller(event_controller) - self.set_title(_("Fetching Releases…")) self.set_transient_for(parent_window) self.mask_row.set_subtitle( _("Ensure that {} will never be updated to a newer version").format( @@ -191,6 +181,8 @@ class DowngradeWindow(Adw.Window): ) ) + self.set_title(self.window_title) + self.generate_list() self.present()