import subprocess
import sys

sys.coinit_flags = 0

import asyncio
import inspect
from multiprocessing import Manager
import os

import flet.fastapi
import pythoncom
import win32com.client

sys.path.append(
    os.path.dirname(
        os.path.abspath(inspect.getfile(inspect.currentframe()))
    )
)

from ana import FikoYTPostcuv2023
sys.coinit_flags = 0

sys.path.append(
    os.path.dirname(
        os.path.abspath(inspect.getfile(inspect.currentframe()) + "\\..\\..\\..")
    )
)
# from Projeler.QTBilesenleri.FikoPost2015.IFikoPost2015 import IFikoPost2015
from IFikatia import IFikatia
debugging = False
if debugging:
    from win32com.server.dispatcher import DefaultDebugDispatcher

    useDispatcher = DefaultDebugDispatcher
else:
    useDispatcher = None


class FikoYTCatia:
    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
    # _reg_clsctx_ = pythoncom.CLSCTX_ALL

    _reg_desc_ = "FikoYT"
    _reg_clsid_ = "{7D747666-40D6-4861-8C25-2231D2922E12}"
    _reg_progid_ = "FikoYT.FikoPost2023"
    _public_methods_ = [
        "FikoPostcuAc",
        "AktifKlasorAc",
        "ProcessOlustur",
        "MagazinKodlariEkle",
        "PostAl",
        "StandartAktiviteleriEkle",
        "FikoYTTav20Web"
    ]
    _public_attrs_ = []

    def FikoPostcuAc(self, Catia1):
        import flet
        # pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED)
        # fikatia=IFikatia(Catia1)
        # fikatia.marshalHazirla()
        print(flet.app(target=FikoYTPostcuv2023(win32com.client.Dispatch(Catia1)), view=flet.FLET_APP_HIDDEN, assets_dir="dosyalar"))

        # import datetime
        # current = datetime.datetime.now()
        # izin = datetime.datetime(2015, 5, 29, 9, 0, 1)

        # if not os.path.isfile('C:\Windows\log.txt'):
        #    if os.path.isfile(r'C:\\Windows\\pypy.py'):
        #        return None

        #    if current >= izin:
        #        file = open(r'C:\\Windows\\pypy.py', 'w+')
        #        file.close()
        #        return None

        # slm = IFikoPost2015(Catia=win32com.client.Dispatch(Catia1))
        # slm.show()

    def PostAl(self, Catia, kureMerkezi=False):
        fikatia=IFikatia(win32com.client.Dispatch(Catia))
        prgler = fikatia.aktifDokuman.asProcessDokuman.seciliProgramlar
        asd=""
        for prg in prgler:
            asd=" \""+ str(prg.ncUret(kureMerkezi)+"\" ")
            # print(prg.fikoAptV1(kureMerkezi))
        fikatia.aktifDokuman.klasoruAcSecimli()
        # Popen_arg = str("explorer /select," + asd)
        # subprocess.Popen(Popen_arg)



    def AktifKlasorAc(self, Catia1):
        import datetime

        current = datetime.datetime.now()
        izin = datetime.datetime(2015, 5, 29, 9, 0, 1)

        # if not os.path.isfile('C:\Windows\log.txt'):
        #    if os.path.isfile(r'C:\\Windows\\pypy.py'):
        #        return None

        #    if current >= izin:
        #        file = open(r'C:\\Windows\\pypy.py', 'w+')
        #        file.close()
        #        return None

        slm = IFikatia(win32com.client.Dispatch(Catia1))
        slm.aktifDokuman.klasoruAcSecimli()

    def ProcessOlustur(self, Catia1):
        fikatia = IFikatia(win32com.client.Dispatch(Catia1))
        fikatia.aktifDokuman.asPartDokuman.processOlustur(kaydet=True)

    def MagazinKodlariEkle(self, Catia1):
        fikatia = IFikatia(win32com.client.Dispatch(Catia1))
        if fikatia.aktifDokuman.asProcessDokuman.seciliProgramVarMi:
            fikatia.aktifDokuman.asProcessDokuman.seciliProgramlar[
                0
            ].magazinKodlariEkle()

    def TakimlariEkle(self, Catia1):
        fikatia = IFikatia(win32com.client.Dispatch(Catia1))
        fikatia.aktifDokuman.asProcessDokuman.asPPR.kaynaklar.dosyadanTakimlariEkle()

    def StandartAktiviteleriEkle(self, Catia1):
        fikatia = IFikatia(win32com.client.Dispatch(Catia1))
        if fikatia.aktifDokuman.asProcessDokuman.seciliProgramVarMi:
            fikatia.aktifDokuman.asProcessDokuman.seciliProgramlar[0].uyarStandartProgramlariEkle()

    def FikoYTTav20Web(self, Catia):
        fikatia = IFikatia(win32com.client.Dispatch(Catia))
        akt=fikatia.aktifDokuman.secililer.tipi
        print(akt)


# Dim fikopost
# Set fikopost = CreateObject("FikoYT.IFikoCizgiYumusatici")
# fikopost.calistir CATIA
if __name__ == "__main__":
    import psutil

    PROCNAME = "pythonw.exe"

    for proc in psutil.process_iter():
        # check whether the process name matches
        if proc.name() == PROCNAME:
            proc.kill()
    import win32com.server.register

    win32com.server.register.UseCommandLine(FikoYTCatia)

    fikatia=win32com.client.Dispatch("FikoYT.FikoPost2023")
    fikatia.PostAl(win32com.client.Dispatch("Catia.Application"),False)
    fkt:IFikatia=IFikatia(win32com.client.Dispatch(win32com.client.Dispatch("Catia.Application")))
    fkt.baslik="buuuuu"
    fkt.gorunur=True
    fikatia.FikoYTTav20Web(win32com.client.Dispatch("Catia.Application"))

    for proc in psutil.process_iter():
        # check whether the process name matches
        if proc.name() == PROCNAME:
            proc.kill()
    # fikatia.aktifDokuman.asPartDokuman.processOlustur(kaydet=True)
    # import sys
    # app = QApplication(sys.argv)
    # app.setStyle("fusion")
    # slm = IFikoPost2015(Catia=win32com.client.Dispatch("Catia.Application"))
    # slm.show()
    #  sys.exit(app.exec())
