Files
AccountForger-neuerUpload/views/about_dialog.py
Claude Project Manager 04585e95b6 Initial commit
2025-08-01 23:50:28 +02:00

112 Zeilen
4.3 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._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 für bessere Zentrierung
self.setMinimumWidth(500)
self.setMinimumHeight(400)
layout = QVBoxLayout(self)
layout.setContentsMargins(30, 30, 30, 30)
layout.setSpacing(20)
layout.setAlignment(Qt.AlignCenter) # Layout auch zentrieren
# Add logo
logo_label = QLabel()
logo_label.setAlignment(Qt.AlignCenter)
# Get the logo path
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 larger size
logo_pixmap = QPixmap(logo_path)
# Scale the logo to a reasonable size while maintaining aspect ratio
scaled_pixmap = logo_pixmap.scaled(
300, 120, # Etwas kleiner für bessere Proportionen
Qt.KeepAspectRatio,
Qt.SmoothTransformation
)
logo_label.setPixmap(scaled_pixmap)
# Feste Größe für das Label setzen, um Zentrierung zu gewährleisten
logo_label.setFixedSize(scaled_pixmap.size())
else:
# Fallback if logo not found
logo_label.setText("IntelSight")
logo_label.setStyleSheet("font-size: 24px; font-weight: bold;")
# Logo mit Alignment hinzufügen
layout.addWidget(logo_label, 0, Qt.AlignCenter)
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, 0, Qt.AlignCenter)
# 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"))