UI-Zustand beim Schließen speichern und beim Start wiederherstellen

Fenstergeometrie, Splitter-Positionen und TreeWidget-Spaltenbreiten werden jetzt in der Konfiguration gespeichert und beim nächsten Start automatisch wiederhergestellt.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-15 20:07:53 +01:00
parent e409f38da2
commit 1fc7decace
2 changed files with 48 additions and 0 deletions
+5
View File
@@ -141,6 +141,11 @@ class AppSettings(BaseSettings):
postgresql_dbs: list[PostgreSqlDb] = [] postgresql_dbs: list[PostgreSqlDb] = []
theme: str | None = None theme: str | None = None
# UI-Zustand
window_geometry: tuple[int, int, int, int] | None = None # (x, y, width, height)
splitter_sizes: list[int] | None = None # Splitter-Positionen
tree_column_widths: list[int] | None = None # TreeWidget-Spaltenbreiten
model_config = SettingsConfigDict(json_file=config_path) model_config = SettingsConfigDict(json_file=config_path)
@classmethod @classmethod
+43
View File
@@ -263,6 +263,28 @@ class MainWindow(QMainWindow):
# Drag&Drop für TreeWidget aktivieren # Drag&Drop für TreeWidget aktivieren
self._setup_drag_drop() self._setup_drag_drop()
# Gespeicherte UI-Zustände wiederherstellen
self._restore_ui_state()
def _restore_ui_state(self):
"""Stellt die gespeicherten UI-Zustände wieder her (Fenstergeometrie, Splitter, TreeWidget-Spalten)."""
global app_settings
# Fenstergeometrie wiederherstellen
if app_settings.window_geometry:
x, y, width, height = app_settings.window_geometry
self.setGeometry(x, y, width, height)
# Splitter-Positionen wiederherstellen
if app_settings.splitter_sizes:
self.ui.splitter.setSizes(app_settings.splitter_sizes)
# TreeWidget-Spaltenbreiten wiederherstellen
if app_settings.tree_column_widths:
for col_idx, width in enumerate(app_settings.tree_column_widths):
if col_idx < self.ui.treeWidget.columnCount():
self.ui.treeWidget.setColumnWidth(col_idx, width)
def _setup_theme_menu(self): def _setup_theme_menu(self):
"""Initialisiert das Theme-Menü mit verfügbaren Themes.""" """Initialisiert das Theme-Menü mit verfügbaren Themes."""
# Hole alle verfügbaren Themes # Hole alle verfügbaren Themes
@@ -3556,6 +3578,9 @@ class MainWindow(QMainWindow):
def closeEvent(self, event): def closeEvent(self, event):
"""Wird beim Schließen der Anwendung aufgerufen.""" """Wird beim Schließen der Anwendung aufgerufen."""
# UI-Zustände speichern
self._save_ui_state()
# Stoppe Hash-Berechnungs-Thread falls noch aktiv # Stoppe Hash-Berechnungs-Thread falls noch aktiv
if ( if (
hasattr(self, "hash_calculator_thread") hasattr(self, "hash_calculator_thread")
@@ -3576,3 +3601,21 @@ class MainWindow(QMainWindow):
# PDF-Dokumente schließen ist bei QtPdf automatisch durch Garbage Collection # PDF-Dokumente schließen ist bei QtPdf automatisch durch Garbage Collection
super().closeEvent(event) super().closeEvent(event)
def _save_ui_state(self):
"""Speichert die aktuellen UI-Zustände (Fenstergeometrie, Splitter, TreeWidget-Spalten)."""
global app_settings
# Fenstergeometrie speichern
geometry = self.geometry()
app_settings.window_geometry = (geometry.x(), geometry.y(), geometry.width(), geometry.height())
# Splitter-Positionen speichern
app_settings.splitter_sizes = self.ui.splitter.sizes()
# TreeWidget-Spaltenbreiten speichern
column_count = self.ui.treeWidget.columnCount()
app_settings.tree_column_widths = [self.ui.treeWidget.columnWidth(i) for i in range(column_count)]
# Konfiguration speichern
app_settings.save()