🟢 piker/ui/_window.py for window geometry persistence

🛠️ piker/ui/_window.py -> Save and restore window size between sessions
🛠️ piker/ui/qt.py -> Added QSettings import for configuration management
macos_fixed_with_readme
wygud 2025-10-05 17:09:31 -04:00
parent 5e3cd1fc6b
commit 18b66e5506
2 changed files with 14 additions and 0 deletions

View File

@ -37,6 +37,7 @@ from piker.ui.qt import (
QStatusBar,
QScreen,
QCloseEvent,
QSettings,
)
from ..log import get_logger
from ._style import _font_small, hcolor
@ -181,6 +182,13 @@ class MainWindow(QMainWindow):
self._status_label: QLabel = None
self._size: tuple[int, int] | None = None
# restore window geometry from previous session
settings = QSettings('pikers', 'piker')
geometry = settings.value('windowGeometry')
if geometry is not None:
self.restoreGeometry(geometry)
log.debug('Restored window geometry from previous session')
@property
def mode_label(self) -> QLabel:
@ -217,6 +225,11 @@ class MainWindow(QMainWindow):
'''Cancel the root actor asap.
'''
# save window geometry for next session
settings = QSettings('pikers', 'piker')
settings.setValue('windowGeometry', self.saveGeometry())
log.debug('Saved window geometry for next session')
# raising KBI seems to get intercepted by by Qt so just use the system.
os.kill(os.getpid(), signal.SIGINT)

View File

@ -44,6 +44,7 @@ from PyQt6.QtCore import (
QItemSelectionModel,
pyqtBoundSignal,
pyqtRemoveInputHook,
QSettings,
)
align_flag: EnumType = Qt.AlignmentFlag