__author__ = 'PC'

from enum import Enum

from win32com.client import CDispatch

from IFikomObject import IFikomObject
import IDokuman
from IGosterimler import IGosterimler




class PencereDosemeTipi(Enum):
    Sirali_Arka_Arkaya_Doseme = 0
    Dikey_Doseme = 1
    Yatay_Doseme = 2





class PencereKonumu(Enum):
    Ekran_Kapli = 0
    Simge_Durumu = 1
    Normal = 2





class IPencere(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IFikomObject=None):
        """Constructor for IPencere"""
        super(IPencere, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IPencere"

    @property
    def dokuman(self) -> IDokuman:
        dokumanIsmi = self.catNesne.Parent.FullName
        dokumanlar = self.anaProgram.dokumanlar
        dokumanSayisi = dokumanlar.sayisi

        rslt = None
        for x in range(0, dokumanSayisi):
            if dokumanIsmi == dokumanlar.item(x).tamIsmi:
                rslt = dokumanlar.item(x)
                break
        return rslt

    @property
    def baslik(self) -> str:
        return self.catNesne.Caption

    @baslik.setter
    def baslik(self, value:str):
        self.catNesne.Caption = value

    @property
    def sol(self) -> int:
        return self.catNesne.left

    @sol.setter
    def sol(self, value:int):
        self.catNesne.left = value

    @property
    def ust(self) -> int:
        return self.catNesne.Top

    @ust.setter
    def ust(self, value:int):
        self.catNesne.Top = value

    @property
    def genislik(self) -> int:
        return self.catNesne.Width

    @genislik.setter
    def genislik(self, value:int):
        self.catNesne.Width = value

    @property
    def yukseklik(self) -> int:
        return self.catNesne.Height

    @yukseklik.setter
    def yukseklik(self, value:int):
        self.catNesne.Height = value

    def aktifEt(self):
        self.catNesne.Activate()

    def aktifEtSonrakini(self):
        self.catNesne.ActivateNext()

    def aktifEtOncekini(self):
        self.catNesne.ActivatePrevious()

    def yazdir(self):
        self.catNesne.PrintOut()

    def yazdirDosyaya(self, dosya:str):
        self.catNesne.PrintToFile(dosya)

    def yeniPencere(self):
        return IPencere(self.catNesne.NewWindow(), sahip=self.sahip)

    @property
    def konumu(self) -> PencereKonumu:
        return PencereKonumu(self.catNesne.WindowState)

    @konumu.setter
    def konumu(self, value:PencereKonumu):
        self.catNesne.WindowState = value.value

    @property
    def gosterimler(self) -> IGosterimler:
        return IGosterimler(obj=self.catNesne.Viewers, sahip=self)