use stack for switching main pages

This commit is contained in:
heliguy
2024-07-17 16:40:47 -04:00
parent 32b1c3ae6c
commit f05fb969a1
3 changed files with 25 additions and 17 deletions

View File

@@ -130,6 +130,10 @@ template $WarehouseWindow: Adw.ApplicationWindow {
}
}
;
content:
Stack stack {
}
;
}
;
}

View File

@@ -35,6 +35,7 @@ class WarehouseWindow(Adw.ApplicationWindow):
gtc = Gtk.Template.Child
main_breakpoint = gtc()
main_split = gtc()
stack = gtc()
refresh_button = gtc()
navigation_row_listbox = gtc()
packages_row = gtc()
@@ -54,17 +55,7 @@ class WarehouseWindow(Adw.ApplicationWindow):
row = row.get_child()
page = self.pages[row]
if hide_sidebar and self.main_split.get_collapsed():
self.main_split.set_show_sidebar(False)
if type(self.main_split.get_content()) == page:
# Skip when the user clicks on the row that is already showing the page
return
if page.instance:
self.main_split.set_content(page.instance)
else:
self.main_split.set_content(page(main_window=self))
self.stack.set_visible_child(page)
def start_loading(self, *args):
for _, page in self.pages.items():
@@ -88,11 +79,14 @@ class WarehouseWindow(Adw.ApplicationWindow):
event_controller = Gtk.EventControllerKey()
file_drop = Gtk.DropTarget.new(Gio.File, Gdk.DragAction.COPY)
self.pages = {
self.packages_row: PackagesPage,
self.packages_row: PackagesPage(main_window=self),
self.user_data_row: UserDataPage,
self.user_data_row: UserDataPage(main_window=self),
}
for _, page in self.pages.items():
self.stack.add_child(page)
# Apply
ErrorToast.main_window = self
self.settings.bind("window-width", self, "default-width", Gio.SettingsBindFlags.DEFAULT)
@@ -111,7 +105,7 @@ class WarehouseWindow(Adw.ApplicationWindow):
# file_drop.connect("drop", self.drop_callback)
self.refresh_button.connect("clicked", self.refresh_handler)
self.navigation_row_listbox.get_row_at_index(0).activate()
self.navigation_row_listbox.get_row_at_index(2).activate()
self.main_split.set_show_sidebar(True)
self.start_loading()

View File

@@ -2,20 +2,30 @@ from gi.repository import Adw, Gtk, GLib, Gio, Pango
from .host_info import HostInfo
from .error_toast import ErrorToast
from .data_box import DataBox
import pathlib, os
@Gtk.Template(resource_path="/io/github/flattool/Warehouse/user_data_page/active_data_page.ui")
class ActiveDataPage(Gtk.ScrolledWindow):
__gtype_name__ = 'ActiveDataPage'
gtc = Gtk.Template.Child
flow_box = gtc()
def generate_list(self, *args):
data = f"{HostInfo.home}/.var/app"
for folder in os.listdir(data):
print(folder)
def __init__(self, main_window, data_page, **kwargs):
super().__init__(**kwargs)
self.generate_list()
# self.select_button.connect("toggled", lambda *_: self.set_selection_mode(self.select_button.get_active()))
# self.flow_box.connect("child-activated", lambda _, item: (cb := (row := item.get_child()).check_button).set_active((not cb.get_active()) if row.get_activatable() else False))
# Extra Object Creation
# Extra Object Creation
# Apply
# Apply
# Connections
# Connections