mirror of
https://github.com/nasa/trick.git
synced 2024-12-27 00:31:07 +00:00
19025d77ad
Reorganized. Created a new top level include directory that will hold all of Trick's header files. Moved all of the Trick headers to this directory. Created a libexec directory that holds all of the executables that users don't need to execute directly. Changed all of the executables remaining in bin to start with "trick-". In the sim_services directories changed all source files to find the Trick headers in their new location. Since all of the include files are gone in sim_services, removed the src directories as well, moving all of the source files up a level. Moved the makefiles, docs, man, and other architecture independent files into a top level share directory. Renamed lib_${TRICK_HOST_CPU} to lib64 or lib depending on the platform we're currently on. refs #63
400 lines
22 KiB
Plaintext
400 lines
22 KiB
Plaintext
/**
|
|
* @page TrickViewPage
|
|
* @section LEVEL3 Trick View
|
|
*
|
|
* %Trick View (hereafter referred to as TV) is a graphical user interface that allows users to view and modify Trick-managed
|
|
* variables in a simulation while it is running. It also provides for the launching of integrated strip charts and can save
|
|
* and restore lists of variables and their associated strip charts.
|
|
*
|
|
* @see @ref ExternalApplications "Runtime GUIs"
|
|
*
|
|
* @section LEVEL4 Launching
|
|
* TV can be launched via one of:
|
|
*
|
|
* - From the @ref SimControlPanel "Simulation Control Panel", under the <code>Actions</code> menu.
|
|
*
|
|
* @image html ../../../doxygen/images/tv_launch.jpg
|
|
* @image rtf ../../../doxygen/images/tv_launch.jpg
|
|
*
|
|
* - From the command line:
|
|
* @code tv [options] @endcode
|
|
* The TV launch script is located in <code>$TRICK_HOME/bin</code>. Pass <code>\-\-help</code> for a description of
|
|
* available options.
|
|
*
|
|
* For additional launching options, see @ref ExternalApplicationsAutomaticLaunching "Automatically Launching Applications".
|
|
*
|
|
* @section LEVEL4 Automatically Opening Files
|
|
*
|
|
* Files that are to be automatically opened when TV launches can be specified via one of:
|
|
*
|
|
* - From the command line, use the <code>\-\-open</code> option.
|
|
* File paths are relative to the directory from which TV launches.
|
|
*
|
|
* - From the input file or user model code, use Trick::TrickView::set_auto_open_file.
|
|
* File paths are relative to the directory containing the S_main executable.
|
|
*
|
|
* Opening a TV file will overwrite the current cycle period or any argument to <code>\-\-cycle</code> with the value from
|
|
* the file, subject to the minimum cycle period.
|
|
*
|
|
* @section LEVEL4 Automatically Opening and Setting Files
|
|
*
|
|
* Files that are to be automatically opened and set when TV launches can be specified via one of:
|
|
*
|
|
* - From the command line, use the <code>\-\-openSet</code> option.
|
|
* File paths are relative to the directory from which TV launches.
|
|
*
|
|
* - From the input file or user model code, use Trick::TrickView::set_auto_open_and_set_file.
|
|
* File paths are relative to the directory containing the S_main executable.
|
|
*
|
|
* Opening a TV file will overwrite the current cycle period or any argument to <code>\-\-cycle</code> with the value from
|
|
* the file, subject to the minimum cycle period.
|
|
*
|
|
* @section LEVEL4 Automatically Setting Files
|
|
*
|
|
* Files that are to be automatically set when TV launches can be specified via one of:
|
|
*
|
|
* - From the command line, use the <code>\-\-set</code> option.
|
|
* File paths are relative to the directory from which TV launches.
|
|
*
|
|
* - From the input file or user model code, use Trick::TrickView::set_auto_set_file.
|
|
* File paths are relative to the directory containing the S_main executable.
|
|
*
|
|
* @section LEVEL4 Strip-Chart-Only Mode
|
|
*
|
|
* Once a collection of strip charts is established and saved to a TV file, you may wish to prevent future launches from
|
|
* displaying the main GUI window to allow users to view the strip charts without providing them (potentially dangerous)
|
|
* access to the simulation's internal variables. You can cause %Trick View to launch in strip-chart-only mode via one of:
|
|
*
|
|
* - From the command line, use the <code>\-\-stripChartsOnly</code> option.
|
|
*
|
|
* - From the input file or user model code, use Trick::TrickView::set_strip_charts_only.
|
|
*
|
|
* Note that you must provide a TV file to be automatically opened as described above when launching in strip-chart-only
|
|
* mode.
|
|
*
|
|
* @section LEVEL4 The Trick View GUI
|
|
*
|
|
* The GUI pictured below may have a different look and feel based on the architecture of the machine on which it is running,
|
|
* but the functionality will remain the same.
|
|
*
|
|
* @image html ../../../doxygen/images/TrickView.jpg
|
|
* @image rtf ../../../doxygen/images/TrickView.jpg
|
|
*
|
|
* @section LEVEL5 File Buttons
|
|
*
|
|
* The file buttons provide for persistent storage of lists of variables of interest. From left to right, they are:
|
|
*
|
|
* - <b>New</b><br>
|
|
* Clears the variable table.
|
|
*
|
|
* - <b>Open</b><br>
|
|
* Opens a dialog allowing the user to select a TV file. The variable table will be cleared and replaced by
|
|
* the variables from the file. The saved cycle period and any strip charts will be restored.
|
|
*
|
|
* - <b>Open And Set</b><br>
|
|
* Opens a dialog allowing the user to select a TV file. The variable table will be cleared and replaced by
|
|
* the variables from the file. Additionally, the variables will be set to their corresponding values in the file.
|
|
* The saved cycle period and any strip charts will be restored.
|
|
*
|
|
* - <b>Set</b><br>
|
|
* Opens a dialog allowing the user to select a TV file. The variables listed in the file will be set to
|
|
* their corresponding values in the file. The variable table, cycle period, and any strip charts will be unaffected.
|
|
*
|
|
* - <b>Save</b><br>
|
|
* Opens a dialog allowing the user to specify a file name. The variables in the variable table and their associated
|
|
* information, the cycle period, and any strip charts will be written to the file.
|
|
*
|
|
* @section LEVEL5 Monitor Button
|
|
*
|
|
* The monitor button displays the current state of the monitor and allows the user to toggle receiving updates on the
|
|
* variables in the variable table. A blue screen indicates that updates are being received. A black screen indicates they
|
|
* are not.
|
|
*
|
|
* @section LEVEL5 Variable Buttons
|
|
*
|
|
* The variable buttons affect variables in the variable table. From left to right, they are:
|
|
*
|
|
* - <b>Strip Chart</b><br>
|
|
* Launches a strip chart that will plot all selected variables on the same graph while the simulation is running.
|
|
*
|
|
* - <b>Delete</b><br>
|
|
* Removes the selected variables from the variable table and all strip charts.
|
|
*
|
|
* @section LEVEL5 Variable Hierarchy Tree
|
|
*
|
|
* This panel displays all of the simulation's Trick-managed variables in a hierarchical format. Initially, only the
|
|
* top-level simulation objects are displayed. A variable representing a structure or class containing variables can be
|
|
* expanded or collapsed by double-clicking its name or by single-clicking the expand/collapse node to the left of its name.
|
|
* Double-clicking a variable that does not represent a structure or class will add it to the variable table. Multiple
|
|
* variables can be simultaneously selected via the shift and control (command on Mac) keys. Variables can also be added by
|
|
* selecting them, right-clicking anywhere in the variable hierarchy tree, and selecting <code>Add Selection</code> from the
|
|
* pop-up menu. Adding a variable that represents a structure or class will add all of its contained variables (at all lower
|
|
* levels). The top layer of the variable hierarchy tree will be populated when TV has finished parsing the information from
|
|
* the simulation, which takes place in the background. Lower levels are loaded on-demand as the tree is expanded. Although
|
|
* unlikely to occur in practice, it is possible that expanding every node in a large simulation will consume all of the
|
|
* application's available memory, in which case it will become extremely unresponsive.
|
|
*
|
|
* @section LEVEL5 Search Panel
|
|
*
|
|
* The search panel allows the user to search the variable hierarchy tree by partial name or regular expression, with an
|
|
* option for case sensitivity. Resulting listed variables can be added to the variable table in manners similar to those
|
|
* of the variable hierarchy tree. The search panel becomes available for use at the same time as the variable hierarchy
|
|
* tree. Search progress is indicated by a progress bar below the results list. During the initial search, only an
|
|
* indication of activity is given while the application counts the total number of simulation objects. In subsequent
|
|
* searches, a quantitative value of progress is displayed.
|
|
*
|
|
* @section LEVEL5 Index Specification Window
|
|
*
|
|
* When adding variables to the variable table, if any variables are pointers or arrays, the index specification window will
|
|
* be displayed, allowing the user to specify the ranges to add.
|
|
*
|
|
* @image html ../../../doxygen/images/TVSpecifyIndices.jpg
|
|
* @image rtf ../../../doxygen/images/TVSpecifyIndices.jpg
|
|
*
|
|
* Each array displays a combo box over its allowable range. Each pointer has a single text box that accepts values in the
|
|
* form <code>minimum-maximum</code>. Character pointers and arrays have a check box allowing them to be treated as strings.
|
|
* The position radio buttons specify where in the variable table the variables will be added, relative to the currently
|
|
* selected row.
|
|
*
|
|
* @section LEVEL5 Variable Table
|
|
*
|
|
* The variable table lists all the added variables, displaying their names, values, units, and formats. Columns can be
|
|
* freely rearranged by clicking and dragging their headers. Rows can be sorted by clicking the column header corresponding
|
|
* to the property by which they should be sorted. Rows are sorted first by the most recently clicked column header, then by
|
|
* the header clicked before that, and so forth. Rows can be manually reordered by clicking and dragging them. Note that
|
|
* manual reordering will remove any currently applied sorting. Further display customization is available via the Column
|
|
* Control Menu, which is accessed by clicking the miniature table icon in the upper right-hand corner of the table. Pressing
|
|
* the <code>Delete</code> key while the variable table has focus is equivalent to clicking the delete variable button.
|
|
*
|
|
* While you cannot actually change a variable's name, you can quickly add another variable of a similar name by
|
|
* double-clicking the name cell of a variable and modifying it. The original variable will remain unchanged, and a variable
|
|
* of the new name will be added.
|
|
*
|
|
* Each variable's value is displayed according to its type and format. Booleans are represented by check boxes; enumerated
|
|
* types, by combo boxes; and all other types, by a string. Modifying a variable's value is achieved by clicking the check
|
|
* box, selecting a value from the combo box, or directly entering a new value. Inputs are validated against the variable's
|
|
* type before being submitted to the Variable Server. Note that the displayed value will not change until the
|
|
* Variable Server reflects the change.
|
|
*
|
|
* Variable units are displayed via a combo box containing all of the supported units. To change a variable's units, click
|
|
* its units cell and select a new value. Note that the displayed units will not change until the Variable Server reflects
|
|
* the change.
|
|
*
|
|
* Variable formats are displayed via a combo box containing all of the supported formats for the variable's type. To change
|
|
* a variable's format, click its format cell and select a new value. The displayed value will be updated immediately.
|
|
*
|
|
* Multiple, non-contiguous selections are allowed and may be used to affect mass value, unit, and format changes. When
|
|
* performing a mass edit, the assigned/selected value will only be applied to variables that can accept it.
|
|
*
|
|
* @subsection LEVEL6 Invalid References
|
|
*
|
|
* Variables that the Variable Server failed to resolve display values of <code>\<Invalid Reference\></code> and are
|
|
* highlighted in red. Such a variable's value and units cannot be changed, but its name can still be modified for the
|
|
* purpose of adding new variables.
|
|
*
|
|
* @section LEVEL5 Manual Entry Field
|
|
*
|
|
* The manual entry field provides the user a means by which to directly add a variable of any name. This is useful if a
|
|
* variable's information is not present in the S_sie.resource file or the file itself is not present, or if the variable
|
|
* is a pointer to the beginning of an array. Multiple elements of an arrayed variable can be added by specifying the range
|
|
* within the brackets, such as:
|
|
*
|
|
* @code ball.obj.state.output.position[0-1] @endcode
|
|
*
|
|
* Note that pointers cannot be dereferenced using the pointer dereference operator (<code>*</code>) in TV. Instead, the user
|
|
* should treat the pointer as a single-element array and append the variable's name with <code>[0]</code>.
|
|
*
|
|
* @section LEVEL5 Purge Button
|
|
*
|
|
* The purge button removes all variables from the variable table that have a value of <code>\<Invalid Reference\></code>.
|
|
*
|
|
* @section LEVEL5 Resolve Button
|
|
*
|
|
* The resolve button submits a request to the Variable Server to attempt to resolve all invalid references to legal values,
|
|
* which can be useful if a previously null pointer has become valid.
|
|
*
|
|
* @section LEVEL5 Connection Status Bar
|
|
*
|
|
* The connection panel displays host and port information when TV is connected to a simulation. When disconnected, clicking
|
|
* on the combo box displays a list of available simulations to which to connect. Alternately, the information can be
|
|
* entered directly into the panel in the form of <code>host:port</code>.
|
|
*
|
|
* @section LEVEL5 Clearing Logged Data
|
|
*
|
|
* TV records the value of every variable in the variable table each time the Variable Server sends a report. This allows
|
|
* newly launched strip charts to include data going back all the way to the point at which the variable was first added.
|
|
* This can eventually result in a large amount of memory usage. If performance begins to degrade, you can clear the log of
|
|
* all values via the <code>Action</code> menu of either TV or any strip chart. Note that this will erase any data currently
|
|
* being displayed on any strip charts.
|
|
*
|
|
* @section LEVEL5 Settings
|
|
*
|
|
* The Settings dialog can be accessed via the <code>File</code> menu and allows the user to alter the behavior of TV.
|
|
* See @ref ExternalApplications "Runtime GUIs" for a detailed description of Application Behavior and Cycle Period options.
|
|
*
|
|
* @image html ../../../doxygen/images/TVSettings.jpg
|
|
* @image rtf ../../../doxygen/images/TVSettings.jpg
|
|
*
|
|
* @subsection LEVEL6 Variable Tree Order
|
|
*
|
|
* The order in which the variable hierarchy is displayed has two options:
|
|
*
|
|
* - <b>Alphabetic</b><br>
|
|
* Variables are sorted alphabetically.
|
|
*
|
|
* - <b>Declared</b><br>
|
|
* Variables are sorted according to their order of declaration within the simulation.
|
|
*
|
|
* @subsection LEVEL6 Variable Addition
|
|
*
|
|
* The placement of newly added variables within the variable table is specified via the Position combo box. The available
|
|
* options are <code>Top</code>, <code>Before</code>, <code>After</code>, and <code>Bottom</code>. The <code>Before</code>
|
|
* and <code>After</code> options are relative to the currently selected row.
|
|
*
|
|
* Character pointers and arrays can be treated as strings by default by checking the <code>char[] as string</code> check
|
|
* box. When added as such, arrays will be collapsed into single string entries. Otherwise, they will be displayed element
|
|
* by element.
|
|
*
|
|
* @subsection LEVEL6 Font Size
|
|
*
|
|
* This setting affects the variable hierarchy tree, search panel, and variable table text size.
|
|
*
|
|
* @subsection LEVEL6 Default Units
|
|
*
|
|
* Default units for each unit type can be specified via its corresponding combo box, which lists all of its available
|
|
* units. Selecting <code>xx</code> results in units as specified in the model code. The <code>Default All</code> check box,
|
|
* when selected, is equivalent to selecting <code>xx</code> for all unit types.
|
|
*
|
|
* @subsection LEVEL6 Default Formats
|
|
*
|
|
* Default formats for each variable type can be specified via its corresponding combo box.
|
|
*
|
|
* @section LEVEL4 The Strip Chart GUI
|
|
*
|
|
* Strip charts allow users to plot variables in the variable table in real-time. The GUI pictured below may have a different
|
|
* look and feel based on the architecture of the machine on which it is running, but the functionality will remain the same.
|
|
*
|
|
* @image html ../../../doxygen/images/Stripchart.jpg
|
|
* @image rtf ../../../doxygen/images/Stripchart.jpg
|
|
*
|
|
* @section LEVEL5 Domain Axis Panel
|
|
*
|
|
* The domain axis panel allows the user to affect the range of the domain axis.
|
|
*
|
|
* - <b>All</b><br>
|
|
* The domain axis will continuously adjust to contain the entirety of all plotted variables' domain values.
|
|
*
|
|
* - <b>Strip</b><br>
|
|
* The domain axis will continuously scroll such that the latest sub-set (as set by the adjacent text box) of domain values
|
|
* is contained.
|
|
*
|
|
* - <b>Fixed</b><br>
|
|
* The domain axis will not automatically change.
|
|
*
|
|
* @section LEVEL5 Display Panel
|
|
*
|
|
* The display panel allows the user to specify whether or not the chart should display certain features.
|
|
*
|
|
* - <b>Lines</b><br>
|
|
* When enabled, lines will be drawn between the data points.
|
|
*
|
|
* - <b>Points</b><br>
|
|
* When enabled, the data points themselves will be drawn.
|
|
*
|
|
* - <b>Legend</b><br>
|
|
* When enabled, the chart's legend will be shown.
|
|
*
|
|
* @section LEVEL5 Variables Panel
|
|
*
|
|
* The variables panel allows the user to add and remove dependent variables, and to change the independent variable. To add
|
|
* a dependent variable, select it from the adjacent combo box and click the <code>Add</code> button. To remove a dependent
|
|
* variable, select it from the adjacent combo box and click the <code>Remove</code> button. To change the independent
|
|
* variable, select it from the adjacent combo box.
|
|
*
|
|
* @section LEVEL5 Right-Click Menu
|
|
*
|
|
* Right-clicking the plot area will display a context menu with the following options:
|
|
*
|
|
* - <b>Properties</b><br>
|
|
* Opens a dialog allowing the user to customize the plot as described below.
|
|
*
|
|
* - <b>Copy</b><br>
|
|
* Copies the plot to the clipboard, allowing the user to paste the content into other applications.
|
|
*
|
|
* - <b>Save As...</b><br>
|
|
* Opens a dialog allowing the user to save the plot as a PNG file.
|
|
*
|
|
* - <b>Print...</b><br>
|
|
* Opens a dialog allowing the user to print the plot.
|
|
*
|
|
* - <b>Zoom In</b><br>
|
|
* Zooms in either or both axes. This can also be achieved by left-click-dragging a box from its top-left to bottom-right
|
|
* corner.
|
|
*
|
|
* - <b>Zoom Out</b><br>
|
|
* Zooms out either or both axes. This can also be achieved by left-click-dragging any other way than described above.
|
|
*
|
|
* - <b>Auto Range</b><br>
|
|
* Automatically adjusts one or both axes.
|
|
*
|
|
* @section LEVE5 Chart Properties Dialog
|
|
* The Chart Properties dialog can be opened by selecting <code>Properties</code> from the plot's right-click menu.
|
|
* It allows the user to customize the appearance of the chart. These settings are part of the properties that are saved
|
|
* in TV files.
|
|
*
|
|
* @image html ../../../doxygen/images/TVChartPropertiesTitleTab.jpg
|
|
* @image rtf ../../../doxygen/images/TVChartPropertiesTitleTab.jpg
|
|
*
|
|
* The <code>Title</code> tab allows the user to toggle visibility of the title and to set the title's text, font, size,
|
|
* and color.
|
|
*
|
|
* @image html ../../../doxygen/images/TVChartPropertiesPlotTab.jpg
|
|
* @image rtf ../../../doxygen/images/TVChartPropertiesPlotTab.jpg
|
|
*
|
|
* The <code>Plot</code> tab allows the user to set the label text, font, size, and color for the domain and range axes.
|
|
* It also provides for toggling the visibility of each axis' tick labels and marks, for setting each axis' label font
|
|
* and size, and for adjusting the range of each axis.
|
|
*
|
|
* @image html ../../../doxygen/images/TVChartPropertiesAppearanceTab.jpg
|
|
* @image rtf ../../../doxygen/images/TVChartPropertiesAppearanceTab.jpg
|
|
*
|
|
* The <code>Appearance</code> tab within the <code>Plot</code> tab allows the user to set the plot's border's width and
|
|
* color and the plot's background color. It also provides for inverting the axes.
|
|
*
|
|
* @image html ../../../doxygen/images/TVChartPropertiesOtherTab.jpg
|
|
* @image rtf ../../../doxygen/images/TVChartPropertiesOtherTab.jpg
|
|
*
|
|
* The <code>Other</code> tab allows the user to set the background color of the area surrounding the plot (outside of the
|
|
* plot's borders) and also provides for toggling of the anti-aliasing feature. Modifying series properties is not currently
|
|
* supported.
|
|
*
|
|
* @section LEVEL4 TV Files
|
|
*
|
|
* TV files allow the user to store the states of the variable table and any existing strip charts to persistent
|
|
* memory. This saves configuration time for commonly used variable lists and strip chart selections.
|
|
*
|
|
* TV files have changed format a number of times since the release of %Trick 10. Originally, they were simple custom text
|
|
* files. This evolved into a custom XML format (%Trick 10.4) which provided for better verification under a formal language.
|
|
* As the amount and types of data to be saved to persistent memory between sessions increased, it became obvious that the
|
|
* creating and parsing of custom-defined XML elements was not maintainable in the long run. Thus, the persistent storage
|
|
* mechanism was changed to Java's serialization protocol (%Trick 10.7), which stores data in binary. This delegated nearly
|
|
* all of the work to Java, reducing the code related to saving and restoring state to a few lines. However, users that had
|
|
* come to rely on the capability to manually modify TV files found the new format unacceptable, since it was no longer
|
|
* human-readable. Therefor, the storage mechanism has changed once again to an XML format. This time the marshaling and
|
|
* unmarshaling is delegated entirely to Java's JAXB library, which encodes Java classes that follow the JavaBean design
|
|
* pattern, to which much of TV's package has been modified to adhere. This achieves most of the best of both of the previous
|
|
* formats while incurring code overhead somewhere between the two. TV is backwards-compatible with the two previous formats
|
|
* (to %Trick 10.4) but will always save in the current (JAXB) format. The XML schema, which is automatically created by
|
|
* JAXB, can be found at <a href="../../bin/java/src/trick/tv/resources/trickView.xsd">trickView.xsd</a>.
|
|
*
|
|
* There is one special case in which backwards-compatibility is not maintained. TV files from %Trick 10.4 to 10.6 rely on
|
|
* the variable hierarchy tree being parsed before the file is loaded so that enumeration descriptions are available.
|
|
* However, the variable hierarchy tree is now populated in the background so that the GUI is immediately responsive upon
|
|
* launch. Therefor, if an old-format TV file containing enumeration variables is specified to be automatically loaded on
|
|
* launch and the variable hierarchy tree is slow to load, the enumeration variables will fail to resolve to valid values
|
|
* and will display <code><error, reload me></code>. Simply reload the TV file to resolve the issue. After saving the file
|
|
* in the new format, this error will not occur again.
|
|
*
|
|
* @see Trick::TrickView
|
|
*/
|