mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Persist window geometry on close.
Re-opens the window in the configuration it was in (size, maximized, correct display, etc) when it was closed.
This commit is contained in:
parent
155f9d4052
commit
c628695a4e
@ -3,7 +3,7 @@ import traceback
|
|||||||
import webbrowser
|
import webbrowser
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from PySide2.QtCore import Qt
|
from PySide2.QtCore import QSettings, Qt
|
||||||
from PySide2.QtGui import QCloseEvent, QIcon
|
from PySide2.QtGui import QCloseEvent, QIcon
|
||||||
from PySide2.QtWidgets import (
|
from PySide2.QtWidgets import (
|
||||||
QAction,
|
QAction,
|
||||||
@ -72,10 +72,15 @@ class QLiberationWindow(QMainWindow):
|
|||||||
self.initMenuBar()
|
self.initMenuBar()
|
||||||
self.connectSignals()
|
self.connectSignals()
|
||||||
|
|
||||||
|
# Default to maximized on the main display if we don't have any persistent
|
||||||
|
# configuration.
|
||||||
screen = QDesktopWidget().screenGeometry()
|
screen = QDesktopWidget().screenGeometry()
|
||||||
self.setGeometry(0, 0, screen.width(), screen.height())
|
self.setGeometry(0, 0, screen.width(), screen.height())
|
||||||
self.setWindowState(Qt.WindowMaximized)
|
self.setWindowState(Qt.WindowMaximized)
|
||||||
|
|
||||||
|
# But override it with the saved configuration if it exists.
|
||||||
|
self._restore_window_geometry()
|
||||||
|
|
||||||
if self.game is None:
|
if self.game is None:
|
||||||
last_save_file = liberation_install.get_last_save_file()
|
last_save_file = liberation_install.get_last_save_file()
|
||||||
if last_save_file:
|
if last_save_file:
|
||||||
@ -412,6 +417,19 @@ class QLiberationWindow(QMainWindow):
|
|||||||
self.debriefing = QDebriefingWindow(debrief)
|
self.debriefing = QDebriefingWindow(debrief)
|
||||||
self.debriefing.show()
|
self.debriefing.show()
|
||||||
|
|
||||||
|
def _qsettings(self) -> QSettings:
|
||||||
|
return QSettings("DCS Liberation", "Qt UI")
|
||||||
|
|
||||||
|
def _restore_window_geometry(self) -> None:
|
||||||
|
settings = self._qsettings()
|
||||||
|
self.restoreGeometry(settings.value("geometry"))
|
||||||
|
self.restoreState(settings.value("windowState"))
|
||||||
|
|
||||||
|
def _save_window_geometry(self) -> None:
|
||||||
|
settings = self._qsettings()
|
||||||
|
settings.setValue("geometry", self.saveGeometry())
|
||||||
|
settings.setValue("windowState", self.saveState())
|
||||||
|
|
||||||
def closeEvent(self, event: QCloseEvent) -> None:
|
def closeEvent(self, event: QCloseEvent) -> None:
|
||||||
result = QMessageBox.question(
|
result = QMessageBox.question(
|
||||||
self,
|
self,
|
||||||
@ -420,6 +438,7 @@ class QLiberationWindow(QMainWindow):
|
|||||||
QMessageBox.Yes | QMessageBox.No,
|
QMessageBox.Yes | QMessageBox.No,
|
||||||
)
|
)
|
||||||
if result == QMessageBox.Yes:
|
if result == QMessageBox.Yes:
|
||||||
|
self._save_window_geometry()
|
||||||
super().closeEvent(event)
|
super().closeEvent(event)
|
||||||
self.dialog = None
|
self.dialog = None
|
||||||
else:
|
else:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user