Files
Geniusia_v2/test_logs_panel_visual.py
2026-03-05 00:20:25 +01:00

114 lines
4.2 KiB
Python

"""
Test visuel du LogsPanel - Démontre toutes les fonctionnalités
"""
import sys
sys.path.insert(0, 'geniusia2')
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton, QHBoxLayout
from PyQt5.QtCore import QTimer
from gui.logs_panel import LogsPanel
class TestWindow(QMainWindow):
"""Fenêtre de test pour le LogsPanel"""
def __init__(self):
super().__init__()
self.setWindowTitle("Test LogsPanel - Amélioration GUI et Logs")
self.setGeometry(100, 100, 500, 600)
# Widget central
central_widget = QWidget()
self.setCentralWidget(central_widget)
# Layout principal
main_layout = QVBoxLayout()
central_widget.setLayout(main_layout)
# Créer le panneau de logs
self.logs_panel = LogsPanel()
main_layout.addWidget(self.logs_panel)
# Boutons de test
button_layout = QHBoxLayout()
add_log_btn = QPushButton("Ajouter Log Info")
add_log_btn.clicked.connect(lambda: self.logs_panel.add_log(
"J'observe vos actions dans Calculator", "👀", "info"
))
button_layout.addWidget(add_log_btn)
add_success_btn = QPushButton("Ajouter Success")
add_success_btn.clicked.connect(lambda: self.logs_panel.add_log(
"Pattern détecté: Calculer 9/9", "🎯", "success"
))
button_layout.addWidget(add_success_btn)
add_warning_btn = QPushButton("Ajouter Warning")
add_warning_btn.clicked.connect(lambda: self.logs_panel.add_log(
"Application non autorisée", "⚠️", "warning"
))
button_layout.addWidget(add_warning_btn)
add_error_btn = QPushButton("Ajouter Error")
add_error_btn.clicked.connect(lambda: self.logs_panel.add_log(
"Impossible de se connecter", "", "error"
))
button_layout.addWidget(add_error_btn)
main_layout.addLayout(button_layout)
# Boutons de contrôle
control_layout = QHBoxLayout()
add_many_btn = QPushButton("Ajouter 35 Logs (Test limite 30)")
add_many_btn.clicked.connect(self.add_many_logs)
control_layout.addWidget(add_many_btn)
clear_btn = QPushButton("Effacer Tous")
clear_btn.clicked.connect(self.logs_panel.clear)
control_layout.addWidget(clear_btn)
main_layout.addLayout(control_layout)
# Ajouter quelques logs initiaux
self.add_initial_logs()
def add_initial_logs(self):
"""Ajoute quelques logs initiaux pour démonstration"""
self.logs_panel.add_log("Système démarré en mode Shadow", "👀", "info")
self.logs_panel.add_log("J'observe vos actions dans Calculator", "👀", "info")
self.logs_panel.add_log("Tiens ! Vous avez fait 3 fois la même chose", "🎯", "success")
self.logs_panel.add_log("J'apprends: Calculer 9/9 (5 observations)", "📚", "info")
self.logs_panel.add_log("Mode Suggestions activé", "", "success")
def add_many_logs(self):
"""Ajoute beaucoup de logs pour tester la limite de 30"""
for i in range(35):
self.logs_panel.add_log(f"Message de test #{i+1}", "📝", "info")
# Vérifier le nombre de logs
count = self.logs_panel.get_log_count()
print(f"Nombre de logs après ajout de 35: {count}")
print(f"✓ Limite de 30 respectée: {count == 30}")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = TestWindow()
window.show()
print("="*60)
print("Test Visuel du LogsPanel")
print("="*60)
print("\nFonctionnalités à tester:")
print("1. Ajout de logs avec différents niveaux (info, success, warning, error)")
print("2. Scroll automatique quand on est en bas")
print("3. Pas de scroll automatique si on scrolle manuellement vers le haut")
print("4. Limite de 30 messages (les plus anciens sont supprimés)")
print("5. Effacement de tous les logs")
print("\nUtilisez les boutons pour tester les fonctionnalités!")
print("="*60)
sys.exit(app.exec_())