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.IFikoRsmToPart.IFikoRsmToPart import IFikoRsmToPart
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, 'resimden_sketch.ui'))


class ResimdenSketche(QWidget, MainWindowUI):
    ismi:str="Fiko Resimden Sketch'e"
    aciklama:str="Verilen Resmi Sketch Formatına Çevirip Catia'ya Uyarlar"
    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(ResimdenSketche, 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.WindowShortcut)
        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.WindowShortcut)
        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 = IFikoRsmToPart(Catia=self.ana_program.fikatia.catNesne,app=self.ana_program.app)
        idkm.show()
        if self.ana_program.ayarlarForm.check_komut_sonrasi_kapat.isChecked():
            self.ana_program.close()
        # self.ana_program.fikatia.aktifDokuman.klasoruAcSecimli()
