__author__ = 'CAM'

from win32com.client import CDispatch

from IFikomObject import IFikomObject
from IKamera import IKamera


class IKameralar(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IFikomObject=None):
        super(IKameralar, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IKameralar"
        # --->Sabit Degiskenler

    def yeniKamera3d(self, val=None):
        if val == None:
            rslt = self.sahip.pencere.gosterimler.item(0).yeniKamera()
        else:
            rslt = self.sahip.pencere.gosterimler.item(0).yeniKamera()
            rslt.ismi = val
        return rslt

    def sil(self, i):
        if type(i) == int:
            i = i + 1
            self.catNesne.Remove(i)
        else:
            if type(i) == str:
                for x in range(0, self.sayisi):
                    if self.catNesne.Item(x + 1).Name == i:
                        self.catNesne.Remove(x + 1)
                        break

    @property
    def sayisi(self):
        return self.catNesne.Count

    def item(self, i):
        if type(i) == int:
            i = i + 1
            return IKamera(obj=self.catNesne.Item(i), sahip=self)
        else:
            if type(i) == str:
                for x in range(0, self.sayisi):
                    if self.catNesne.Item(x + 1).Name == i:
                        rslt = IKamera(obj=self.catNesne.Item(x + 1), sahip=self)
                        break
            return rslt

    def __call__(self) -> list:
        kmrSayisi = self.sayisi
        return [self.item(x) for x in range(kmrSayisi)]

    def __str__(self) -> str:
        kmrSayisi = self.sayisi
        return repr([self.item(x).ismi for x in range(kmrSayisi)])

    def __len__(self) -> int:
        return int(self.sayisi)

    def __getitem__(self, item) -> IKamera:
        return self.item(item)