X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8b9a4190f70909de9568f45389e7aa3ecbc66b8a..25b3661bd4cb44304418b93c0dee1d0dfb99765c:/wxPython/wx/lib/mixins/imagelist.py?ds=inline diff --git a/wxPython/wx/lib/mixins/imagelist.py b/wxPython/wx/lib/mixins/imagelist.py index 59fc467f54..d599d7aec7 100644 --- a/wxPython/wx/lib/mixins/imagelist.py +++ b/wxPython/wx/lib/mixins/imagelist.py @@ -1,8 +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.""" -from wx import _rename -from wxPython.lib.mixins import imagelist -_rename(globals(), imagelist.__dict__, modulename='lib.mixins.imagelist') -del imagelist -del _rename