diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 501e392..8ce05d7 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -469,15 +469,6 @@ class Controller(GObject.GObject): cmd = self.query_config(Preferences.CLIENT) open_workshop_page(mod, cmd) - # TODO: put in model manager (dedicated manager for mod store) - # def get_mod_from_tree_path( - # self, tree_path: Gtk.TreePath - # ) -> tuple[str, Gtk.TreeIter]: - # model = self.model_man.get_mod_store() - # tree_iter = model.get_iter(tree_path) - # mod = model.get(tree_iter, 2)[0] - # return mod, tree_iter - def get_mod_from_tree_path( self, tree_path: Gtk.TreePath ) -> tuple[str, Gtk.TreeIter]: diff --git a/dzgui/views/base.py b/dzgui/views/base.py index 7cb7714..9f7ffc7 100644 --- a/dzgui/views/base.py +++ b/dzgui/views/base.py @@ -158,8 +158,12 @@ class OuterWindow(Gtk.Window): MainController.open_page(NotebookPage.SERVERS) MainController.mediator.grid.conpan.lan.set_visible(False) self.grid.right_panel.sel_panel.hide() + # TODO: POC, trigger page change here MainController.loaded = True + + if MainController.get_prefs().is_developer: + return MainController.populate_model() def _on_delete_event(self, window: "OuterWindow", event: Gdk.EventKey) -> None: diff --git a/dzgui/views/pages/devs.py b/dzgui/views/pages/devs.py index b453829..a58adcf 100644 --- a/dzgui/views/pages/devs.py +++ b/dzgui/views/pages/devs.py @@ -1,5 +1,5 @@ from dataclasses import fields -from typing import Union, TYPE_CHECKING +from typing import Self, Union, TYPE_CHECKING from dzgui.const.enum import NotebookPage from dzgui.util.css import add_class @@ -44,41 +44,57 @@ class Developers(Gtk.ScrolledWindow): prefs = self.controller.get_prefs() paths_tree = self._make_tree(prefs.paths) - prefs_tree = self._make_tree(prefs) + self.prefs_tree = self._make_tree(prefs) trees_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) path = Gtk.TreePath.new_from_indices([0]) paths_tree.set_cursor(path) - prefs_tree.set_cursor(path) + self.prefs_tree.set_cursor(path) - for el in [paths_label, paths_tree, prefs_label, prefs_tree]: + for el in [paths_label, paths_tree, prefs_label, self.prefs_tree]: trees_box.add(el) for el in [heading, back_button, trees_box]: self.box.add(el) self.add(self.box) + self.connect("map", self._on_map) def _on_back_clicked(self, button: Gtk.Button) -> None: self.controller.open_page(NotebookPage.OPTIONS) def _make_tree(self, prefs: Union["Xdg", "UserPrefs"]) -> Gtk.TreeView: - view = TreeView(self.controller) + tree = TreeView(self.controller) renderer = Gtk.CellRendererText() for i, col in enumerate(developers.columns): column = Gtk.TreeViewColumn(col, renderer, text=i) column.set_sizing(Gtk.TreeViewColumnSizing.FIXED) - view.append_column(column) + tree.append_column(column) + store = self._make_store(prefs) + tree.set_model(store) + # store = Gtk.ListStore(str, str) + # for field in fields(prefs): + # if field.name == "paths": + # continue + # k, v = field.name, getattr(prefs, field.name) + # store.append((k, str(v))) + + return tree + + def _make_store(self, prefs: Union["Xdg", "UserPrefs"]) -> Gtk.ListStore: store = Gtk.ListStore(str, str) for field in fields(prefs): if field.name == "paths": continue k, v = field.name, getattr(prefs, field.name) store.append((k, str(v))) + return store - view.set_model(store) - return view + def _on_map(self, widget: Self) -> None: + prefs = self.controller.get_prefs() + store = self._make_store(prefs) + self.prefs_tree.set_model(store) def grab_content_area(self) -> None: return diff --git a/dzgui/views/trees/tree_servers.py b/dzgui/views/trees/tree_servers.py index 4ccf9de..cbf7fef 100644 --- a/dzgui/views/trees/tree_servers.py +++ b/dzgui/views/trees/tree_servers.py @@ -1,7 +1,7 @@ import logging import multiprocessing import threading -from typing import Any, Optional +from typing import Any, Optional, Self from warnings import deprecated from dzgui.views.mixins.context_mixin import ContextMixin @@ -204,7 +204,7 @@ class ServerTreeView(ContextMixin, TreeView): def get_enum(self) -> None: return self.enum - def _on_map(self, a) -> None: + def _on_map(self, widget: Self) -> None: # TODO: disable filter panel if current model is None if self.get_enum() is ServerTab.LAN: self.emitter.emit("lan_tab_toggled", True)