from PyQt6.QtCore import Qt, pyqtSlot
import inspect
import os
from PyQt6.QtGui import QPalette
from PyQt6.QtWidgets import QWidget, QApplication, QMainWindow, QToolBar, QComboBox, QMessageBox, QGraphicsBlurEffect
from PyQt6.QtWinExtras import QtWin
from PyQt6.uic import loadUi
import sys
from win32com import client



sys.path.append(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()) + "\\..\\..\\..")))

from IFikatia import IFikatia
from Projeler.QTBilesenleri.QFikatiaProgramListesi.QFikatiaProgramListesi import QFikatiaProgramListesi
from IFikoSistem.IFikoAyarlar import IFikoAyarlar

class IFikoPost2015(QMainWindow):
    def __init__(self, parent=None, flags=0, Catia=None):
        self.Fikatia = IFikatia(Catia)
        self.Fikatia.baslik = "FikoPost 2015.1"
        self.ayarlar=IFikoAyarlar()
        self.app = QApplication([sys.argv])
        super(IFikoPost2015, self).__init__()
        self.app.setStyle(self.ayarlar.item("anaTema").asStr)
        self.app.setStyleSheet(self.ayarlar.item("anaFormQss").asStr)
        self.ScriptYolu = os.path.dirname(os.path.abspath(
            inspect.getfile(inspect.currentframe())))

        self.ui = loadUi(os.path.join(self.ScriptYolu, 'formAna.ui'), self)

        if not self.ayarlar.item("pencereTransparanAcik").asBool == False:
            self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, False)
            from ctypes import windll, c_int, byref
            windll.dwmapi.DwmExtendFrameIntoClientArea(c_int(self.winId().__int__()), byref(c_int(-1)))

        if self.ayarlar.item("pencereHerZamanÜstte").asBool:
            self.setWindowFlags( Qt.WindowStaysOnTopHint )

        self.setWindowOpacity(self.ayarlar.item("pencereSeffaflik").asFloat)

        self.processDokuman = self.Fikatia.aktifDokuman.asProcessDokuman
        self.fikoPost = self.processDokuman.fikoPost

        self.liste = QFikatiaProgramListesi(processDokuman=self.processDokuman)
        self.liste.setParent(self)
        self.liste.arkaPlaniSeffafYap()
        self.ui.VLayoutListe.addWidget(self.liste)

        if len(self.processDokuman.seciliProgramlar)>0:
            self.liste.listeSecilileriAl()
        else:
            self.liste.listeTumunuAl()

        self.ui.editArama.textChanged.connect(lambda: self.liste.ara(self.ui.editArama.text()))

        self.liste.secimDegisti.connect(lambda x: self.ui.lblSeciliSayisi.setText(str(len(x))))
        self.liste.secimDegisti.connect(lambda x: self.ui.lblToplamSayi.setText(str(self.liste.count())))

        self.ui.lblprojeIsmi.setText(self.liste.processDokuman.ismi)


        for x in self.fikoPost.tezgahlar.tezgahlarTumu:
            self.comboTezgah.addItem(x.ismi)
            self.app.processEvents()

        for x in self.fikoPost.partOperasyonlari():
            self.comboPO.addItem(x.ismi)
            self.app.processEvents()


        self.comboTezgah.setCurrentText(self.fikoPost.tezgah.ismi)
        self.comboTezgah.currentTextChanged.connect(self.tezgahDegisti)


    @pyqtSlot(str)
    def tezgahDegisti(self, tezgah):
        self.fikoPost.tezgah = tezgah

    @pyqtSlot()
    def on_btnProjeyiKaydet_clicked(self):
        self.liste.processDokuman.kaydet()

    @pyqtSlot()
    def on_btnProjeKlasorunuAc_clicked(self):
        self.liste.processDokuman.klasoruAcSecimli()

    @pyqtSlot()
    def on_btnEskiPostlariTasi_clicked(self):
        self.fikoPost.postlariKlasoreTasi(self.fikoPost.tezgah.postUzantisi)

    @pyqtSlot()
    def on_btnProjeKlasorunuTemizle_clicked(self):
        reply = QMessageBox.question(self,'Dikkat!!','Klasör Temizlensin Mi?',QMessageBox.StandardButton.Yes, QMessageBox.StandardButton.No)
        if reply == QMessageBox.StandardButton.Yes:
            self.liste.processDokuman.klasoruTemizle()

    @pyqtSlot()
    def on_btnPrgListeYenile_clicked(self):
        self.liste.listeTumunuAl()

    @pyqtSlot()
    def on_btnTezgahKlasorunuAc_clicked(self):
        self.fikoPost.tezgah.tezgahAc()

    @pyqtSlot()
    def on_btnPrgListeYenileSecililer_clicked(self):
        self.liste.listeSecilileriAl()

    @pyqtSlot()
    def on_btnPrgListeYenilePO_clicked(self):
        self.liste.listePodanAl(self.comboPO.currentIndex())

    @pyqtSlot()
    def on_btnAptleriUret_clicked(self):
        sel = self.liste.selectedItems()
        listPrg=[]
        for itm in sel:
            if itm.program.tipi == "IProgram":
                listPrg.append(itm.program)
        self.fikoPost.aptleriUret(listPrg)
        # self.liste.seciliProgramlarNcKodUret()

    @pyqtSlot()
    def on_btnGonder_clicked(self):
        self.processDokuman.partOperasyonlari[0].programlar[0].aktiviteler.ekle()


import win32com.client
import pythoncom


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']
    _public_attrs_ = []

    def FikoPostcuAc(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 = 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()


# if __name__ == '__main__':
#     import win32com.server.register
#     win32com.server.register.UseCommandLine(FikoYTCatia)
#
#     slm = IFikoPost2015(Catia=win32com.client.Dispatch("Catia.Application")).show()
#     import sys
#     sys.exit



if __name__ == '__main__':
    catia=client.GetActiveObject("Catia.Application")
    # catia.visible=True
    fikoPost = IFikoPost2015(Catia=catia)
    fikoPost.show()
    sys.exit(fikoPost.app.exec_())