diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 020ec39..a13cc4d 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -39,6 +39,7 @@ from dzgui.config import update from dzgui.config.query import lookup from dzgui.config.userprefs import UserPrefs from dzgui.controllers.emitter import Emitter +from dzgui.managers.config import ConfigManager from dzgui.managers.contextmenu import ContextMenuManager from dzgui.model.filtered_model import FilteredModelManager from dzgui.model.servers import ServerModelManager @@ -108,13 +109,11 @@ class Controller(GObject.GObject): self.prefs: UserPrefs self.cleanup_func: StoredFunc = None - # self.config_man = ConfigManager() - self.emitter = Emitter() self.emitter.connect("map_selection_changed", self._on_map_selection_changed) self.emitter.connect("check_toggled", self._on_check_toggled) self.emitter.connect("servers_loaded_init", self._on_servers_loaded_init) - #self.emitter.connect("servers_loaded", self._on_servers_loaded) + # self.emitter.connect("servers_loaded", self._on_servers_loaded) # NOTE: suppress requests until entire UI is loaded self.loaded = False @@ -152,7 +151,7 @@ class Controller(GObject.GObject): return self.prefs def set_prefs(self, prefs: UserPrefs) -> None: - # self.config_man.set_prefs() + self.config_man = ConfigManager(prefs) self.prefs = prefs def query_config(self, key: Preferences) -> str | bool | list: @@ -346,6 +345,7 @@ class Controller(GObject.GObject): dialog.run() # TODO: suppress signals # then reenable (or it spawns dialog twice) + # TODO: do this on demand for certain changes self.mediator.grid.notebook.settings.populate_settings() return @@ -917,7 +917,7 @@ class Controller(GObject.GObject): store = self.get_map_store() self.emitter.emit("load_maps", store) - #def _on_servers_loaded(self, emitter: "Emitter", tab: "ServerTab") -> None: + # def _on_servers_loaded(self, emitter: "Emitter", tab: "ServerTab") -> None: # return # # NOTE: workaround for GTK bug where fullscreen causes headers to vanish when model is None # # TODO: this should be internal to servers page @@ -960,3 +960,6 @@ class Controller(GObject.GObject): def get_menu(self) -> "MenuTreeView": return self.mediator.menu + + def get_config_man(self) -> ConfigManager: + return self.config_man diff --git a/dzgui/model/servers.py b/dzgui/model/servers.py index 8647944..87a8bdf 100644 --- a/dzgui/model/servers.py +++ b/dzgui/model/servers.py @@ -10,6 +10,7 @@ from dzgui.const.constants import ( APPID_DAYZ, APPID_DAYZ_EXP, ) +from dzgui.managers.config import ConfigManager from dzgui.managers.thread_man import call_on_thread, StoredFunc, ThreadingManager from dzgui.util.strings import api_warn_msg, dialog from dzgui.views.dialogs.generic import ExceptionDialog @@ -80,7 +81,8 @@ class ServerModelManager: @call_on_thread(dialog.fetching) def _dump_api(self) -> None: - key = self.controller.query_config(Preferences.STEAM) + config_man = self.controller.get_config_man() + key = config_man.lookup(Preferences.STEAM) job = Servers.query_api params = Servers.params servers = [] @@ -191,11 +193,9 @@ class ServerModelManager: filter_man = self._get_filter_man() model = filter_man.get_control() - # TODO: make this a method of ConfigManager fqip = Servers.response_to_fq_ip(res) - ips = self.controller.query_config(Preferences.IP_LIST) - ips.append(fqip) - self.controller.update_config(Preferences.IP_LIST, ips) + config_man = self.controller.get_config_man() + config_man.add_saved_server(fqip) if model is not None: # NOTE: single record insertion @@ -226,7 +226,8 @@ class ServerModelManager: self._dump_ips(rows) def _dump_favorites(self) -> None: - ips = self.controller.query_config(Preferences.IP_LIST) + config_man = self.controller.get_config_man() + ips = config_man.lookup(Preferences.IP_LIST) self.thread_man.set_job_count(len(ips)) # TODO: customize statusbar to mention how records can be added via contextmenu diff --git a/dzgui/views/pages/servers.py b/dzgui/views/pages/servers.py index e03b25d..509bfd6 100644 --- a/dzgui/views/pages/servers.py +++ b/dzgui/views/pages/servers.py @@ -102,6 +102,8 @@ class ServerNotebook(Gtk.ScrolledWindow): if self.controller.loaded is False: return + # TODO: wipe statusbar when changing pages + label = self.notebook.get_tab_label_text(child) if label is None: return