import inspect
import os
import sys

import pythoncom
import win32com.client
from PyQt6.QtWidgets import QApplication

sys.path.append(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()) + "\\..\\..")))
from IDialoglar.IFikoCikariciDialog.IFikoCikariciDialog import IFikoCikariciDialog

debugging = False
if debugging:
    from win32com.server.dispatcher import DefaultDebugDispatcher

    useDispatcher = DefaultDebugDispatcher
else:
    useDispatcher = None


class FikoYTCikariciDialog():
    """
    FikoYT Çıkarıcı Dialog - CATIA COM Kaydı

    WRL dosyaları, resimler ve dokümantasyon çıkartma işlemleri için PyQt6 dialog arayüzü.
    CATIA makrosu CreateObject("FikoYT.IFikoCikariciDialog") ile çağırılır.
    """

    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
    _reg_desc_ = "FikoYT - Çıkarıcı Dialog (WRL, Resim, Dokümantasyon)"
    _reg_clsid_ = "{F2E4C6A8-B1D5-49E8-92F1-C3D7E9B2A4F6}"
    _reg_progid_ = "FikoYT.IFikoCikariciDialog"
    _public_methods_ = ['Calistir']
    _public_attrs_ = []

    def Calistir(self, Catia1):
        """
        CATIA'dan çağrılır. Dialog penceresini gösterir.

        Args:
            Catia1: CATIA COM Application nesnesi (zaten dispatch edilmiş)
        """
        # CATIA COM nesnesini sarmalı dialog sınıfına geçir
        # Catia1 zaten COM nesnesidir, tekrar Dispatch etmeye gerek yok
        dialog = IFikoCikariciDialog(Catia=win32com.client.Dispatch(Catia1))
        dialog.show()


if __name__ == '__main__':
    import win32com.server.register

    win32com.server.register.UseCommandLine(FikoYTCikariciDialog)

    # dialog = win32com.client.Dispatch("FikoYT.IFikoCikariciDialog")
    # dialog.Calistir(win32com.client.Dispatch("Catia.Application"))
    # Eğer CATIA açıksa test et
    try:
        app = QApplication(sys.argv)
        app.setStyle("fusion")
        dialog = IFikoCikariciDialog(Catia=win32com.client.Dispatch("Catia.Application"))
        dialog.show()
        sys.exit(app.exec())
    except Exception as e:
        # CATIA kapalı veya hata - registration yapıldığı için tamam
        pass
