About the iTools Code Base
The iTools component framework is written almost entirely in the IDL language. The IDL code that implements both the component framework and all of the standard iTools included with IDL is available for you to inspect, copy, and learn from.
To inspect the iTools code, look in the lib/itools subdirectory of your IDL installation directory. The iTools code base is organized as follows:
- In the
lib/itoolsdirectory you will find code that implements the iTool launch routines. These routines can be called directly at the IDL command line to launch a specific iTool. - In the
lib/itools/frameworkdirectory you will find the core iTool object class definitions and utility routines. The classes in this directory define how the iTools operate; they are made available for your inspection, but they should not be altered. - In the
lib/itools/componentsdirectory you will find derived iTool object classes. The classes in this directory implement the non-core features of the iTool toolset as included with IDL. You are encouraged to use these classes to implement your own iTool functionality, either by subclassing from a derived iTool object class or by modifying a copy of the class definition for a derived class. - In the
lib/itools/ui_widgetsdirectory you will find the IDL code that creates an iTool user interface using IDL widgets. You may find it useful to inspect some of these routines if you are creating a side panel or a dialog used to collect parameter settings for an operation. See iTool User Interface Architecture for additional information on creating additional user interfaces for an iTool.
Documented vs. Undocumented Classes
If you inspect the lib/itools directory and its subdirectories, you will notice that there are many more classes included in the iTools component framework than are documented in the IDL Reference Guide and in this manual. Our approach to documenting the iTools code that is included with IDL is as follows:
- iTool launch routines for iTools included in the IDL distribution are documented in the IDL Reference Guide. Use of the launch routines for the pre-built iTools is discussed in the iTool User's Guide.
- The core iTool component framework classes used to build individual iTools, visualization types, operations, etc. are formally documented in the IDL Reference Guide and discussed in detail in this manual. If an object class, method, or property is necessary for the construction of a new iTool or component of an iTool, it is formally documented in the IDL Reference Guide or in this manual. Core iTool framework classes are located in the
lib/itools/frameworksubdirectory of the IDL installation directory. - Supporting iTool component framework classes — those used to implement the documented component framework classes — are not formally documented. As noted previously, the code for these classes is available for inspection. Supporting iTool framework classes are located in the
lib/itools/frameworksubdirectory of the IDL installation directory. - Derived iTool classes — those used to implement individual iTools and their features — are not formally documented. These classes are derived from the formally documented classes, and as such can be understood by referring to the formal documentation. Derived iTool framework classes are located in the
lib/itools/componentssubdirectory of the IDL installation directory. - iTool user interface routines are not formally documented. These routines use standard IDL widget programming techniques, and as such can be understood by referring to the IDL widget documentation. User interface routines are located in the
lib/itools/ui_widgetssubdirectory of the IDL installation directory.
Warning on Using Undocumented Features
While you are encouraged to inspect the iTools code, and to copy or subclass from derived classes and user interface routines, be aware that classes and routines that are not formally documented are not guaranteed to remain the same from one release of IDL to the next. Keep the following points in mind when implementing your own iTools:
- ITT Visual Information Solutions will change undocumented supporting classes as necessary to improve the iTools system.
- ITT Visual Information Solutions may also change undocumented derived classes to fix problems or add functionality; in these cases, we will make every effort to preserve backwards compatibility, but this is not guaranteed.
If you create new iTool classes based only on the formally documented iTool interfaces, your tools should operate properly with future releases of IDL. If you base your tools on undocumented derived classes, minor modifications may be necessary to ensure future compatibility.