from win32com.client import CDispatch
from IEksen import IEksen
from IFikomObject import IFikomObject


class IEksenler(IFikomObject):
    def __init__(self, obj: CDispatch, sahip: IFikomObject = None):
        super(IEksenler, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IEksenler"

    @property
    def sayisi(self) -> int:
        return int(self.catNesne.Count)

    def ekle(self):
        return IEksen(obj=self.catNesne.Add(), sahip=self)

    def item(self, value):
        __value = value
        if isinstance(value, int):
            __value = __value + 1
            return IEksen(obj=self.catNesne.Item(__value), sahip=self)
        elif isinstance(value,str):
            for x in range(0, self.sayisi):
                eksen = self.item(x)
                if eksen.ismi == value:
                    return eksen
            return None


    def __call__(self):
        return [self.item(x) for x in range(self.sayisi)]

    def __str__(self):
        return repr([self.item(x).ismi for x in range(self.sayisi)])

    def __len__(self):
        return int(self.sayisi)

    def __getitem__(self, item) -> IEksen:
        if isinstance(item, int):
            return self.item(item)
        else:
            for x in range(0, self.sayisi):
                eksen = self.item(x)
                if eksen.ismi == item:
                    return eksen
            return None
