GUI State manager: for handlign Qsettings - WIP
This commit is contained in:
1 parent
66f11fcf0e
commit
f29378f68e
1 file changed
+48
@@ -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)
|
||||
Reference in new issue
Block a user