import inspect
import os

from PyQt6.QtGui import QKeySequence, QShortcut
from PyQt6.QtWidgets import QKeySequenceEdit
from PyQt6.QtCore import QSettings, pyqtSignal, pyqtSlot, Qt, QVariant
from PyQt6.QtGui import QIcon, QPixmap
from PyQt6.QtWidgets import QWidget, QListWidgetItem, QLineEdit, QMessageBox, QApplication
from PyQt6.uic import loadUiType
import win32com

from IDialoglar.IFikoKutuk.IFikoKutuk import IFikoDialogKutuk
from IDialoglar.IFikoRsmToPart.IFikoRsmToPart import IFikoRsmToPart
from IDialoglar.IFikoScript.Alanlar.FikoYT.catia_komut.sayfalar.ayarlar.ayarlar import CatiaKomutAyarlar
from Projeler.QTBilesenleri.FikoPost2015.IFikoPost2015 import IFikoPost2015


path = os.path.dirname(os.path.abspath(__file__))
resimYolu = os.path.join(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))),
                         "Resimler")

MainWindowUI, MainWindowBase = loadUiType(os.path.join(path, 'catia_komut.ui'))


class CatiaKomut(QWidget, MainWindowUI):
    ismi:str="Catia Komutçu"
    aciklama:str="Catiadaki Standart Komtlara Kısayol Atamaya Yara ve Hızlı Çalıştırmayı Sağlar"
    widgetYukseklik:int=45
    sinyal = pyqtSignal(str, QVariant)
    ana_program=None
    ayarlar = QSettings(os.path.join(path,"ayar.ini"), QSettings.Format.IniFormat)
    # kisayol=None
    def __init__(self, parent=None, ana_program=None):
        super(CatiaKomut, self).__init__(None)
        self.ana_program=ana_program
        # self.parent=parent
        self.setupUi(self)
        self.resimYolu = os.path.join(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))),
                                      "Resimler")

        if hasattr(self.parent(), 'sinyal'):
            self.sinyal = self.parent().sinyal

        # rsmMfg = QPixmap(os.path.join(self.resimYolu, "mfgnrml.png"))

        # self.labelSolSimge.setPixmap(rsmMfg)
        self.btnCalistir.clicked.connect(self.calistir)

        self.editKisayol.keySequenceChanged.connect(self.kisayolDegisti)
        self.editKisayol.setKeySequence(QKeySequence(self.ayarlar.value("kisayol")))
        
    def showEvent(self, event):
        key_sequence =  QKeySequence(self.ayarlar.value("kisayol"))

        # Eğer bir kısayol zaten atanmışsa kaldır
        if hasattr(self, 'kisayol'):
            self.kisayol.setEnabled(False)
            del self.kisayol

        # Yeni QShortcut oluştur ve tetiklendiğinde handle_shortcut metodunu çağır
        self.kisayol = QShortcut(QKeySequence(key_sequence),self.ana_program,context=Qt.ShortcutContext.ApplicationShortcut)
        self.kisayol.activatedAmbiguously.connect(self.calistir)
        self.kisayol.activated.connect(self.calistir) 

    def hideEvent(self, event):
        pass

    def kisayolDegisti(self,event,*args,**kwargs):
        # QKeySequenceEdit widget'ındaki tuş kombinasyonunu al
        key_sequence = self.editKisayol.keySequence()

        # Eğer bir kısayol zaten atanmışsa kaldır
        if hasattr(self, 'kisayol'):
            self.kisayol.setEnabled(False)
            del self.kisayol

        # Yeni QShortcut oluştur ve tetiklendiğinde handle_shortcut metodunu çağır
        self.kisayol = QShortcut(QKeySequence(key_sequence),self.ana_program,context=Qt.ShortcutContext.ApplicationShortcut)
        self.kisayol.activatedAmbiguously.connect(self.calistir)
        self.kisayol.activated.connect(self.calistir)
        self.ayarlar.setValue("kisayol", key_sequence)
        # print(event.toString())

    def calistir(self):
        idkm = CatiaKomutAyarlar(Catia=win32com.client.Dispatch(self.ana_program.fikatia.catNesne),app=self.ana_program.app,ana_program=self.ana_program)
        idkm.show()
        if self.ana_program.ayarlarForm.check_komut_sonrasi_kapat.isChecked():
            self.ana_program.close()
        # self.ana_program.fikatia.aktifDokuman.klasoruAcSecimli()
