use QSettings to store window geometry

This commit is contained in:
2021-10-31 07:52:13 +01:00
parent 87eb0a9bf1
commit 59a4173929
2 changed files with 26 additions and 1 deletions

13
cutesettings.py Normal file
View File

@@ -0,0 +1,13 @@
from PyQt6.QtCore import QSettings
class CuteSettings:
def __init__(self):
self._settings = QSettings("opentext", "ravenlog")
def set_value(self, key: str, value: any):
self._settings.setValue(key, value)
def value(self, key: str, default=None):
return self._settings.value(key, default)

14
main.py
View File

@@ -10,6 +10,7 @@ import sys
import urlutils import urlutils
from aboutdialog import AboutDialog from aboutdialog import AboutDialog
from cutesettings import CuteSettings
from ravenui import RavenUI from ravenui import RavenUI
from settingsstore import SettingsStore from settingsstore import SettingsStore
from highlightingdialog import HighlightingDialog from highlightingdialog import HighlightingDialog
@@ -28,7 +29,8 @@ class MainWindow(QMainWindow):
self.settings = SettingsStore.load() self.settings = SettingsStore.load()
self.setWindowTitle(self.tr("RavenLog")) self.setWindowTitle(self.tr("RavenLog"))
self.setGeometry(0, 0, 640, 480) self._restore_window()
self.setDockNestingEnabled(True) self.setDockNestingEnabled(True)
self.setAcceptDrops(True) self.setAcceptDrops(True)
@@ -135,6 +137,15 @@ class MainWindow(QMainWindow):
file = urlutils.url_to_path(e.mimeData().text()) file = urlutils.url_to_path(e.mimeData().text())
self.open_file(file) self.open_file(file)
def _restore_window(self):
qsettings = CuteSettings()
geometry_restored = False
geometry = qsettings.value("mainWindow/geometry")
if geometry:
geometry_restored = self.restoreGeometry(geometry)
if not geometry_restored:
self.setGeometry(0, 0, 800, 600)
def closeEvent(self, event): def closeEvent(self, event):
self.destruct() self.destruct()
@@ -142,6 +153,7 @@ class MainWindow(QMainWindow):
self.tabs.destruct() self.tabs.destruct()
self.close() self.close()
SettingsStore.save(self.settings) SettingsStore.save(self.settings)
CuteSettings().set_value("mainWindow/geometry", self.saveGeometry())
def stop_signal(signum, _stackframe): def stop_signal(signum, _stackframe):