]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/mixins/imagelist.py
"wxWindows" --> "wxWidgets"
[wxWidgets.git] / wxPython / wx / lib / mixins / imagelist.py
index 1275fe2f030acc0f9bd0583228d18c53474a6e87..d599d7aec733a6cbe83d5051bd9f54e84daf48ab 100644 (file)
@@ -1,11 +1,78 @@
+#----------------------------------------------------------------------------
+# Name:        wx.lib.mixins.imagelist
+# Purpose:     Helpful mix-in classes for using a wxImageList
+#
+# Author:      Robin Dunn
+#
+# Created:     15-May-2001
+# RCS-ID:      $Id$
+# Copyright:   (c) 2001 by Total Control Software
+# Licence:     wxWindows license
+#----------------------------------------------------------------------------
+# 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net)
+#
+# o 2.5 compatability update.
+# o Untested.
+#
+
+import  wx
+
+#----------------------------------------------------------------------------
+
+class MagicImageList:
+    '''
+    Mix-in to provide "magic" growing image lists
+    By Mike Fletcher
+    '''
+
+    ### LAZYTREE and LISTCONTROL Methods
+    DEFAULTICONSIZE = 16
+
+    def SetupIcons(self, images=(), size=None):
+        self.__size = size or self.DEFAULTICONSIZE
+        self.__magicImageList = wx.ImageList (self.__size,self.__size)
+        self.__magicImageListMapping = {}
+        self.SetImageList (
+            self.__magicImageList, {
+                16:wx.IMAGE_LIST_SMALL,
+                32:wx.IMAGE_LIST_NORMAL,
+            }[self.__size]
+        )
+        for image in images:
+            self.AddIcon (image)
+
+    def GetIcons (self, node):
+        '''Get icon indexes for a given node, or None if no associated icon'''
+        icon = self.GetIcon( node )
+        if icon:
+            index = self.AddIcon (icon)
+            return index, index
+        return None
+
+
+    ### Local methods...
+    def AddIcon(self, icon, mask = wx.NullBitmap):
+        '''Add an icon to the image list, or get the index if already there'''
+        index = self.__magicImageListMapping.get (id (icon))
+        if index is None:
+            if isinstance( icon, wxIconPtr ):
+                index = self.__magicImageList.AddIcon( icon )
+            elif isinstance( icon, wx.BitmapPtr ):
+                if isinstance( mask, wx.Colour ):
+                    index = self.__magicImageList.AddWithColourMask( icon, mask )
+                else:
+                    index = self.__magicImageList.Add( icon, mask )
+            else:
+                raise ValueError("Unexpected icon object %s, "
+                                 "expected wx.Icon or wx.Bitmap" % (icon))
+            self.__magicImageListMapping [id (icon)] = index
+        return index
+
+    ### Customisation point...
+    def GetIcon( self, node ):
+        '''Get the actual icon object for a node'''
+        if hasattr (node,"DIAGRAMICON"):
+            return node.DIAGRAMICON
 
-"""Renamer stub: provides a way to drop the wx prefix from wxPython objects."""
 
-__cvsid__ = "$Id$"
-__revision__ = "$Revision$"[11:-2]
 
-from wx import _rename
-from wxPython.lib.mixins import imagelist
-_rename(globals(), imagelist.__dict__, modulename='lib.mixins.imagelist')
-del imagelist
-del _rename