from PySide6.QtCore import QObject, QSettings, QByteArray from PySide6.QtWidgets import QApplication from bedit_gui.views.main_window import MainWindow class WindowStateController(QObject): def __init__(self,app: QApplication,window: MainWindow) -> None: super().__init__(window) self.window = window self.settings = QSettings() # Capture the layout created by Designer. self._default_geometry = QByteArray(window.saveGeometry()) self._default_state = QByteArray(window.saveState()) app.aboutToQuit.connect(self.save) window.ui.actionReset_Layout.triggered.connect(self.reset) def restore(self) -> None: if self.settings.contains("main_window/geometry"): self.window.restoreGeometry(self.settings.value("main_window/geometry")) if self.settings.contains("main_window/state"): self.window.restoreState(self.settings.value("main_window/state")) def save(self) -> None: self.settings.setValue("main_window/geometry",self.window.saveGeometry()) self.settings.setValue("main_window/state",self.window.saveState()) def reset(self) -> None: self.settings.remove("main_window/geometry") self.settings.remove("main_window/state") self.window.restoreGeometry(self._default_geometry) self.window.restoreState(self._default_state) self.window.showMaximized()