diff --git a/data/io.github.flattool.Warehouse.gschema.xml b/data/io.github.flattool.Warehouse.gschema.xml index 788abef..72aeb0e 100644 --- a/data/io.github.flattool.Warehouse.gschema.xml +++ b/data/io.github.flattool.Warehouse.gschema.xml @@ -13,6 +13,12 @@ false + + true + + + "packages" + @@ -28,4 +34,12 @@ "all" + + + false + + + "size" + + diff --git a/src/install_page/install_page.py b/src/install_page/install_page.py index 6073271..d023f51 100644 --- a/src/install_page/install_page.py +++ b/src/install_page/install_page.py @@ -17,6 +17,7 @@ class InstallPage(Adw.BreakpointBin): # It is used to determine if a new page should be made or not # This must be set to the created object from within the class's __init__ method instance = None + page_name = "install" current_installation = "" current_remote = None diff --git a/src/main_window/window.py b/src/main_window/window.py index 40ede06..a8bcc09 100644 --- a/src/main_window/window.py +++ b/src/main_window/window.py @@ -55,13 +55,6 @@ class WarehouseWindow(Adw.ApplicationWindow): # if keyval == Gdk.KEY_Escape: # self.batch_mode_button.set_active(False) - def navigation_handler(self, _, row, hide_sidebar=True): - row = row.get_child() - page = self.pages[row] - self.stack.set_visible_child(page) - if self.main_split.get_collapsed(): - self.main_split.set_show_sidebar(False) - def start_loading(self, *args): for _, page in self.pages.items(): if page.instance: @@ -78,6 +71,14 @@ class WarehouseWindow(Adw.ApplicationWindow): self.refresh_button.set_sensitive(False) HostInfo.get_flatpaks(callback=self.end_loading) + def navigation_handler(self, _, row): + row = row.get_child() + page = self.pages[row] + self.stack.set_visible_child(page) + self.settings.set_string("page-shown", page.page_name) + if self.main_split.get_collapsed(): + self.main_split.set_show_sidebar(False) + def activate_row(self, nav_row): idx = 0 while row := self.navigation_row_listbox.get_row_at_index(idx): @@ -85,7 +86,12 @@ class WarehouseWindow(Adw.ApplicationWindow): if row.get_child() is nav_row: row.activate() nav_row.grab_focus() - return + break + + def save_sidebar_state(self, *args): + state = self.main_split.get_show_sidebar() + self.settings.set_boolean("sidebar-shown", state) + print(self.settings.get_boolean("sidebar-shown")) def __init__(self, **kwargs): super().__init__(**kwargs) @@ -104,8 +110,14 @@ class WarehouseWindow(Adw.ApplicationWindow): self.install_row: InstallPage(main_window=self), } - for _, page in self.pages.items(): + self.navigation_row_listbox.connect("row-activated", self.navigation_handler) + + page_to_show = self.settings.get_string("page-shown") + print(page_to_show) + for row, page in self.pages.items(): self.stack.add_child(page) + if page_to_show == page.page_name: + self.activate_row(row) # Apply self.settings.bind("window-width", self, "default-width", Gio.SettingsBindFlags.DEFAULT) @@ -120,12 +132,14 @@ class WarehouseWindow(Adw.ApplicationWindow): # Connections event_controller.connect("key-pressed", self.key_handler) - self.navigation_row_listbox.connect("row-activated", self.navigation_handler) # file_drop.connect("drop", self.drop_callback) self.refresh_button.connect("clicked", self.refresh_handler) - self.activate_row(self.install_row) - self.main_split.set_show_sidebar(True) + # self.activate_row(self.user_data_row) + # self.main_split.set_show_sidebar(self.settings.get_boolean("sidebar-shown")) + # GLib.idle_add(lambda *_: self.main_split.set_show_sidebar(False)) + # print(self.settings.get_boolean("sidebar-shown")) + # self.main_split.connect("notify::show-sidebar", self.save_sidebar_state) self.start_loading() HostInfo.get_flatpaks(callback=self.end_loading) diff --git a/src/packages_page/app_row.py b/src/packages_page/app_row.py index 1e3ea1b..3ca505f 100644 --- a/src/packages_page/app_row.py +++ b/src/packages_page/app_row.py @@ -17,7 +17,7 @@ class AppRow(Adw.ActionRow): self.image.add_css_class("icon-dropshadow") self.image.set_from_file(self.package.icon_path) - def gest(self, *args): + def gesture_handler(self, *args): self.on_long_press(self) def __init__(self, package, on_long_press=None, **kwargs): @@ -26,16 +26,16 @@ class AppRow(Adw.ActionRow): # Extra Object Creation self.package = package self.on_long_press = on_long_press - self.rclick_gesture = Gtk.GestureClick() + self.rclick_gesture = Gtk.GestureClick(button=3) self.long_press_gesture = Gtk.GestureLongPress() # Apply GLib.idle_add(lambda *_: self.set_title(package.info["name"])) GLib.idle_add(lambda *_: self.set_subtitle(package.info["id"])) GLib.idle_add(lambda *_: self.idle_stuff()) - self.rclick_gesture.set_button(3) self.add_controller(self.rclick_gesture) + self.add_controller(self.long_press_gesture) # Connections - self.rclick_gesture.connect("released", self.gest) - self.long_press_gesture.connect("pressed", self.gest) \ No newline at end of file + self.rclick_gesture.connect("released", self.gesture_handler) + self.long_press_gesture.connect("pressed", self.gesture_handler) \ No newline at end of file diff --git a/src/packages_page/packages_page.py b/src/packages_page/packages_page.py index fd5c1a8..b937502 100644 --- a/src/packages_page/packages_page.py +++ b/src/packages_page/packages_page.py @@ -42,6 +42,7 @@ class PackagesPage(Adw.BreakpointBin): # It is used to determine if a new page should be made or not # This must be set to the created object from within the class's __init__ method instance = None + page_name = "packages" def set_status(self, to_set): diff --git a/src/remotes_page/remotes_page.py b/src/remotes_page/remotes_page.py index 0b472c9..52aa50f 100644 --- a/src/remotes_page/remotes_page.py +++ b/src/remotes_page/remotes_page.py @@ -95,6 +95,7 @@ class RemotesPage(Adw.NavigationPage): # It is used to determine if a new page should be made or not # This must be set to the created object from within the class's __init__ method instance = None + page_name = "remotes" def start_loading(self): self.stack.set_visible_child(self.loading_remotes) diff --git a/src/snapshot_page/snapshot_page.py b/src/snapshot_page/snapshot_page.py index 7ad23cc..b1ddfbe 100644 --- a/src/snapshot_page/snapshot_page.py +++ b/src/snapshot_page/snapshot_page.py @@ -46,6 +46,8 @@ class SnapshotPage(Adw.BreakpointBin): # It is used to determine if a new page should be made or not # This must be set to the created object from within the class's __init__ method instance = None + page_name = "snapshots" + snapshots_path = f"{HostInfo.home}/.var/app/io.github.flattool.Warehouse/data/Snapshots/" def sort_snapshots(self, *args): diff --git a/src/user_data_page/user_data_page.py b/src/user_data_page/user_data_page.py index 9e9b663..96e3422 100644 --- a/src/user_data_page/user_data_page.py +++ b/src/user_data_page/user_data_page.py @@ -38,6 +38,7 @@ class UserDataPage(Adw.BreakpointBin): # It is used to determine if a new page should be made or not # This must be set to the created object from within the class's __init__ method instance = None + page_name = "user-data" def sort_data(self, *args): self.data_flatpaks.clear()