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:
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user