X

Help Articles are product support tips and information straight from the NV5 Geospatial Technical Support team developed to help you use our products to their fullest potential.



2817 Rate this article:
No rating

How to Programmatically Add a Legend to an iTool


This sample program demonstrates how a user can programmatically control the location of a legend in an iTool window. Although this example uses iPlot the locations also apply to other iTools as well.
Allowable legend positions for 'Legend_Location':
Top Left = 1
Top Center = 2
Top Right = 3 (default location)
Bottom Left = 4
Bottom Center = 5
Bottom Right = 6

Steps
  1. Use the TOOL keyword to the ITGETCURRENT function to retrieve the object reference to the currently active iTool.The variable 'idTool' will contain the iTool's object identifier, and the variable 'oTool' will contain the iTool's object reference.
  2. Call the inherited IDLitTool::DoAction method to execute the 'insert' operation on the selected item i.e. Legend.
  3. Use the inherited IDLitTool::FindIdentifiers method to retrieve the full object identifier of the iTool component object- in this case 'annotation'.
  4. Use a loop to display the different locations for all the legend annotations put location action into the undo-redo buffer and refresh window.
  5. Finally use the IDLitTool::CommitActions method to commit all pending transactions to the undo-redo buffer and refresh the current window.
    This method is designed to be used in conjunction with the IDLitTool::DoSetProperty method.

 

Pro iTool_Add_legend ;Start an iPlot with some random sample data iPlot, randomu(s,15) ; 1) Retrieve the object reference to the currently-active iTool idTool = itGetCurrent(tool=oTool) ; 2) Initiate the action to execute idTool = otool->DoAction('Operations/Insert/Legend') ; 3) Determine the full object indentifier. Uncomment to show that ; it is the annotation layer. This is a needed keyword... ;print, oTool -> FindIdentifiers('*LEGEND') ; Get full object identifier of the Legend object legendID = oTool -> FindIdentifiers('*LEGEND', /ANN) ; 4) Loop used to display the different locations for the legend for i=1,6 do begin ; Change the property (location) void = oTool -> DoSetProperty(legendID[0], 'LEGEND_LOCATION', i ) ; 5) Put location action into undo-redo buffer and refresh window oTool -> CommitActions wait, 1.0 endfor END
Please login or register to post comments.
Featured

End-of-Life Policy Enforcement for ENVI 5.3 / IDL 8.5 and Earlier Versions

5/6/2024

April 1, 2024 Dear ENVI/IDL Customer,  We are reaching out to notify you of our supported... more »

How to Upgrade licenses to ENVI 6.x / IDL 9.x

12/5/2023

What is the new Upgrade function? Starting with ENVI 6.0 and IDL 9.0, we have implemented an... more »

What to do if the 'License Administrator - License Server' for the Next-Generation License Server does not start?

6/13/2023

Background: With the release of ENVI 5.7 & IDL 8.9 and the corresponding Next-Generation licensing... more »

Next-Generation Licensing FAQ

4/28/2023

  NV5 Geospatial has adopted a new licensing technology for all future releases of our ENVI, IDL... more »

The IDL Virtual Machine

6/6/2013

What is the IDL Virtual Machine? An IDL Virtual Machine is a runtime version of IDL that can... more »