#!/usr/bin/env python

import sys
import os
from pathlib import Path

# Add the project paths
_current_dir = os.path.dirname(os.path.abspath(__file__))
_project_root = os.path.dirname(os.path.dirname(os.path.dirname(_current_dir)))
sys.path.insert(0, _project_root)
sys.path.insert(0, _current_dir)

print("Testing signal connections...")

try:
    from PyQt6.QtWidgets import QApplication
    from PyQt6.QtCore import QTimer
    print("[OK] PyQt6 import successful")
except ImportError as e:
    print(f"[ERROR] PyQt6 import error: {e}")
    sys.exit(1)

try:
    from IFikoCikariciDialog import IFikoCikariciDialog
    print("[OK] IFikoCikariciDialog import successful")
except ImportError as e:
    print(f"[ERROR] IFikoCikariciDialog import error: {e}")
    sys.exit(1)

# Create a mock CATIA object to test initialization
class MockCatia:
    def __init__(self):
        self.durumCubugu = ""

    class MockDocument:
        def __init__(self):
            self.turu = ".CATPART"

        class MockSelections:
            def __init__(self):
                pass
            def sec2(self, types, Mesaj=""):
                return "Normal"  # Simulate successful selection
            def item2(self, index):
                return MockSelectionItem()

        class MockSelectionItem:
            def __init__(self):
                self.nesne = MockSelectionObject()

        class MockSelectionObject:
            def __init__(self):
                self.catNesne = MockAxisSystem()

        class MockAxisSystem:
            pass

        @property
        def secililer(self):
            return self.MockSelections()

        @property
        def klasoru(self):
            return "D:\\test"

        @property
        def aktifDokuman(self):
            return self

        class MockDocument:
            def __init__(self):
                self.klasoru = "D:\\test"

    @property
    def aktifDokuman(self):
        return self.MockDocument()

try:
    app = QApplication(sys.argv)
    print("[OK] QApplication created")

    # Test with mock CATIA
    mock_catia = MockCatia()
    print("[OK] Mock CATIA created")

    # Try to create dialog (this should work with mock)
    dialog = IFikoCikariciDialog(Catia=mock_catia)
    print("[OK] Dialog created with mock CATIA")

    # Test signal connections
    print("[OK] Testing signal connections...")

    # Check if the widgets exist
    if hasattr(dialog.ui, 'comboMalzeme'):
        print("[OK] comboMalzeme widget exists")
        # Test connecting the signal (this might cause issues)
        try:
            dialog.ui.comboMalzeme.currentTextChanged.connect(dialog._on_comboMalzeme_changed)
            print("[OK] comboMalzeme signal connected successfully")
        except Exception as e:
            print(f"[ERROR] comboMalzeme signal connection failed: {e}")

    if hasattr(dialog.ui, 'spinYoğunluk'):
        print("[OK] spinYoğunluk widget exists")
        try:
            dialog.ui.spinYoğunluk.valueChanged.connect(dialog._on_spinYoğunluk_changed)
            print("[OK] spinYoğunluk signal connected successfully")
        except Exception as e:
            print(f"[ERROR] spinYoğunluk signal connection failed: {e}")

    if hasattr(dialog.ui, 'btnEksenSec'):
        print("[OK] btnEksenSec widget exists")
        try:
            dialog.ui.btnEksenSec.clicked.connect(dialog._on_btnEksenSec_clicked)
            print("[OK] btnEksenSec signal connected successfully")
        except Exception as e:
            print(f"[ERROR] btnEksenSec signal connection failed: {e}")

    if hasattr(dialog.ui, 'btnBodySec'):
        print("[OK] btnBodySec widget exists")
        try:
            dialog.ui.btnBodySec.clicked.connect(dialog._on_btnBodySec_clicked)
            print("[OK] btnBodySec signal connected successfully")
        except Exception as e:
            print(f"[ERROR] btnBodySec signal connection failed: {e}")

    # Close the dialog immediately to prevent it from staying open
    QTimer.singleShot(100, lambda: (print("[OK] Dialog closed"), app.quit()))
    print("[OK] Test setup completed successfully")

except Exception as e:
    print(f"[ERROR] Test failed: {e}")
    import traceback
    traceback.print_exc()

sys.exit(app.exec())