from win32com.client import CDispatch
from IHibridBody import IHibridBody
from IFikomObject import IFikomObject


class IHibridBodyler(IFikomObject):
    def __init__(self, obj: CDispatch, sahip: IFikomObject = None):
        super(IHibridBodyler, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IHibridBodyler"

    @property
    def sayisi(self) -> int:
        return int(self.catNesne.Count)

    def ekle(self, ismi=None):
        rtrn = IHibridBody(obj=self.catNesne.Add(), sahip=self)
        if ismi:
            rtrn.ismi = ismi
        return rtrn

    def item(self, value):
        __value = value
        if isinstance(value, int):
            __value = __value + 1

        return IHibridBody(obj=self.catNesne.Item(__value), sahip=self)

    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) -> IHibridBody:
        return self.item(item)
