mirror of
https://github.com/morgan9e/warehouse
synced 2026-04-15 00:34:42 +09:00
use stack for switching main pages
This commit is contained in:
@@ -130,6 +130,10 @@ template $WarehouseWindow: Adw.ApplicationWindow {
|
||||
}
|
||||
}
|
||||
;
|
||||
content:
|
||||
Stack stack {
|
||||
}
|
||||
;
|
||||
}
|
||||
;
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user