NI TestStand Custom UI: How Can I Add New Panes to the Status Bar?

Updated Jun 13, 2019

Reported In

Software

  • TestStand
  • LabVIEW

Other

  • C#

Issue Details

I want to add new panes in the status bar of my customized NI TestStand User Interface. In these panes I want to display information like date and time. What do I have to implement to display these panes with according information?

Solution

NI TestStand provides a lot of information you can display in status bar panes with minimum development effort. Before being able to display additional information in the status bar, you have to configure a new pane in the property dialog of the status bar. For example, if you want to add a date field in the status bar, you would add a "Date" pane in the property dialog of the status bar:

You need to implement code in two sections of the GUI source code to enable display of custom panes:
  1. Connect the pane to an information source. Information sources are most often provided by manager controls. Status bar information is often provided as Caption
  2. Instruct the status bar to display the pane
Coding is dependent to the used programming language.

C#:
In the source code, search for the ConnectStatusBarPanes method.
Add a new line connecting your Date pane to a new information source:
this.axApplicationMgr.ConnectCaption(panes["Date"], CaptionSources.CaptionSource_Date, false);
This line is already sufficient to update the new pane with the selected information. However, it does not automatically display the new pane.
Search for the ShowAppropriateStatusBarPanes method and add the new pane per name to all panes to be displayed:
private void ShowAppropriateStatusBarPanes()
{
	if (this.tabControl.SelectedIndex >= 0)
	{
		if (this.axListBar.CurrentPage == SEQUENCE_FILES_PAGE_INDEX)
                // if only the files tab is visible
			axStatusBar.ShowPanes("User, EngineEnvironment, FileModel, FileSelectedSteps, FileNumberOfSteps, Date");
		else		
		if (this.tabControl.SelectedIndex == 0)
                // execution tab is selected
			axStatusBar.ShowPanes("User, EngineEnvironment, ExecutionModel, ExecutionSelectedSteps, ExecutionNumberOfSteps, Date, ProgressText, ProgressPercent");
		else	
                // report tab is selected
			axStatusBar.ShowPanes("User, EngineEnvironment, ExecutionModel, ReportLocation, Date, ProgressText, ProgressPercent");
	}
}

LabVIEW:
In the source code, search for the Configure StatusBar.vi and modify the code to add a new caption connection to the manager control:

Open and modify the Respond to Tab Control Value Change.vi and add the name of your new pane (Date) to all appropriate lists of panes where you want the pane to display:

Additional Information

You can use the approach explained above for all information sources which are defined as caption source from any manager control. For display of custom text, it is recommended to use a user interface message "ProgressText" and pass the text you want to show from your sequence execution.