| 
             Use the GetToolList() to get the toolList instance from Scorpion 
            The GetToolList() may also be used to access tools in toolboxes 
            at difference levels 
            
              GetToolList('.') returns the toollist at current level, 
              equals GetToolList() 
              GetToolList('..') returns the above toolbox parent toollist 
              GetToolList('TB') returns the toollist of the toolbox 'TB' at 
              current level 
              GetToolList(':') returns the root level toollist from any level 
              GetToolList(':TB') returns the toolist of the toolbox 'TB' at root 
              level from any level 
             
            The ToolList uses the guards and active flag when executing tools
            (as opposites to the Tool class) 
            
              
              
                | Attribute | 
                Access | 
                Type | 
                Description |  
              
                | count | 
                R | 
                int | 
                number of tools in toollist |  
              
                | next | 
                R/W | 
                string | 
                name of next tool in execution loop |  
              
                | recursiveCount | 
                R | 
                int | 
                current recursive counter, may be used to
                  prevent entering too many recursive calls to execute |  
              
                | execCount | 
                R | 
                int | 
                total tools executed in last Inspect command |  
              
                | config | 
                R/W | 
                string | 
                toolbox configuration XML string |  
               
              
            
              
              
                | Method | 
                Returns | 
                Description |  
              
                | indexof(name) | 
                int | 
                Return index of tool |  
              
                | get(name) | 
                Tool | 
                Returns python Tool instance by name -
				more information |  
              
                | tool(index) | 
                Tool | 
                Returns python Tool instance by index -
				more information | 
               
              
                | reset(first="",last="") | 
                0/1 | 
                Resets all tool results for a range of tools. 
				 
				The first
                  and last parameters are optional, but if last tool is given the first
                  tool has to be given too. If first and last is omitted all
                  tools will be reset. | 
               
              
                | add(type,name,notify=True) | 
                Tool | 
                Adds a tool of given type and name. Note that
                  both type and name is case sensitive. If add fails, either due
                  to type error or duplicate names, no tool instance is
                  returned. The optional notify parameter notifies tool added. 
				If multiple tools are to be added notified should be set to 0 
				and instead call the changeNotify method when done instead. 
				Note : Use tool object to configure tool instance or load tool 
				configuration from a file. |  
              
                | insert(index,type,name,notify=True) | 
                Tool | 
                Inserts a tool at a given zero indexed position, 
				see the add function for more information |  
              
                | delete(name) | 
                0/1 | 
                Deletes a tool - returns 1 if deleted, else
                  0.  
				Note : A tool cannot be deleted if it is referred by
                  another tools - you have to remove any dependencies before
                  deletion. |  
              
                | deleteAll(notify=True) | 
                0/1 | 
                deletes all tools in the toolist. |  
              
                | load(filename ,section="") | 
                0/1 | 
                Loads tools from configuration file. Load 
				replaces an existing toollist.  The filename must point to 
				a valid toollist spb configuration file.  
				This can be a scorpion.spb file or an spb exported from 
				Scorpion. 
				In the standard Scorpion configuration file - scorpion spb - the section 
				is tools.config. When the
                  section name is omitted tools will be loaded from spb 
				configuration file's root level. |  
              
                | save(filename,section="") | 
                0/1 | 
                Saves all tools to a spb configuration file. If section 
				name is omitted the tools will be saved at spb
                  root level. |  
              
                | clearOverlays(first="",last="") | 
                0/1 | 
                Clears all overlay graphics for a range of tools. The first
                  and last are optional, but if last tool is given the first
                  tool has to be given too. If first and last is omitted all
                  tools will be reset. | 
               
              
                | execute(first="",last="",manuals=True) | 
                0/1 | 
                Executes a range of tools. The first, last and 
                manuals are optional. If first and last is omitted all tools will 
                be executed,  manual tools included. If manuals=0 the tool 
                execution will be executed as in Scorpion inspect 
                command. The general purpose of this method is to execute a 
                group of manual tools. | 
               
              
                | changeNotify() | 
                0/1 | 
                notify Scorpion it has been a change in the 
				toollist. | 
               
               Special care
            must be taken to prevent entering recursively execution of the
            ToolList.
            When manipulating the tool list by scripts, deleting and adding 
			tools, some operations have an optional notify parameter. The notify 
			parameter is for speed optimization when executing multiple 
			operations on the tool list.  Make sure to call notifyChanges 
			when done. If not notifying Scorpion may enter an unstable condition 
			if a module in Scorpion refers a deleted tool or parameter. 
            Example 1 - Execute a selected tool range four times #the following example executes a range of tools 4 times, changing the image reference in each loop.
#this way 4 different images may be executed equal with a minimal number of tools  
tools=GetToolList()
for i in range(4):
  SetValue('ImageRef.Value',i+1)                #sets the external scalar used as  image reference
  tools.execute('Locate','ExportResults',0)     #exceutes tools named 'Locate' until including 'ExportResults', ignoring manual tools
			
          Example 2 - Change Toolist Execution Order tools=GetToolList()
tools.execute('FindLine0','FindLine10')
tools.next = 'Blob2' # sets the next tool to be executed
			Example 3 - Iterating all templatefinder to Classify 
			Inspection Status tools=GetToolList()
ok = 1
for i in range(tools.count):
  tool = tools.tool(i)
  if tool.type == 'TemplateFinder3' and not(tool.name == 'tf3') :
    b0 = tool.getIntValue('Count') == 1 # object present
    print i+1,' - ', tool.name,b0
    if not b0:
      spb=SPB.CreateSpb(tool.config)
      x = spb.getFloat('Center.X')
      y = spb.getFloat('Center.Y')
      DrawText('',x,y,tool.name,'Red',12)
    if ok and not b0 :
      ok = 0
SetIntValue('Pass.Value',ok)
			Example 4 - Access tools outside current toolbox (valid inside 
            toolbox scripts only) 
            def browse(name):
  print '--- tools in "%s" ---'%name
  tools=GetToolList(name)
  for i in range(tools.count):
    t=tools.tool(i)
    print t.fullname,t.type
browse(':')    #root level
browse('tbox') #tools of toolbox 'tbox' at current level
browse('.')    #tools at current level
browse('..')   #tools at above level
           |