]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/art/img2pyartprov.py
Added some modules from Riaan Booysen:
[wxWidgets.git] / wxPython / wx / lib / art / img2pyartprov.py
diff --git a/wxPython/wx/lib/art/img2pyartprov.py b/wxPython/wx/lib/art/img2pyartprov.py
new file mode 100644 (file)
index 0000000..79945ef
--- /dev/null
@@ -0,0 +1,58 @@
+#-----------------------------------------------------------------------------
+# 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
+    
+