Files
AccountForger-neuerUpload/views/about_dialog.py
Claude Project Manager 2644c4e111 DarkMode ist existent yeah
2025-08-10 17:46:30 +02:00

123 Zeilen
4.8 KiB
Python

from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QPushButton
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QIcon
import os
from updates.version import get_version
class AboutDialog(QDialog):
"""Dialog that shows information about the application."""
def __init__(self, language_manager=None, parent=None):
super().__init__(parent)
# Remove the standard "?" help button that appears on some platforms
self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)
self.language_manager = language_manager
self.theme_manager = None
# Try to get theme manager from parent (MainWindow)
if parent and hasattr(parent, 'theme_manager'):
self.theme_manager = parent.theme_manager
self._setup_ui()
if self.language_manager:
self.language_manager.language_changed.connect(self.update_texts)
self.update_texts()
def _setup_ui(self):
self.setWindowTitle("About")
# Dialog-Größe festlegen
self.setFixedSize(550, 450) # Fixed size for consistent appearance
layout = QVBoxLayout(self)
layout.setContentsMargins(20, 20, 40, 40) # Less margin on top/left for logo
layout.setSpacing(25)
# Add logo in top-left corner
logo_label = QLabel()
logo_label.setAlignment(Qt.AlignLeft) # Align left instead of center
# Get the theme-aware logo path
if self.theme_manager:
# Use theme manager to get correct logo based on current theme
logo_path = self.theme_manager.get_icon_path("intelsight-logo")
else:
# Fallback to light logo if no theme manager
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(current_dir)
logo_path = os.path.join(parent_dir, "resources", "icons", "intelsight-logo.svg")
if os.path.exists(logo_path):
# Load logo and display it at a smaller size for corner placement
logo_pixmap = QPixmap(logo_path)
# Scale the logo smaller for top-left corner
scaled_pixmap = logo_pixmap.scaled(
200, 60, # Smaller size for corner placement
Qt.KeepAspectRatio,
Qt.SmoothTransformation
)
logo_label.setPixmap(scaled_pixmap)
logo_label.setFixedSize(scaled_pixmap.size())
else:
# Fallback if logo not found
logo_label.setText("IntelSight")
logo_label.setStyleSheet("font-size: 18px; font-weight: bold;")
# Logo in top-left corner
layout.addWidget(logo_label, 0, Qt.AlignLeft | Qt.AlignTop)
# Add some space after logo
layout.addSpacing(20)
self.info_label = QLabel()
self.info_label.setAlignment(Qt.AlignCenter)
self.info_label.setWordWrap(True)
self.info_label.setMaximumWidth(450) # Maximale Breite für bessere Lesbarkeit
layout.addWidget(self.info_label, 1, Qt.AlignCenter) # Use stretch factor 1
# Spacer für bessere vertikale Verteilung
layout.addStretch()
self.close_button = QPushButton("OK")
self.close_button.clicked.connect(self.accept)
self.close_button.setFixedWidth(100) # Feste Breite für Button
layout.addWidget(self.close_button, 0, Qt.AlignCenter)
def update_texts(self):
version_text = (
self.language_manager.get_text("main.version", f"Version {get_version()}")
if self.language_manager
else f"Version {get_version()}"
)
lm = self.language_manager
title = "AccountForger" if not lm else lm.get_text("main.title", "AccountForger")
support = (
lm.get_text(
"about_dialog.support",
"Für Support kontaktieren Sie uns unter: support@intelsight.de",
)
if lm
else "Für Support kontaktieren Sie uns unter: support@intelsight.de"
)
license_text = (
lm.get_text(
"about_dialog.license",
"Diese Software ist lizenzpflichtig und darf nur mit gültiger Lizenz verwendet werden.",
)
if lm
else "Diese Software ist lizenzpflichtig und darf nur mit gültiger Lizenz verwendet werden."
)
lines = [
f"<h2>{title}</h2>",
f"<p>{version_text}</p>",
"<p>© 2025 IntelSight UG (haftungsbeschränkt)</p>",
f"<p>{support}</p>",
f"<p>{license_text}</p>",
]
self.info_label.setText("".join(lines))
if lm:
self.setWindowTitle(lm.get_text("menu.about", "Über"))
self.close_button.setText(lm.get_text("buttons.ok", "OK"))