102 Zeilen
3.2 KiB
Python
102 Zeilen
3.2 KiB
Python
"""
|
|
Tab Navigation Component nach Styleguide
|
|
"""
|
|
|
|
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QPushButton, QLabel
|
|
from PyQt5.QtCore import pyqtSignal, Qt
|
|
from PyQt5.QtGui import QFont
|
|
|
|
|
|
class TabNavigation(QWidget):
|
|
"""
|
|
Tab-Navigation nach Styleguide mit zwei Modi:
|
|
- Plattformen (Standard)
|
|
- Accounts
|
|
"""
|
|
|
|
# Signal wird ausgelöst wenn Tab gewechselt wird (0=Plattformen, 1=Accounts)
|
|
tab_changed = pyqtSignal(int)
|
|
|
|
def __init__(self, language_manager=None):
|
|
super().__init__()
|
|
self.language_manager = language_manager
|
|
self.current_tab = 0
|
|
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 UI nach Styleguide"""
|
|
# Feste Höhe nach Styleguide
|
|
self.setFixedHeight(48)
|
|
|
|
# Set object name for QSS targeting - NO inline styles!
|
|
self.setObjectName("tab_navigation")
|
|
|
|
# Layout
|
|
layout = QHBoxLayout(self)
|
|
layout.setContentsMargins(40, 0, 40, 0)
|
|
layout.setSpacing(24)
|
|
|
|
# Tab Buttons erstellen
|
|
self.platform_tab = self._create_tab_button("Plattformen", True)
|
|
self.platform_tab.clicked.connect(lambda: self._on_tab_clicked(0))
|
|
layout.addWidget(self.platform_tab)
|
|
|
|
# Accounts Tab (ohne Badge)
|
|
self.accounts_tab = self._create_tab_button("Accounts", False)
|
|
self.accounts_tab.clicked.connect(lambda: self._on_tab_clicked(1))
|
|
layout.addWidget(self.accounts_tab)
|
|
|
|
# Spacer
|
|
layout.addStretch()
|
|
|
|
def _create_tab_button(self, text, active=False):
|
|
"""Erstellt einen Tab-Button nach Styleguide"""
|
|
btn = QPushButton(text)
|
|
btn.setCheckable(True)
|
|
btn.setChecked(active)
|
|
btn.setCursor(Qt.PointingHandCursor)
|
|
|
|
# Poppins Font
|
|
font = QFont("Poppins", 15)
|
|
font.setWeight(QFont.Medium)
|
|
btn.setFont(font)
|
|
|
|
# No inline styles - handled by QSS generator
|
|
|
|
return btn
|
|
|
|
def _on_tab_clicked(self, index):
|
|
"""Behandelt Tab-Klicks"""
|
|
if self.current_tab != index:
|
|
self.current_tab = index
|
|
|
|
# Update button states
|
|
self.platform_tab.setChecked(index == 0)
|
|
self.accounts_tab.setChecked(index == 1)
|
|
|
|
# Emit signal
|
|
self.tab_changed.emit(index)
|
|
|
|
def set_active_tab(self, index):
|
|
"""Setzt den aktiven Tab programmatisch"""
|
|
self._on_tab_clicked(index)
|
|
|
|
def update_account_count(self, count):
|
|
"""Deprecated: Account-Anzahl wird nicht mehr im Tab angezeigt"""
|
|
pass
|
|
|
|
def update_texts(self):
|
|
"""Aktualisiert die Texte gemäß der aktuellen Sprache"""
|
|
if not self.language_manager:
|
|
return
|
|
|
|
self.platform_tab.setText(
|
|
self.language_manager.get_text("platform_selector.platforms_tab", "Plattformen")
|
|
)
|
|
self.accounts_tab.setText(
|
|
self.language_manager.get_text("platform_selector.accounts_tab", "Accounts")
|
|
) |