from win32com.client import CDispatch

from IFikomObject import IFikomObject
from IMfgOperasyon.IOprYardimciSiniflar import *
from IMfgTakim import IMfgTakim
from IParametre import IParametre


class IAktivite: pass


class IOprM3xHardMaterial(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IFikomObject=None):
        super(IOprM3xHardMaterial, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IOprM3xHardMaterial"
        self.__aktivite = IAktivite.IAktivite(obj=self.catNesne, sahip=self.sahip.sahip)

    @property
    def takim(self) -> IMfgTakim:
        if isinstance(self.sahip.sahip, IAktivite.IAktivite):
            return self.sahip.sahip.takim
        elif isinstance(self.sahip, IAktivite.IAktivite):
            return self.sahip.takim
        else:
            raise Exception(
                """Aktivite Hatası.Bu Hata Sınıfın Tek Başına Yaratılıp Sahip Olarak Aktivite Verilmezse Ortaya Çıkar""")

    @property
    def islemeModuParametre(self) -> IParametre:
        return self.__aktivite.parametreler["Machining mode"]

    @property
    def islemeModu(self) -> IslemModu3D:
        rslt = self.__aktivite.parametreler["Machining mode"].degeriStr
        if rslt == "M3xHardMachiningModeByPlane":
            cvr = IslemModu3D.duzlemler
        elif rslt == "M3xHardMachiningModePocketsOnly":
            cvr = IslemModu3D.sadeceCepler
        elif rslt == "M3xHardMachiningModeExternalOnly":
            cvr = IslemModu3D.sadeceDisHat
        elif rslt == "M3xHardMachiningModeExternalPockets":
            cvr = IslemModu3D.ceplerVeDisHat
        elif rslt == "M3xHardMachiningModeByPlPocketsOnly":
            cvr = IslemModu3D.duzlemeGoreSadeceCepler
        elif rslt == "M3xHardMachiningModeByPlExternalOnly":
            cvr = IslemModu3D.duzlemeGoreSadeceDisHat
        elif rslt == "M3xHardMachiningModeByPlExternalPockets":
            cvr = IslemModu3D.duzlemeGoreCeplerVeDisHat
        return cvr

    @islemeModu.setter
    def islemeModu(self, value):
        if isinstance(value, str):
            self.islemeModuParametre.degeriStr = value
        elif isinstance(value, IslemModu3D):
            if value == IslemModu3D.duzlemler:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlane"
            elif value == IslemModu3D.sadeceCepler:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModePocketsOnly"
            elif value == IslemModu3D.sadeceDisHat:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeExternalOnly"
            elif value == IslemModu3D.ceplerVeDisHat:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeExternalPockets"
            elif value == IslemModu3D.duzlemeGoreSadeceCepler:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlPocketsOnly"
            elif value == IslemModu3D.duzlemeGoreSadeceDisHat:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlExternalOnly"
            elif value == IslemModu3D.duzlemeGoreCeplerVeDisHat:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlExternalPockets"
        elif isinstance(value, int):
            if value == 0:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlane"
            elif value == 1:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModePocketsOnly"
            elif value == 2:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeExternalOnly"
            elif value == 3:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeExternalPockets"
            elif value == 4:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlPocketsOnly"
            elif value == 5:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlExternalOnly"
            elif value == 6:
                self.islemeModuParametre.degeriStr = "M3xHardMachiningModeByPlExternalPockets"


from IAktiviteler import IAktivite