import inspect
import os

import pythoncom
import win32com.client
from PyQt6.QtWidgets import QApplication
import sys

sys.path.append(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()) + "\\..\\..\\..")))
from IFikatia import IFikatia
from Projeler.QTBilesenleri.FikoPost2015.IFikoPost2015 import IFikoPost2015


debugging = False
if debugging:
    from win32com.server.dispatcher import DefaultDebugDispatcher

    useDispatcher = DefaultDebugDispatcher
else:
    useDispatcher = None


class FikoYTCatia():
    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER

    _reg_desc_ = "FikoYT"
    _reg_clsid_ = "{387C5707-8723-41E6-81A8-B994378E4857}"
    _reg_progid_ = "FikoYT.FikoPostV4"
    _public_methods_ = ['FikoPostcuAc', 'AktifKlasorAc','ProcessOlustur','MagazinKodlariEkle','TakimlariEkle','StandartAktiviteleriEkle']
    _public_attrs_ = []

    def FikoPostcuAc(self, Catia1):
        # import flet as ft

        # def main(page: ft.Page):
        #     page.title = "Flet counter example"
        #     page.vertical_alignment = ft.MainAxisAlignment.CENTER

        #     txt_number = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, width=100)

        #     def minus_click(e):
        #         txt_number.value = str(int(txt_number.value) - 1)
        #         page.update()

        #     def plus_click(e):
        #         txt_number.value = str(int(txt_number.value) + 1)
        #         page.update()

        #     page.add(
        #         ft.Row(
        #             [
        #                 ft.IconButton(ft.icons.REMOVE, on_click=minus_click),
        #                 txt_number,
        #                 ft.IconButton(ft.icons.ADD, on_click=plus_click),
        #             ],
        #             alignment=ft.MainAxisAlignment.CENTER,
        #         )
        #     )

        # ft.app(target=main,)
        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 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()



# Dim fikopost
# Set fikopost = CreateObject("FikoYT.IFikoCizgiYumusatici")
# fikopost.calistir CATIA
if __name__ == '__main__':
    import win32com.server.register
    win32com.server.register.UseCommandLine(FikoYTCatia)

    # fikatia=IFikatia(win32com.client.Dispatch("Catia.Application"))
    # 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())