User's Guide to the Itcl Class List Editor

This class provides a text editor specialized for editing lists of Itcl classes. These class lists can be used to generate an graphical class diagram. This tool is automatically invoked whenever you open any file with a ".icl" extension (.icl stands for Itcl Class List). The ItclClassList class is derived from the Edit class, and therefore inherits all of its features.

The Itcl Class List tool consists of a tool bar and a windowpane containing the current list of itcl classes. Usually, the user adds classes to the list and then generates a class diagram.

Toolbar

The tool bar consists of the following buttons:
Include Tycho
This button inserts the names of all of the Tycho Itcl files into the current list. This is especially useful if you want to make a custom diagram of the Tycho classes and classes the you are working on.
Include Directory
This button brings up a file browser and prompts the user to select a file in a directory. All of the *.itcl and *.itk files are then added to the current list of Itcl files.
Clear
This button clears the entire contents of the current list.
Diagram File Name
This button brings up a file browser that allows the you to select the file name of class diagram to be produced. The class diagram that is produced is a Directed Acyclic Graph (DAG), so the diagram file name should have a .dag extension.
Update Class Diagram
This button generates a class diagram from the current list of files. The class diagram is a DAG, so the EditDAG class is used.

Bugs

  • Because we use a Directed Acyclic Graph to display the class hierarchy, multiple inheritance is not shown. If a class has multiple inheritance, then we bring up a message.
  • Since Itcl is dynamically scoped, it can be difficult to determine inheritance from just reading a file. In particular, subtle differences in namespaces can confuse this tool. For example, the TWidget class inherits from ::itk::Widget with the following:
    class ::tycho::TWidget {
        inherit ::itk::Widget
    
    However, in Itcl2.2, the Widget class is specified with:
    class itk::Widget {
        inherit itk::Archetype
    
    At this point, the class diagram tool will not match up ::itk::Widget and itk::Widget. In theory, the code could be modified so that it prepends :: if necessary.
  • It would be nice if the 'Include Directory' button had a preference that determined what extensions were globbed for and included.
  • There should be a way for the user to specify the label of the DAG from within the tool. Currently, the workaround is to edit the file by hand.
  • Tycho Home Page


    Copyright © 1996, The Regents of the University of California. All rights reserved.
    Last updated: 12/16/96, comments to: tycho@eecs.berkeley.edu