Conductor is a code-generating tool which is used with xvroutines. The purpose of conductor is to generate GUI drivers for xvroutines, plus the code necessary to mediate between the application program and its GUI (defined in the *.form file).
The current values of the selections on the GUI of an xvroutine are stored in the GUI Information structure. The GUI Information structure is generated by conductor in the "form_info.h" file. Conductor also generates the code to initialize the GUI Information structure in the "form_init.c" file. The code to extract information from the GUI during runtime is generated by conductor in the "form_info.c" file.
Another important function of conductor is to generate the GUI drivers that will direct the software control flow of your xvroutine as the user interacts with its GUI. As an extension, it also generates the skeletons of the functions to which the software control flow will be directed; it is in these functions that you add the functionality to your xvroutine.
The GUI of an xvroutine is hierarchical; it may contain a maximum of three levels in its hierarchy, where the highest possible level is a master form, the middle level is a subform, and the lowest level is a pane. The simplest GUI is a single pane on a single subform; this design can be thought of as uni-level. Subforms with guidepanes offer the user a choice of several panes; these subforms are considered bi-level. Only GUI's which utilize a master form are truly tri-level. The master form is at the top, offering access to mid-level subforms; the subforms in turn control subordinate panes.
In reflection of the tri-level hierarchy of the Khoros GUI (master form / subform / pane), most of the code generated by conductor is also designed in a three part hierarchy. The GUI Info structure is a tri-level data structure, and three levels of GUI drivers and subdrivers will direct the software control flow of your xvroutine. As mentioned above, not all xvroutines use all three levels; in such cases, portions of the GUI Info structure and GUI drivers corresponding to the unused higher levels will be minimized, but not eliminated.
The arguments to conductor is as follows:
[-tb The [-tb] flag specifies the name of the toolbox in which the xvroutine is installed; conductor needs to know which toolbox your xvroutine is installed in so that it can find the files associated with the xvroutine. If conductor is run when the local directory is in the directory structure of the toolbox in question, the [-tb] option can be left off, as the toolbox can be extrapolated from the current directory location.
[-oname The [-oname] flag specifies the name of the xvroutine on which conductor is to be run. If conductor is run when the local directory is the src/ directory of the xvroutine in question, the [-oname] option can be left off, as the program object name can be extrapolated from the directory location.
[-force]: Setting this flag to TRUE will force over-write of files; that is, it will suppress prompting before a file is over-written.
[-debug]: Generally used only by members of the Khoros programming staff, providing a value of TRUE (1) for [-debug] will cause conductor to put kfprintf() statements in the GUI drivers of the xvroutine, so that values set by the user on the GUI are printed out when control flow is returned to the xvroutine.
% conductor -tb envision -oname xprism -force