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"
{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"))