Skip to content

Commit 5e00de8

Browse files
authored
[cuegui] Add toggleable option to save settings on exit (#1612)
**Link the Issue(s) this Pull Request is related to.** #1601 **Summarize your change.** This adds an option (which is enabled by default) to save window settings on exit. This enables one to save a setup which is the same no matter if you close the windows 1-by-1 or all at once.
1 parent 8a02963 commit 5e00de8

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

cuegui/cuegui/MainWindow.py

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ def __init__(self, app_name, app_version, window_name, parent = None):
8686
self.setAnimated(False)
8787
self.setDockNestingEnabled(True)
8888

89+
# Create checkable menuitem
90+
self.saveWindowSettingsCheck = QtWidgets.QAction("Save Window Settings on Exit", self)
91+
self.saveWindowSettingsCheck.setCheckable(True)
92+
8993
# Register this window
9094
self.__windowOpened()
9195

@@ -138,7 +142,9 @@ def handleExit(self, sig, flag):
138142
"""Save current state and close the application"""
139143
del sig
140144
del flag
141-
self.__saveSettings()
145+
# Only save settings on exit if toggled
146+
if self.saveWindowSettingsCheck.isChecked():
147+
self.__saveSettings()
142148
self.__windowCloseApplication()
143149

144150
@staticmethod
@@ -293,6 +299,10 @@ def __windowMenuSetup(self, menu):
293299
changeTitle.triggered.connect(self.__windowMenuHandleChangeTitle) # pylint: disable=no-member
294300
menu.addAction(changeTitle)
295301

302+
# Menu Bar: Window -> Save Window Settings on Exit
303+
self.saveWindowSettingsCheck.triggered.connect(self.__saveSettingsToggle) # pylint: disable=no-member
304+
menu.addAction(self.saveWindowSettingsCheck)
305+
296306
# Menu Bar: Window -> Save Window Settings
297307
saveWindowSettings = QtWidgets.QAction("Save Window Settings", self)
298308
saveWindowSettings.triggered.connect(self.__saveSettings) # pylint: disable=no-member
@@ -402,9 +412,6 @@ def __windowOpened(self):
402412
def __windowClosed(self):
403413
"""Called from closeEvent on window close"""
404414

405-
# Save the fact that this window is open or not when the app closed
406-
self.settings.setValue("%s/Open" % self.name, self.app.closingApp)
407-
408415
# pylint: disable=bare-except
409416
try:
410417
self.windows.remove(self)
@@ -456,7 +463,9 @@ def closeEvent(self, event):
456463
@type event: QEvent
457464
@param event: The close event"""
458465
del event
459-
self.__saveSettings()
466+
# Only save settings on exit if toggled
467+
if self.saveWindowSettingsCheck.isChecked():
468+
self.__saveSettings()
460469
self.__windowClosed()
461470

462471
def __restoreSettings(self):
@@ -472,6 +481,15 @@ def __restoreSettings(self):
472481
self.move(self.settings.value("%s/Position" % self.name,
473482
QtCore.QPoint(0, 0)))
474483

484+
self.saveWindowSettingsCheck.setChecked(self.settings.value("SaveOnExit", "true") == "true")
485+
486+
def __saveSettingsToggle(self, checked):
487+
"""Toggles saving window settings on exit"""
488+
489+
# Make sure that it has the same state in all windows
490+
for window in self.windows:
491+
window.saveWindowSettingsCheck.setChecked(checked)
492+
475493
def __saveSettings(self):
476494
"""Saves the windows settings"""
477495
logger.info('Saving: %s', self.settings.fileName())
@@ -480,6 +498,15 @@ def __saveSettings(self):
480498

481499
# For populating the default state: print self.saveState().toBase64()
482500

501+
# Save the fact that this window is open or not
502+
for windowName in self.windows_names:
503+
for window in self.windows:
504+
if window.name == windowName:
505+
self.settings.setValue("%s/Open" % windowName, True)
506+
break
507+
else:
508+
self.settings.setValue("%s/Open" % windowName, False)
509+
483510
self.settings.setValue("Version", self.app_version)
484511

485512
self.settings.setValue("%s/Title" % self.name,
@@ -491,6 +518,8 @@ def __saveSettings(self):
491518
self.settings.setValue("%s/Position" % self.name,
492519
self.pos())
493520

521+
self.settings.setValue("SaveOnExit", self.saveWindowSettingsCheck.isChecked())
522+
494523
def __revertLayout(self):
495524
"""Revert back to default window layout"""
496525
result = QtWidgets.QMessageBox.question(

0 commit comments

Comments
 (0)