1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#-----------------------------------------------------------------------------
# Name: img2pyartprov.py
# Purpose:
#
# Author: Riaan Booysen
#
# RCS-ID: $Id$
# Copyright: (c) 2006
# Licence: wxPython
#-----------------------------------------------------------------------------
""" ArtProvider class that publishes images from modules generated by img2py.
Image modules must be generated with the -u and -n <name> parameters.
Typical usage:
>>> import wx, wx.lib.art.img2pyartprov, myimagemodule
>>> wx.ArtProvider.PushProvider(wx.lib.art.img2pyartprov.Img2PyArtProvider(myimagemodule))
If myimagemodule.catalog['MYIMAGE'] is defined, it can be accessed as:
>>> wx.ArtProvider.GetBitmap('wxART_MYIMAGE')
"""
import wx
_NULL_BMP = wx.NullBitmap
class Img2PyArtProvider(wx.ArtProvider):
def __init__(self, imageModule, artIdPrefix='wxART_'):
self.catalog = {}
self.index = []
self.UpdateFromImageModule(imageModule)
self.artIdPrefix = artIdPrefix
wx.ArtProvider.__init__(self)
def UpdateFromImageModule(self, imageModule):
try:
self.catalog.update(imageModule.catalog)
except AttributeError:
raise Exception, 'No catalog dictionary defined for the image module'
try:
self.index.extend(imageModule.index)
except AttributeError:
raise Exception, 'No index list defined for the image module'
def GenerateArtIdList(self):
return [self.artIdPrefix+name for name in self.index]
def CreateBitmap(self, artId, artClient, size):
if artId.startswith(self.artIdPrefix):
name = artId[len(self.artIdPrefix):]
if name in self.catalog:
return self.catalog[name].GetBitmap()
return _NULL_BMP
|