diff --git a/src/snapshot_page/snapshot_page.py b/src/snapshot_page/snapshot_page.py index 3d2c854..e225627 100644 --- a/src/snapshot_page/snapshot_page.py +++ b/src/snapshot_page/snapshot_page.py @@ -130,7 +130,7 @@ class SnapshotPage(Adw.BreakpointBin): def leftover_select_handler(self, listbox, row, should_show_content=True, refresh=False): self.active_listbox.select_row(None) - self.list_page.set_snapshots(row.package, refresh) + self.list_page.set_snapshots(row.folder, refresh) self.split_view.set_show_content(should_show_content) def select_first_row(self): diff --git a/src/snapshot_page/snapshots_list_page.blp b/src/snapshot_page/snapshots_list_page.blp index 384094d..2e27e50 100644 --- a/src/snapshot_page/snapshots_list_page.blp +++ b/src/snapshot_page/snapshots_list_page.blp @@ -31,6 +31,7 @@ template $SnapshotsListPage : Adw.NavigationPage { } [bottom] ActionBar { + revealed: bind new_button.visible; [center] Button new_button { margin-top: 3; diff --git a/src/snapshot_page/snapshots_list_page.py b/src/snapshot_page/snapshots_list_page.py index dc4e42c..889e39c 100644 --- a/src/snapshot_page/snapshots_list_page.py +++ b/src/snapshot_page/snapshots_list_page.py @@ -30,14 +30,22 @@ class SnapshotsListPage(Adw.NavigationPage): self.listbox.append(row) self.listbox.get_row_at_index(i).set_activatable(False) - def set_snapshots(self, package, refresh=False): - folder = package.info["id"] - if self.current_folder == folder and not refresh: + def set_snapshots(self, package_or_folder, refresh=False): + if package_or_folder == self.package_or_folder and not refresh: return - - self.current_package = package + + folder = None + self.package_or_folder = package_or_folder + if type(package_or_folder) is str: + self.set_title(package_or_folder) + folder = package_or_folder + self.new_button.set_visible(False) + else: + folder = package_or_folder.info["id"] + self.set_title(_("{} Snapshots").format(package_or_folder.info["name"])) + self.new_button.set_visible(os.path.exists(package_or_folder.data_path)) + self.current_folder = folder - self.set_title(_("{} Snapshots").format(package.info["name"])) self.snapshots_rows.clear() self.listbox.remove_all() @@ -56,10 +64,10 @@ class SnapshotsListPage(Adw.NavigationPage): def on_done(self): self.parent_page.status_stack.set_visible_child(self.parent_page.split_view) - self.set_snapshots(self.current_package, refresh=True) + self.set_snapshots(self.package_or_folder, refresh=True) def on_new(self, button): - dialog = NewSnapshotDialog(self.parent_page, self.parent_page.snapshotting_status, self.on_done, self.current_package) + dialog = NewSnapshotDialog(self.parent_page, self.parent_page.snapshotting_status, self.on_done, self.package_or_folder) dialog.create_button.connect("clicked", lambda *_: self.parent_page.status_stack.set_visible_child(self.parent_page.snapshotting_view)) dialog.present(HostInfo.main_window) @@ -70,7 +78,7 @@ class SnapshotsListPage(Adw.NavigationPage): self.parent_page = parent_page self.snapshots_path = HostInfo.snapshots_path self.current_folder = None - self.current_package = None + self.package_or_folder = None self.snapshots_rows = [] # Connections