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 @@
+
+
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