Jeff Grimmett with some tweaks and changes from Robin git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#----------------------------------------------------------------------------
 | 
						|
# 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
 | 
						|
 | 
						|
 | 
						|
 |