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