from IDialoglar.IFikoTakimci.kok.IKok import IKok
from IYardimciSiniflar import XYZ


class ITutucu(IKok):
    """ """

    def __init__(self, *args, **kwargs):
        super(ITutucu, self).__init__(*args, **kwargs)
        self.__diameter1 = 0.0
        self.__totalLength = 0.0
        self.__XYZ = XYZ(0.0, 0.0, 0.0)
        self.__orientation = 0.0
        self.__diameter2 = 0.0
        self.__coneDiameter1 = 0.0
        self.__diameter3 = 0.0
        self.__coneDiameter2 = 0.0
        self.__lengthHolder1 = 0.0
        self.__diameter4 = 0.0
        self.__coneDiameter3 = 0.0
        self.__lengthHolder2 = 0.0
        self.__diameter5 = 0.0
        self.__coneDiameter4 = 0.0
        self.__lengthHolder3 = 0.0
        self.__diameter6 = 0.0
        self.__coneDiameter5 = 0.0
        self.__gage1 = 0.0
        self.__gage2 = 0.0
        self.__numberOfComponents = 1
        self.__name: str = ""
        self.__comment: str = ""
        self.__power: int = 0
        self.__stageCount: int = 0
        self.__toolNo: int = 0

    @property
    def name(self) -> str:
        return self.__name

    @name.setter
    def name(self, value: str):
        self.__name = value

    @property
    def comment(self) -> str:
        return self.__comment

    @comment.setter
    def comment(self, value: str):
        self.__comment = value

    @property
    def power(self) -> int:
        return self.__power

    @power.setter
    def power(self, value: int):
        self.__power = value

    @property
    def stageCount(self)->int:
        return self.__stageCount

    @stageCount.setter
    def stageCount(self, value:int):
        self.__stageCount = value

    @property
    def toolNo(self)->int:
        return self.__toolNo

    @toolNo.setter
    def toolNo(self, value:int):
        self.__toolNo = value

    @property
    def D1(self) -> float:
        """ 
        Diameter 1 
        Takım Çapı
        sadece Okunur Read Only
        """
        return self.__diameter1

    @D1.setter
    def D1(self, value: float):
        self.__diameter1 = value

    @property
    def ST(self) -> float:
        """
        Total Set Length
        Toplam Takım Boyu
        
        """
        return self.__totalLength

    @ST.setter
    def ST(self, value: float):
        self.__totalLength = value

    @property
    def XYZ(self) -> XYZ:
        """
        Set X
        Set Y
        Set Z
        
        :return: 
        """
        return self.__XYZ

    @XYZ.setter
    def XYZ(self, value):
        if isinstance(value, XYZ):
            self.__XYZ = value

        if isinstance(value, list):
            self.__XYZ.X = value[0]
            self.__XYZ.Y = value[1]
            self.__XYZ.Z = value[2]

    @property
    def orientation(self) -> float:
        """
        Orientation
        Boring Bar Açısı         
        """
        return self.__orientation

    @orientation.setter
    def orientation(self, value: float):
        self.__orientation = value

    @property
    def D2(self) -> float:
        """
        Diameter 2
         
        """
        return self.__diameter2

    @D2.setter
    def D2(self, value: float):
        self.__diameter2 = value

    @property
    def d1(self) -> float:
        """
        Cone Diameter 1

        """
        return self.__coneDiameter1

    @d1.setter
    def d1(self, value: float):
        self.__coneDiameter1 = value

    @property
    def D3(self) -> float:
        """
        Diameter 3

        """
        return self.__diameter3

    @D3.setter
    def D3(self, value: float):
        self.__diameter3 = value

    @property
    def d2(self) -> float:
        """
        Cone Diameter 2

        """
        return self.__coneDiameter2

    @d2.setter
    def d2(self, value: float):
        self.__coneDiameter2 = value

    @property
    def l1(self) -> float:
        """
        Length Holder 1

        """
        return self.__lengthHolder1

    @l1.setter
    def l1(self, value: float):
        self.__lengthHolder1 = value

    @property
    def D4(self) -> float:
        """
        Diameter 4

        """
        return self.__diameter4

    @D4.setter
    def D4(self, value: float):
        self.__diameter4 = value

    @property
    def d3(self) -> float:
        """
        Cone Diameter 3

        """
        return self.__coneDiameter3

    @d3.setter
    def d3(self, value: float):
        self.__coneDiameter3 = value

    @property
    def l2(self) -> float:
        """
        Length Holder 2

        """
        return self.__lengthHolder2

    @l2.setter
    def l2(self, value: float):
        self.__lengthHolder2 = value

    @property
    def D5(self) -> float:
        """
        Diameter 5

        """
        return self.__diameter5

    @D5.setter
    def D5(self, value: float):
        self.__diameter5 = value

    @property
    def d4(self) -> float:
        """
        Cone Diameter 4

        """
        return self.__coneDiameter4

    @d4.setter
    def d4(self, value: float):
        self.__coneDiameter4 = value

    @property
    def l3(self) -> float:
        """
        Length Holder 3

        """
        return self.__lengthHolder3

    @l3.setter
    def l3(self, value: float):
        self.__lengthHolder3 = value

    @property
    def D6(self) -> float:
        """
        Diameter 6

        """
        return self.__diameter6

    @D6.setter
    def D6(self, value: float):
        self.__diameter6 = value

    @property
    def d5(self) -> float:
        """
        Cone Diameter 5

        """
        return self.__coneDiameter5

    @d5.setter
    def d5(self, value: float):
        self.__coneDiameter5 = value

    @property
    def G1(self) -> float:
        """
        Gage 1 Teknolojies

        """
        return self.__gage1

    @G1.setter
    def G1(self, value: float):
        self.__gage1 = value

    @property
    def G2(self) -> float:
        """
        Gage 2 Teknolojies

        """
        return self.__gage2

    @G2.setter
    def G2(self, value: float):
        self.__gage2 = value

    @property
    def numberOfComponents(self) -> int:
        """
        number of components Teknolojies

        """
        return self.__numberOfComponents

    @numberOfComponents.setter
    def numberOfComponents(self, value: int):
        self.__numberOfComponents = value
