38 lines
1.4 KiB
Python
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()
|