Adding splitter and saving layout state when closing the app

This commit is contained in:
2025-12-08 22:40:07 +02:00
parent bb26d43dd7
commit f84dea0bff
2 changed files with 121 additions and 27 deletions

View File

@@ -13,7 +13,7 @@ from PySide6.QtWidgets import (
QVBoxLayout,
QLabel,
)
from PySide6.QtCore import Qt, QTimer
from PySide6.QtCore import Qt, QTimer, QSettings
from PySide6.QtGui import QAction, QKeySequence
from src.database.db_manager import DatabaseManager
@@ -52,8 +52,8 @@ class MainWindow(QMainWindow):
self._create_tab_widget()
self._create_status_bar()
# Center window on screen
self._center_window()
# Restore window geometry or center window on screen
self._restore_window_state()
logger.info("Main window initialized")
@@ -156,6 +156,24 @@ class MainWindow(QMainWindow):
(screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2
)
def _restore_window_state(self):
"""Restore window geometry from settings or center window."""
settings = QSettings("microscopy_app", "object_detection")
geometry = settings.value("main_window/geometry")
if geometry:
self.restoreGeometry(geometry)
logger.debug("Restored window geometry from settings")
else:
self._center_window()
logger.debug("Centered window on screen")
def _save_window_state(self):
"""Save window geometry to settings."""
settings = QSettings("microscopy_app", "object_detection")
settings.setValue("main_window/geometry", self.saveGeometry())
logger.debug("Saved window geometry to settings")
def _show_settings(self):
"""Show settings dialog."""
logger.info("Opening settings dialog")
@@ -276,6 +294,13 @@ class MainWindow(QMainWindow):
)
if reply == QMessageBox.Yes:
# Save window state before closing
self._save_window_state()
# Save annotation tab state if it exists
if hasattr(self, "annotation_tab"):
self.annotation_tab.save_state()
logger.info("Application closing")
event.accept()
else: