One major problem with the iTools is that controlling them via a script can be quite complicated (and I’m not even talking about extending them, i.e., adding new capabilities to them). IDL 7.1 is a major change in the programmatic iTools API: many routines were renamed, several routines were added, and a couple keywords were added.
The main changes to the API which will cause backward compatibility problems are trivial changes to helper routine names:
IRESOLVE. The arguments to the routines remained the same.
The main new routine is
IOPEN. It uses the registered file readers to open a given file, optionally sending the data directly to an iTool:
IDL> iopen, file_which('endocell.jpg'), /visualize
Third-party developers can add to the registered file-readers which
IOPEN will use (but that is extending the iTools and beyond the scope of what we are talking about here). The
ISAVE routine was also added to save the contents of an iTools window to an image file, PostScript file, or iTools SAVE file. For example,
IDL> iplot, findgen(11) IDL> isave, 'test.ps'
The output format is determined by the extension of the filename.
Properties of iTool components can be set easily:
IDL> iplot, findgen(11) IDL> isetproperty, 'plot', color=[255, 0, 0]
They can also be retrieved with `IGETPROPERTY.
The IPUTDATA and IGETDATA routines make it much more convenient to get at the data in an iTool. For example, the following grabs the data from an iTool and plots using
IDL> iplot, findgen(11) IDL> igetdata, 'plot', data IDL> plot, data
Data for an iTool can also be changed:
IDL> iputdata, 'plot', 2. * findgen(11)
The iTool detects the change and automatically updates its display. The iTools equivalent to
ICONVERTCOORD, was also added to convert between coordinate systems.
New routines also allow the current iTool window to be annotated:
IDL> iplot, findgen(11), /scatter, sym_index=1 IDL> itext, 'important point', 5., 3., /data, font_size=9 IDL> ipolyline, [[4.1, 3.9], [4.9, 3.2]], /data, arrow_style=2, $ IDL> arrow_size=0.025
ITEXT were added.
IZOOM routines were also added to manipulate the current iTool window.
Updating to IDL 7.1 will probably mean making changes to any code that programmatically controls iTools. But a lot of things that required getting into the guts of the iTools framework before now can be done with a single command.