#--------------------------------------------------------------------
#
#   PyGUI - Control - Win32
#
#--------------------------------------------------------------------

from math import ceil
import win32con as wc, win32ui as ui
from GUI import export
from GUI.StdColors import black
from GUI.StdFonts import system_font
from GUI.WinUtils import win_none, win_null_hbrush
from GUI.GControls import Control as GControl

class Control(GControl):

    _vertical_padding = 5 # Amount to add when calculating height from font size

    _color = black
    _just = 'left'
    _font = None
    
    def get_title(self):
        return self._win.GetWindowText()
    
    def set_title(self, x):
        self._win.SetWindowText(x)
    
    def get_enabled(self):
        return self._win.IsWindowEnabled()
    
    def set_enabled(self, x):
        self._win.EnableWindow(x)
    
#	def get_visible(self, x):
#		self._win.IsWindowVisible()
#	
#	def set_visible(self, x):
#		if x:
#			self._win.ShowWindow(wc.SW_SHOW)
#		else:
#			self._win.ShowWindow(wc.SW_HIDE)

    def get_font(self):
        return self._font
    
    def set_font(self, x):
        self._font = x
        self._win.SetFont(x._win_font)
        self.invalidate()
    
    def get_color(self):
        return self._color
    
    def set_color(self, x):
        self._color = x
        self.invalidate()
    
    def get_just(self):
        return self._just
    
    def set_just(self, x):
        self._just = x
        self.invalidate()

    def _win_create_button(self, title, style, w, h):
        w = int(ceil(w))
        win = ui.CreateButton()
        win.CreateWindow(title, style, (0, 0, w, h), win_none, 0)
        #if self._win_transparent:
        #	win.ModifyStyleEx(0, wc.WS_EX_TRANSPARENT, 0)
        win.ShowWindow(wc.SW_SHOW)
        return win

    def _win_on_ctlcolor(self, dc, typ):
        #print "Control._win_on_ctlcolor:", self ###
        c = self._color
        if c:
            dc.SetTextColor(c._win_color)
        if self._win_transparent:
            dc.SetBkMode(wc.TRANSPARENT)
            return win_null_hbrush

    def _win_predict_font(self, kwds):
        return kwds.setdefault('font', system_font)

export(Control)
