X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8b9a4190f70909de9568f45389e7aa3ecbc66b8a..3fe5f176be5ec2a3ea30ea8ecdd2b343fa89f27c:/wxPython/wx/lib/mixins/imagelist.py diff --git a/wxPython/wx/lib/mixins/imagelist.py b/wxPython/wx/lib/mixins/imagelist.py index 59fc467f54..d7ac7f17e5 100644 --- a/wxPython/wx/lib/mixins/imagelist.py +++ b/wxPython/wx/lib/mixins/imagelist.py @@ -1,8 +1,73 @@ +#---------------------------------------------------------------------------- +# Name: wxPython.lib.mixins.listctrl +# 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 +#---------------------------------------------------------------------------- + +from wxPython.wx import * + +#---------------------------------------------------------------------------- + +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 = wxImageList (self.__size,self.__size) + self.__magicImageListMapping = {} + self.SetImageList ( + self.__magicImageList, { + 16:wxIMAGE_LIST_SMALL, + 32:wxIMAGE_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 = wxNullBitmap): + '''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, wxBitmapPtr ): + if isinstance( mask, wxColour ): + index = self.__magicImageList.AddWithColourMask( icon, mask ) + else: + index = self.__magicImageList.Add( icon, mask ) + else: + raise ValueError("Unexpected icon object %s, " + "expected wxIcon or wxBitmap" % (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