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"
{version_text}
", "© 2025 IntelSight UG (haftungsbeschränkt)
", f"{support}
", f"{license_text}
", ] 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"))