Initial commit
Dieser Commit ist enthalten in:
148
views/platform_selector.py
Normale Datei
148
views/platform_selector.py
Normale Datei
@ -0,0 +1,148 @@
|
||||
# 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")
|
||||
)
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren