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 )