Files
BEdit/src/bedit_gui/controllers/window_state_controller.py

38 lines
1.4 KiB
Python

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()