import sys
import subprocess
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
from PyQt6.QtCore import Qt
import tobii_research as tr  # Importar Tobii Pro SDK

# Funciones para ejecutar los tests de PyGaze
def run_test_1():
    subprocess.run(['python', 'test_1.py'])

def run_test_2():
    subprocess.run(['python', 'test_2.py'])

def calibrate_tobii():
    # Detectar el dispositivo Tobii Pro Fusion
    found_eyes = tr.find_all_eyetrackers()

    if len(found_eyes) == 0:
        print("No se encontró ningún dispositivo Tobii Pro.")
        return

    # Obtener el primer dispositivo disponible
    eye_tracker = found_eyes[0]
    print(f"Dispositivo encontrado: {eye_tracker}")

    # Iniciar la calibración
    print("Iniciando calibración...")
    calibration = eye_tracker.calibration
    calibration.start()
    
    # Mostrar los puntos de calibración (esto puede personalizarse según tus necesidades)
    print("Realizando calibración... Siga los puntos en la pantalla.")
    calibration.collect_data()

    # Finalizar la calibración
    calibration.stop()
    print("Calibración completada.")

class MyApp(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyGaze Tests")
        self.setGeometry(100, 100, 300, 300)

        # Crear botones
        self.test_1_button = QPushButton("Ejecutar Test 1", self)
        self.test_2_button = QPushButton("Ejecutar Test 2", self)
        self.calibrate_button = QPushButton("Calibrar", self)

        # Conectar botones a las funciones
        self.test_1_button.clicked.connect(run_test_1)
        self.test_2_button.clicked.connect(run_test_2)
        self.calibrate_button.clicked.connect(calibrate_tobii)

        # Layout
        layout = QVBoxLayout()
        layout.addWidget(self.test_1_button)
        layout.addWidget(self.test_2_button)
        layout.addWidget(self.calibrate_button)

        self.setLayout(layout)

        # Estilos CSS (QSS) para decorar la ventana y los botones (sin la propiedad inválida)
        self.setStyleSheet("""
            QWidget {
                background-color: #ADD8E6;  /* Azul clarito para el fondo */
            }
            QPushButton {
                background-color: #4682B4;  /* Azul más oscuro para los botones */
                color: white;
                font-size: 14px;
                border: 2px solid #005f8a;
                padding: 10px;
                border-radius: 8px;
                text-align: center;
            }
            QPushButton:hover {
                background-color: #5a9bd5;  /* Efecto de iluminación al pasar el ratón */
            }
            QPushButton:pressed {
                background-color: #3b7bbf;  /* Cambio de color al presionar */
            }
        """)

# Ejecutar la app
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec())
