Abuse-Schutz fertig

Dieser Commit ist enthalten in:
Claude Project Manager
2025-11-10 03:09:35 +01:00
Ursprung 52dc7b262a
Commit 14eefa18f6
13 geänderte Dateien mit 553 neuen und 33 gelöschten Zeilen

Datei anzeigen

@ -11,7 +11,7 @@ from PyQt5.QtWidgets import (
QCheckBox, QComboBox, QPushButton, QProgressBar,
QMessageBox, QSizePolicy, QSpacerItem
)
from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtCore import Qt, pyqtSignal, QTimer
logger = logging.getLogger("generator_tab")
@ -34,6 +34,14 @@ class GeneratorTab(QWidget):
self.language_manager.language_changed.connect(self.update_texts)
self.update_texts()
# Feature 5: Timer für periodische Guard-Status-Prüfung
self.guard_check_timer = QTimer()
self.guard_check_timer.timeout.connect(self.update_button_states)
self.guard_check_timer.start(2000) # Alle 2 Sekunden prüfen
# Feature 5: Initiale Button-Status-Prüfung nach UI-Initialisierung
self.update_button_states()
def init_ui(self):
"""Initialisiert die Benutzeroberfläche."""
layout = QVBoxLayout(self)
@ -114,9 +122,18 @@ class GeneratorTab(QWidget):
def on_start_clicked(self):
"""Wird aufgerufen, wenn der Start-Button geklickt wird."""
# Feature 5: Prüfe Guard-Status vor Start
from utils.process_guard import get_guard
guard = get_guard()
can_start, error_msg = guard.can_start("Account-Erstellung", "Unknown")
if not can_start:
self.show_error(error_msg)
return
# Parameter sammeln
params = self.get_params()
# Eingaben validieren
valid, error_msg = self.validate_inputs(params)
if not valid:
@ -125,7 +142,7 @@ class GeneratorTab(QWidget):
# Status aktualisieren
self.set_status("Starte Account-Erstellung...")
# Signal auslösen
self.start_requested.emit(params)
@ -237,15 +254,53 @@ class GeneratorTab(QWidget):
def set_running(self, running: bool):
"""Setzt den Status auf 'Wird ausgeführt' oder 'Bereit'."""
self.start_button.setEnabled(not running)
self.stop_button.setEnabled(running)
# Feature 5: Prüfe Guard-Status bevor Buttons aktiviert werden
if not running:
# Prozess ist beendet, prüfe ob Guard erlaubt
self.update_button_states()
else:
# Prozess läuft
self.start_button.setEnabled(False)
self.stop_button.setEnabled(True)
if running:
self.set_status("Läuft...")
else:
self.progress_bar.setValue(0)
self.progress_bar.hide()
def update_button_states(self):
"""
Feature 5: Aktualisiert Button-Status basierend auf Process Guard.
Deaktiviert Buttons wenn Guard locked ist oder Pause aktiv ist.
"""
from utils.process_guard import get_guard
guard = get_guard()
# Prüfe ob blockiert
is_locked = guard.is_locked()
is_paused = guard.is_paused()
is_blocked = is_locked or is_paused
# Buttons entsprechend setzen
self.start_button.setEnabled(not is_blocked)
self.stop_button.setEnabled(False) # Stop nur wenn running
# Tooltip setzen
if is_blocked:
status_msg = guard.get_status_message()
self.start_button.setToolTip(f"{status_msg}")
else:
# Reset Tooltip
if self.language_manager:
tooltip = self.language_manager.get_text(
"buttons.create",
"Account erstellen"
)
else:
tooltip = "Account erstellen"
self.start_button.setToolTip(tooltip)
def set_progress(self, value: int):
"""Setzt den Fortschritt der Fortschrittsanzeige."""
if value > 0: