From db5a8b5fbc5ed92e9742d8fc0ddb8a7864d2dd5e Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Tue, 27 May 2025 20:48:21 +0200 Subject: [PATCH] Thema-Wechsel --- src/MainWindow.py | 58 ++++++++++++++++++++++++++++++++++++++-- src/ui/MainWinddow.ui | 6 +++++ src/ui/MainWinddow_ui.py | 4 +++ 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/src/MainWindow.py b/src/MainWindow.py index 60ccad0..db8b575 100644 --- a/src/MainWindow.py +++ b/src/MainWindow.py @@ -3,8 +3,8 @@ import os import pymupdf # PyMuPDF from PySide6.QtCore import Qt -from PySide6.QtGui import QCursor, QPixmap, QImage, QPainter -from PySide6.QtWidgets import QLabel, QMainWindow +from PySide6.QtGui import QCursor, QPixmap, QImage, QPainter, QAction +from PySide6.QtWidgets import QLabel, QMainWindow, QApplication, QStyleFactory from ui.MainWinddow_ui import Ui_MainWindow @@ -40,12 +40,66 @@ class MainWindow(QMainWindow): self.drag_threshold = 3 # Mindestbewegung in Pixeln vor dem Scrollen self.scroll_sensitivity = 0.7 # Reduzierte Empfindlichkeit für sanfteres Scrollen + # Theme-Menü initialisieren + self._setup_theme_menu() + # Bilder laden self._load_images() # Signale und Slots verbinden self._connect_signals() + def _setup_theme_menu(self): + """Initialisiert das Theme-Menü mit verfügbaren Themes.""" + # Hole alle verfügbaren Themes + available_themes = QStyleFactory.keys() + current_theme = QApplication.style().objectName() + + print(f"Verfügbare Themes: {available_themes}") + print(f"Aktuelles Theme: {current_theme}") + + # Füge Theme-Aktionen zum Menü hinzu + for theme_name in available_themes: + action = QAction(theme_name, self) + action.setCheckable(True) + + # Markiere das aktuelle Theme + if theme_name.lower() == current_theme.lower(): + action.setChecked(True) + + # Verbinde die Aktion mit der Theme-Wechsel-Funktion + action.triggered.connect(lambda checked, theme=theme_name: self.change_theme(theme)) + + # Füge die Aktion zum Theme-Menü hinzu + self.ui.menuThema.addAction(action) + + def change_theme(self, theme_name): + """ + Wechselt das Theme der Anwendung. + + Args: + theme_name: Name des zu verwendenden Themes + """ + print(f"Wechsle zu Theme: {theme_name}") + + try: + # Erstelle den neuen Style + style = QStyleFactory.create(theme_name) + if style: + # Wende den neuen Style auf die Anwendung an + QApplication.setStyle(style) + + # Aktualisiere die Checkmarks im Menü + for action in self.ui.menuThema.actions(): + action.setChecked(action.text() == theme_name) + + print(f"Theme erfolgreich gewechselt zu: {theme_name}") + else: + print(f"Fehler: Theme '{theme_name}' konnte nicht erstellt werden") + + except Exception as e: + print(f"Fehler beim Wechseln des Themes: {e}") + def _load_images(self): """Lädt PDF-Seiten aus den drei Unterordnern ref, diff und new.""" # Entferne bestehende Widgets aus den Layouts diff --git a/src/ui/MainWinddow.ui b/src/ui/MainWinddow.ui index 905021b..c5999d2 100644 --- a/src/ui/MainWinddow.ui +++ b/src/ui/MainWinddow.ui @@ -322,7 +322,13 @@ + + + Thema + + + diff --git a/src/ui/MainWinddow_ui.py b/src/ui/MainWinddow_ui.py index 2393ac1..15fefd7 100644 --- a/src/ui/MainWinddow_ui.py +++ b/src/ui/MainWinddow_ui.py @@ -221,12 +221,15 @@ class Ui_MainWindow(object): self.menubar.setGeometry(QRect(0, 0, 1263, 33)) self.menuProjekt = QMenu(self.menubar) self.menuProjekt.setObjectName(u"menuProjekt") + self.menuThema = QMenu(self.menubar) + self.menuThema.setObjectName(u"menuThema") MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName(u"statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar.addAction(self.menuProjekt.menuAction()) + self.menubar.addAction(self.menuThema.menuAction()) self.menuProjekt.addAction(self.actionNeu) self.menuProjekt.addAction(self.action_ffnen) self.menuProjekt.addSeparator() @@ -259,5 +262,6 @@ class Ui_MainWindow(object): self.label_3.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None)) self.label_4.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None)) self.menuProjekt.setTitle(QCoreApplication.translate("MainWindow", u"Projekt", None)) + self.menuThema.setTitle(QCoreApplication.translate("MainWindow", u"Thema", None)) # retranslateUi