__author__ = 'PC'

from win32com.client import CDispatch

from IFikomObject import IFikomObject
from IDokuman import IDokuman





class IDokumanlar(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IFikomObject=None):
        """Constructor for IDokumanlar"""
        super(IDokumanlar, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IDokumanlar"

    @property
    def sayisi(self) -> int:
        return int(self.catNesne.Count)

    def ekle(self, dokumanTipi:str="Part") -> IDokuman:
        """Part <-> Product <-> Drawing"""
        return IDokuman(obj=self.catNesne.Add(dokumanTipi), sahip=self)

    def item(self, dokuman) -> IDokuman:
        if type(dokuman) is int:
            dokuman = dokuman + 1
        return IDokuman(obj=self.catNesne.Item(dokuman), sahip=self)

    def yeniDosyadan(self, dosyaYolu:str) -> IDokuman:
        return IDokuman(obj=self.catNesne.NewFrom(dosyaYolu), sahip=self)

    def ac(self, dosya:str) -> IDokuman:
        return IDokuman(obj=self.catNesne.Open(dosya), sahip=self)

    def oku(self, dosya:str) -> IDokuman:
        return IDokuman(obj=self.catNesne.Read(dosya), 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) -> IDokuman:
        return self.item(item)
