Adding splitter and saving layout state when closing the app
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user