"""
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_())
