mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +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
|
||||
from typing import Optional
|
||||
|
||||
from PySide2.QtCore import Qt
|
||||
from PySide2.QtCore import QSettings, Qt
|
||||
from PySide2.QtGui import QCloseEvent, QIcon
|
||||
from PySide2.QtWidgets import (
|
||||
QAction,
|
||||
@ -72,10 +72,15 @@ class QLiberationWindow(QMainWindow):
|
||||
self.initMenuBar()
|
||||
self.connectSignals()
|
||||
|
||||
# Default to maximized on the main display if we don't have any persistent
|
||||
# configuration.
|
||||
screen = QDesktopWidget().screenGeometry()
|
||||
self.setGeometry(0, 0, screen.width(), screen.height())
|
||||
self.setWindowState(Qt.WindowMaximized)
|
||||
|
||||
# But override it with the saved configuration if it exists.
|
||||
self._restore_window_geometry()
|
||||
|
||||
if self.game is None:
|
||||
last_save_file = liberation_install.get_last_save_file()
|
||||
if last_save_file:
|
||||
@ -412,6 +417,19 @@ class QLiberationWindow(QMainWindow):
|
||||
self.debriefing = QDebriefingWindow(debrief)
|
||||
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:
|
||||
result = QMessageBox.question(
|
||||
self,
|
||||
@ -420,6 +438,7 @@ class QLiberationWindow(QMainWindow):
|
||||
QMessageBox.Yes | QMessageBox.No,
|
||||
)
|
||||
if result == QMessageBox.Yes:
|
||||
self._save_window_geometry()
|
||||
super().closeEvent(event)
|
||||
self.dialog = None
|
||||
else:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user