__author__ = 'PC'

from win32com.client import CDispatch

from IFikomObject import IFikomObject





class IProduct(IFikomObject) : pass





class IProductlar(IFikomObject) :
	def __init__(self , obj:CDispatch , sahip:IFikomObject = None) :
		super(IProductlar , self).__init__(obj , sahip)
		self.sahip=sahip
		self.tipi="IProductlar"
	# --->Sabit Degiskenler

	@property
	def sayisi(self) :
		return self.catNesne.Count

	def bilesenEkle(self , Product) -> IProduct :
		ObjeTemp = None
		if isinstance(Product , IFikomObject) :
			ObjeTemp = Product.catNesne
		else :
			ObjeTemp = Product
		return IProduct(self.catNesne.AddComponent(ObjeTemp) , self)

	def bilesenEkleDosyalardan(self , Dosyalar , Metod)->IProduct :
		return IProduct(self.catNesne.AddComponentsFromFiles(Dosyalar , Metod) , self)

	def bilesenEkleAcikDosyadan(self , Product) -> IProduct :
		ObjeTemp = None
		if isinstance(Product , IFikomObject) :
			ObjeTemp = Product.catNesne
		else :
			ObjeTemp = Product
		return IProduct(self.catNesne.AddExternalComponent(ObjeTemp) , self)

	def yeniBilesen(self , ParcaNo) -> IProduct :
		return IProduct.IProduct(self.catNesne.AddNewProduct(ParcaNo) , self)

	def yeniProduct(self , ParcaNo) -> IProduct :
		return IProduct.IProduct(self.catNesne.AddNewProduct( ParcaNo) , self)

	def yeniBilesen(self , BilesenTuru , ParcaNo) -> IProduct :
		return IProduct.IProduct(self.catNesne.AddNewComponent(BilesenTuru , ParcaNo) , self)

	def bilesenDegistir(self , Product , YeniBilesenDosyasi , Ikili) -> IProduct :
		return IProduct(self.catNesne.ReplaceComponent(Product , YeniBilesenDosyasi , Ikili) , self)

	def productDegistir(self , EskiProduct , YeniProduct , Ikili) -> IProduct :
		return IProduct(self.catNesne.ReplaceProduct(EskiProduct , YeniProduct , Ikili) , self)

	def item(self , i) ->IProduct :
		if type(i) == int :
			i = i + 1
		return IProduct.IProduct(self.catNesne.item(i) , sahip = self)

	def sil(self , i) :
		if type(i) == int :
			i = i + 1
		return self.catNesne.Remove(i)

	def __call__(self) :
		PrdctSayisi = self.sayisi
		return [self.item(x) for x in range(PrdctSayisi)]

	def __str__(self) :
		PrdctSayisi = self.sayisi
		return repr([self.item(x).ismi for x in range(PrdctSayisi)])

	def __len__(self) -> int:
		return int(self.sayisi)

	def __getitem__(self, item) -> IProduct:
		return self.item(item)


import IProduct