# Path: views/platform_selector.py """ Plattformauswahl-Widget für die Social Media Account Generator Anwendung. """ import os from PyQt5.QtWidgets import ( QWidget, QVBoxLayout, QGridLayout, QLabel, QHBoxLayout ) from PyQt5.QtCore import pyqtSignal, Qt, QSize from PyQt5.QtGui import QFont from views.widgets.platform_button import PlatformButton from views.widgets.language_dropdown import LanguageDropdown from views.tabs.accounts_tab import AccountsTab class PlatformSelector(QWidget): """Widget zur Auswahl der Plattform.""" # Signal wird ausgelöst, wenn eine Plattform ausgewählt wird platform_selected = pyqtSignal(str) def __init__(self, language_manager=None, db_manager=None): super().__init__() self.language_manager = language_manager self.db_manager = db_manager self.init_ui() if self.language_manager: self.language_manager.language_changed.connect(self.update_texts) self.update_texts() def init_ui(self): """Initialisiert die Benutzeroberfläche.""" main_layout = QHBoxLayout(self) main_layout.setContentsMargins(20, 20, 20, 20) # ----------------------------- # Linke Seite: Plattformwahl # ----------------------------- left_widget = QWidget() left_layout = QVBoxLayout(left_widget) self.title_label = QLabel("Social Media Account Generator") self.title_label.setAlignment(Qt.AlignCenter) title_font = QFont() title_font.setPointSize(18) title_font.setBold(True) self.title_label.setFont(title_font) left_layout.addWidget(self.title_label) self.subtitle_label = QLabel("Wählen Sie eine Plattform") self.subtitle_label.setAlignment(Qt.AlignCenter) subtitle_font = QFont() subtitle_font.setPointSize(12) self.subtitle_label.setFont(subtitle_font) left_layout.addWidget(self.subtitle_label) platforms_container = QWidget() grid_layout = QGridLayout(platforms_container) grid_layout.setSpacing(40) # Definiere verfügbare Plattformen platforms = [ {"name": "Instagram", "enabled": True}, {"name": "Facebook", "enabled": True}, {"name": "TikTok", "enabled": True}, {"name": "Twitter", "enabled": True}, {"name": "VK", "enabled": True} ] # Relativer Pfad zu den Icons - vom aktuellen Verzeichnis aus current_dir = os.path.dirname(os.path.abspath(__file__)) parent_dir = os.path.dirname(current_dir) icons_dir = os.path.join(parent_dir, "resources", "icons") # Platziere Buttons in einem 2x3 Grid for i, platform in enumerate(platforms): row = i // 3 col = i % 3 # Icon-Pfad erstellen icon_path = os.path.join(icons_dir, f"{platform['name'].lower()}.svg") # Verwende das Icon nur, wenn die Datei existiert if not os.path.exists(icon_path): icon_path = None button = PlatformButton( platform["name"], icon_path, platform["enabled"] ) button.clicked.connect(lambda checked=False, p=platform["name"]: self.platform_selected.emit(p.lower())) grid_layout.addWidget(button, row, col, Qt.AlignCenter) left_layout.addWidget(platforms_container) left_layout.addStretch() # ----------------------------- # Rechte Seite: Übersicht # ----------------------------- right_widget = QWidget() right_layout = QVBoxLayout(right_widget) header_right_layout = QHBoxLayout() header_right_layout.addStretch() if self.language_manager: self.language_dropdown = LanguageDropdown(self.language_manager) header_right_layout.addWidget(self.language_dropdown) right_layout.addLayout(header_right_layout) self.overview_label = QLabel("Übersicht") self.overview_label.setAlignment(Qt.AlignCenter) ov_font = QFont() ov_font.setPointSize(14) ov_font.setBold(True) self.overview_label.setFont(ov_font) right_layout.addWidget(self.overview_label) self.accounts_tab = AccountsTab(None, self.db_manager, self.language_manager) right_layout.addWidget(self.accounts_tab) main_layout.addWidget(left_widget) main_layout.addWidget(right_widget) def load_accounts(self): """Lädt die Konten in der Übersicht neu.""" if hasattr(self, "accounts_tab"): self.accounts_tab.load_accounts() def update_texts(self): """Aktualisiert die Texte gemäß der aktuellen Sprache.""" if not self.language_manager: return self.title_label.setText( self.language_manager.get_text("main.title", "Social Media Account Generator") ) self.subtitle_label.setText( self.language_manager.get_text("main.subtitle", "Wählen Sie eine Plattform") ) self.overview_label.setText( self.language_manager.get_text("main.overview", "Übersicht") )