#!D:/IDE/anaconda3/envs/Microscope_Scan python
# -*- coding: UTF-8 -*-
"""
@FileName：TrayConfigInterface.py
@Description：
@Author：XSH
@Time：2025/11/11 11:54
@Department：研发部
@Copyright：©2025 乐辰生物
"""
from abc import abstractmethod
from AppInterfaces.ConfigInterface import ConfigInterface
class TrayConfigInterface(ConfigInterface):
    Information                     : str    #      '　　说明信息　　　　'
    ID                              : int    #      '　　数据ＩＤ　　　　'
    Position_X                      : float  #      '　　放片Ｘ位置　　　'
    Position_Y                      : float  #      '　　放片Ｙ位置　　　'
    Position_Z                      : float  #      '　　托盘Ｚ位置　　　'
    SlideSpacing                    : float  #      '　　托盘玻片间距　　'
    SlideWidth                      : float  #      '　　玻片宽度　　　　'
    SlideHeight                     : float  #      '　　玻片高度　　　　'
    Step_X                          : float  #      'Ｘ轴移动步长１０Ｘ　'
    Step_Y                          : float  #      'Ｙ轴移动步长１０Ｘ　'
    Step_X_20X                      : float  #      'Ｘ轴移动步长２０Ｘ　'
    Step_Y_20X                      : float  #      'Ｙ轴移动步长２０Ｘ　'
    Step_X_40X                      : float  #      'Ｘ轴移动步长４０Ｘ　'
    Step_Y_40X                      : float  #      'Ｙ轴移动步长４０Ｘ　'
    Step_X_100X                     : float  #      'Ｘ轴移动步长１００Ｘ'
    Step_Y_100X                     : float  #      'Ｙ轴移动步长１００Ｘ'

    @abstractmethod
    def setPosition_xyz(self, x, y, z):
        pass

    @abstractmethod
    def getPosition_xyz(self) -> (float, float, float):
        pass

    @abstractmethod
    def getSlideSize(self) -> (float, float):
        pass

    @abstractmethod
    def getStep(self, level: int) -> (float, float):
        pass


    @abstractmethod
    def getPosition_X       (self) -> float:
        pass

    @abstractmethod
    def getPosition_Y       (self) -> float:
        pass

    @abstractmethod
    def getPosition_Z       (self) -> float:
        pass

    @abstractmethod
    def getSlideSpacing     (self) -> float:
        pass

    @abstractmethod
    def getSlideWidth       (self) -> float:
        pass

    @abstractmethod
    def getSlideHeight      (self) -> float:
        pass

    @abstractmethod
    def getStep_X           (self) -> float:
        pass

    @abstractmethod
    def getStep_Y           (self) -> float:
        pass

    @abstractmethod
    def getStep_X_20X       (self) -> float:
        pass

    @abstractmethod
    def getStep_Y_20X       (self) -> float:
        pass

    @abstractmethod
    def getStep_X_40X       (self) -> float:
        pass

    @abstractmethod
    def getStep_Y_40X       (self) -> float:
        pass

    @abstractmethod
    def getStep_X_100X      (self) -> float:
        pass

    @abstractmethod
    def getStep_Y_100X      (self) -> float:
        pass
    @abstractmethod
    def setPosition_X       (self, value: (int, float)):
        pass

    @abstractmethod
    def setPosition_Y       (self, value: (int, float)):
        pass

    @abstractmethod
    def setPosition_Z       (self, value: (int, float)):
        pass

    @abstractmethod
    def setSlideSpacing     (self, value: (int, float)):
        pass

    @abstractmethod
    def setSlideWidth       (self, value: (int, float)):
        pass

    @abstractmethod
    def setSlideHeight      (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_X           (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_Y           (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_X_20X       (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_Y_20X       (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_X_40X       (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_Y_40X       (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_X_100X      (self, value: (int, float)):
        pass

    @abstractmethod
    def setStep_Y_100X      (self, value: (int, float)):
        pass

    __field__ = (
        'Information'  ,
        'ID'           ,
        'Position_X'   ,
        'Position_Y'   ,
        'Position_Z'   ,
        'SlideSpacing' ,
        'SlideWidth'   ,
        'SlideHeight'  ,
        'Step_X'       ,
        'Step_Y'       ,
        'Step_X_20X'   ,
        'Step_Y_20X'   ,
        'Step_X_40X'   ,
        'Step_Y_40X'   ,
        'Step_X_100X'  ,
        'Step_Y_100X'  ,
    )
    __types__ = (
        str    ,
        int    ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
        float  ,
    )

    @property
    def hasInformation(self) -> bool:
        return hasattr(self, 'Information') and isinstance(self.Information, str)

    @property
    def hasID(self) -> bool:
        return hasattr(self, 'ID') and isinstance(self.ID, int)

    @property
    def hasPosition_X(self) -> bool:
        return hasattr(self, 'Position_X') and isinstance(self.Position_X, (int, float))

    @property
    def hasPosition_Y(self) -> bool:
        return hasattr(self, 'Position_Y') and isinstance(self.Position_Y, (int, float))

    @property
    def hasPosition_Z(self) -> bool:
        return hasattr(self, 'Position_Z') and isinstance(self.Position_Z, (int, float))

    @property
    def hasSlideSpacing(self) -> bool:
        return hasattr(self, 'SlideSpacing') and isinstance(self.SlideSpacing, (int, float))

    @property
    def hasSlideWidth(self) -> bool:
        return hasattr(self, 'SlideWidth') and isinstance(self.SlideWidth, (int, float))

    @property
    def hasSlideHeight(self) -> bool:
        return hasattr(self, 'SlideHeight') and isinstance(self.SlideHeight, (int, float))

    @property
    def hasStep_X(self) -> bool:
        return hasattr(self, 'Step_X') and isinstance(self.Step_X, (int, float))

    @property
    def hasStep_Y(self) -> bool:
        return hasattr(self, 'Step_Y') and isinstance(self.Step_Y, (int, float))

    @property
    def hasStep_X_20X(self) -> bool:
        return hasattr(self, 'Step_X_20X') and isinstance(self.Step_X_20X, (int, float))

    @property
    def hasStep_Y_20X(self) -> bool:
        return hasattr(self, 'Step_Y_20X') and isinstance(self.Step_Y_20X, (int, float))

    @property
    def hasStep_X_40X(self) -> bool:
        return hasattr(self, 'Step_X_40X') and isinstance(self.Step_X_40X, (int, float))

    @property
    def hasStep_Y_40X(self) -> bool:
        return hasattr(self, 'Step_Y_40X') and isinstance(self.Step_Y_40X, (int, float))

    @property
    def hasStep_X_100X(self) -> bool:
        return hasattr(self, 'Step_X_100X') and isinstance(self.Step_X_100X, (int, float))

    @property
    def hasStep_Y_100X(self) -> bool:
        return hasattr(self, 'Step_Y_100X') and isinstance(self.Step_Y_100X, (int, float))


