__author__ = 'CAM'

from win32com.client import CDispatch

from IFikomObject import IFikomObject
from IPaylasilan import IPaylasilan





class IPaylasilanlar(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IFikomObject=None):
        super(IPaylasilanlar, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IPaylasilanlar"

        # --->Sabit Degiskenler

    @property
    def sayisi(self) -> int:
        return self.catNesne.Count

    def ekle(self, Isim)->IPaylasilan:
        return IPaylasilan(self.catNesne.Add(Isim), self)

    def item(self, i) -> IPaylasilan:
        if type(i) == int:
            i = i + 1
        return IPaylasilan(obj=self.catNesne.Item(i), sahip=self)

    def sil(self, i):
        if type(i) == int:
            i = i + 1
        return self.catNesne.Remove(i)

    def direktAyarla(self, Isim, Referans):
        ObjeTemp = None
        if isinstance(Referans, IFikomObject):
            ObjeTemp = Referans.catNesne
        else:
            ObjeTemp = Referans
        self.catNesne.SetDirect(Isim, ObjeTemp)

    def degistir(self, Eski, Paylasimlar, Yeni):
        self.catNesne.SetRelay(Eski, Paylasimlar, Yeni)

    def __call__(self):
        tplm = self.sayisi
        return [self.Item(x) for x in range(tplm)]

    def __str__(self):
        tplm = self.sayisi
        return repr([self.item(x).ismi for x in range(tplm)])

    def __len__(self) -> int:
        return int(self.sayisi)

    def __getitem__(self, item) -> IPaylasilan:
        return self.item(item)