From f29378f68e7e624a00ad238404102d7f2a6d9c25 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Fri, 27 Mar 2026 16:57:07 +0100 Subject: [PATCH] GUI State manager: for handlign Qsettings - WIP --- src/aare/gui/models/gui_state_manager.py | 48 ++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/aare/gui/models/gui_state_manager.py diff --git a/src/aare/gui/models/gui_state_manager.py b/src/aare/gui/models/gui_state_manager.py new file mode 100644 index 00000000..c49d9245 --- /dev/null +++ b/src/aare/gui/models/gui_state_manager.py @@ -0,0 +1,48 @@ +import json +from PySide6.QtCore import QSettings + + +class UIStateManager: + def __init__(self, organization="PSI", app="AareGUI"): + self.settings = QSettings(organization, app) + + def save_window(self, window): + self.settings.setValue("main_window/geometry", window.saveGeometry()) + self.settings.setValue("main_window/state", window.saveState()) + + def restore_window(self, window): + geometry = self.settings.value("main_window/geometry") + if geometry: + window.restoreGeometry(geometry) + + state = self.settings.value("main_window/state") + if state: + window.restoreState(state) + + def save_model(self, key: str, model): + try: + + data = model.to_list() + self.settings.setValue(key, json.dumps(data)) + + except Exception as e: + print(f"Failed to save model {key}: {e}") + + def restore_model(self, key: str, model): + try: + raw = self.settings.value(key) + if not raw: + return + + data = json.loads(raw) + + model.from_list(data) + + except Exception as e: + print(f"Failed to restore model {key}: {e}") + + def save_value(self, key: str, value): + self.settings.setValue(key, value) + + def load_value(self, key: str, default=None, value_type=None): + return self.settings.value(key, default, type=value_type) \ No newline at end of file