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.IDialogCevirici.IDialogCevirici import IDialogCevirici

debugging = False
if debugging:
    from win32com.server.dispatcher import DefaultDebugDispatcher

    useDispatcher = DefaultDebugDispatcher
else:
    useDispatcher = None


class FikoYTDialogCevirici():
    """
    FikoYT Dialog Çevirici - CATIA COM Kaydı

    WRL dosya dönüştürme servisi için PyQt6 dialog arayüzü.
    CATIA makrosu CreateObject("FikoYT.IDialogCevirici") ile çağırılır.

    HTTP Server üzerinden dosya dönüştürme istekleri alır.
    """

    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
    _reg_desc_ = "FikoYT - Dialog Çevirici (WRL Dönüştürme Servisi)"
    _reg_clsid_ = "{D9A7E3F2-8C5B-4E1A-9F3D-2B6C8A4E7D1F}"
    _reg_progid_ = "FikoYT.IDialogCevirici"
    _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
        dialog = IDialogCevirici(Catia=win32com.client.Dispatch(Catia1))
        dialog.show()


if __name__ == '__main__':
    import win32com.server.register

    # COM kaydını yap
    win32com.server.register.UseCommandLine(FikoYTDialogCevirici)

    # Test modu - CATIA açıksa dialog'u başlat
    try:
        app = QApplication(sys.argv)
        app.setStyle("fusion")
        dialog = IDialogCevirici(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
        print(f"Test modu başlatılamadı (normal): {e}")
        pass
