Getting the selected ICE nodes


The context for custom menu callbacks gives you access to the current view instance, so you can use the selection view attribute to get the selected ICE nodes. See line 35 in the example.

import win32com.client
from win32com.client import constants

null = None
false = 0
true = 1

def XSILoadPlugin( in_reg ):
	in_reg.Author = "blairs"
	in_reg.Name = "My_ICETreeUserTool_Plugin"
	in_reg.Major = 1
	in_reg.Minor = 0

	in_reg.RegisterMenu(constants.siMenuICEViewToolsID,"My_ICETreeUserTool_Menu",false,false)
	#RegistrationInsertionPoint - do not remove this line

	return true

def XSIUnloadPlugin( in_reg ):
	strPluginName = in_reg.Name
	Application.LogMessage(str(strPluginName) + str(" has been unloaded."),constants.siVerbose)
	return true

def My_ICETreeUserTool_Menu_Init( in_ctxt ):
	oMenu = in_ctxt.Source
	oMenu.AddCallbackItem("My ICE Tree User Tool","OnMyICETreeUserTool")
	return true

def OnMyICETreeUserTool( in_ctxt ):
	itv = in_ctxt.GetAttribute("Target")
	
	LogMessage( 'View: ' + itv.Name )
	
	# get the selected nodes
	nodes = itv.GetAttributeValue('selection')
	LogMessage( 'Selected nodes: ' + nodes )