Lightningbeam/PyGUI-2.5.3/GUI/Win32/BaseAlert.py

62 lines
1.5 KiB
Python

#--------------------------------------------------------------------
#
# PyGUI - BaseAlert - Win32
#
#--------------------------------------------------------------------
import win32con as wc, win32gui as gui, win32api as api
from GUI import export
from GUI import application
from GUI.WinUtils import win_bg_color
from GUI import View
from GUI.GBaseAlerts import BaseAlert as GBaseAlert
win_icon_ids = {
'stop': wc.IDI_HAND,
'caution': wc.IDI_EXCLAMATION,
'note': wc.IDI_ASTERISK,
'query': wc.IDI_QUESTION,
}
win_icon_size = (
api.GetSystemMetrics(wc.SM_CXICON),
api.GetSystemMetrics(wc.SM_CYICON)
)
def win_load_icon(id):
return gui.LoadIcon(0, id)
class AlertIcon(View):
_win_transparent = True
def __init__(self, id, **kwds):
View.__init__(self, size = win_icon_size, **kwds)
#hwnd = self._win.GetSafeHwnd()
self.win_icon = win_load_icon(id)
def draw(self, c, r):
gfx = c._win_graphics
hdc = gfx.GetHDC()
gui.DrawIcon(hdc, 0, 0, self.win_icon)
gfx.ReleaseHDC(hdc)
# def draw(self, c, r):
# dc = c._win_dc
# dc.DrawIcon((0, 0), self.win_icon)
class BaseAlert(GBaseAlert):
_win_icon = None
def _layout_icon(self, kind):
id = win_icon_ids.get(kind)
if id:
icon = AlertIcon(id, position = (self._left_margin, self._top_margin))
self.add(icon)
return icon.size
else:
return (0, 0)
export(BaseAlert)