IDL Programming Concepts and Tools
IDL's programming environment provides tools that help you organize and accelerate code development. The IDL workspace and projects provide the basic framework for IDL programming. The different programming tools include object and GUI programming, including the iTools library. These concepts are introduced in the following sections, along with how to distribute your IDL applications.
Workspace
The Workbench in IDL uses the concept of a workspace, where IDL stores all projects, folders, and files in a single directory. All projects reside in the workspace. You can choose where the workspace physically resides on your system, and you can create multiple workspaces, but only one can be open at a time.
Projects
An IDL project is a virtual collection of folders, files, and metadata. Projects are not required by IDL, but the benefits of saving programs in projects include cross-project searching and easy navigation. You can also use projects for customizing builds, version management, sharing, and resource organization.
In the IDL workflow, you first create a project using the Workbench and specify a location for it in the file system. Code files are then associated with the project.
Object Programming
Object-oriented programming blurs the lines between routines and the data that they act upon. The benefits of using object-oriented programming include reusable classes and more modular code (easier to find and fix errors). Object-oriented applications can also be easier to maintain and extend.
IDL began as a procedural language, but object-oriented programming was introduced in IDL 5.0. One of the driving reasons was to simplify 3D graphics capabilities (known as Object graphics in IDL). The IDL Object graphics system is a collection of pre-defined object classes that act as building blocks. To build a useful application, you must use several of these building blocks together. Compared to IDL's Direct graphics, object graphics are more complex, but produce robust, 3-D visualizations. Another difference is that object graphics are meant for application development rather than for command-line users.
For more information, see The Basics of Using Objects in IDL.
Graphical User Interface (GUI) Programming
IDL provides several programming options for creating user interfaces. The following list shows the options in order from simplest to most complex:
- Command-line—using the IDL command line, you can display data in the IDL output log or direct graphics visualizations. For example, using statements such as PLOT, PRINT, and TV.
- iTool Interface—using an existing iTool allows you to quickly display data and manipulate images. Existing iTools include iPlot, iImage, iContour, iSurface, and iVolume.
- Custom Widget Interface—IDL provides a library of widget tools to create simple controls such as buttons and sliders. Using widgets offers you complete control over user interface design, but you must code all the underlying functionality. It is possible for more advanced programmers to create applications that combine iTools and widgets.
- Custom iTool—The most complex programming option is creating custom iTool interfaces. This option allows you to expand the capabilities and appearance of the standard iTools.
iTool Programming
The term iTools stands for intelligent tools, which are a collection of IDL applications that share a common framework. The iTools all have a graphical user interface (GUI) that allows you to program applications with custom toolbars, menus, buttons, etc. IDL provides several predefined iTools, and you can develop your own using iTool programming.
Programming in iTools uses the iTools Component Framework, which is a set of class files and utilities that help you create new tools or extend the existing iTools.
For more information, see Creating an iTool.
Distributing Programs
Once you have completed your application, you can quickly and easily create a distribution of your software product. See Running and Building Projects for information on packaging your application for distribution.