User Tools

Site Tools


Sidebar

Imprint

code:dqmh:hse-application-template:ui-manager

22 UI Manager

The UI Manager module primarily serves as a container for the actual UI of the actual project-specific modules. It abstracts away the reusable parts of a user interface, like menus, status bars and some management functionality, and allows for user-defined and project-specific UIs.

  • It is started automatically from the startup.vi.
  • It is configured from /<%PROJECT%>_Config/UNIT_<%unit%>/UI Manager.ini.


UI Manager.ini

The following configuration parameters can be set:

  • show_runtimemenu=false
  • #todo
  • Panels
[panels]
; list of subpanels in the layout_vi (which is defined above)
; and the corresponding DQMH modules to load into them
SP_Navigation=Framework\Navigation.lvlib:Main.vi

Layout

The UI Manager's front panel consists of one large subpanel control that covers most of the screen estate. During startup, the UI Manager loads a layout VI into this subpanel. The path to the layout VI is set in the configuration file (section layout, key layout_vi, path relative to <%APPLICATION%> directory). The layout VI is stored in /Project/Project.lvlib:PROJECT_Layout-VI.vi and is statically linked into UI Manager.

The layout VI itself consists of one or more subpanels that can be populated with DQMH modules. There are two minimum requirements:

  1. a subpanel labelled SP_Content. This is the main subpanel that the UI Manager will use to display other modules when requested (see below).
  2. all subpanels need unique labels.

The allocation between modules and subpanels is again defined in the configuration file (section panels with the key names being the subpanel labels and the values being the fully qualified module names). During startup, the UI Manager will load the configured modules into the corresponding subpanels.

Title

If the layout VI contains a string control labelled STR_Title, the UI Manager updates this control through the “Update Title” request

If the layout VI contains a picture control labelled PIC_Logo, the UI Manager populates this control with the image file defined in the UI Managers' configuration file (key logo in section global referencing a file location relative to the <%CONFIG%> directory).


Run-Time Menu

The UI Manager loads the run-time menu from /<%PROJECT%>/PROJECT_RunTimeMenu.rtm during startup. The default menu shows the following items by default:

  File
     Login
     Settings*
     User Access*
     Localisation*
     ---
     Exit
  Modules
     (populated dynamically)
  Debug
     Event Manager
     Show Block Diagram
        (populated dynamically)
     Load API Tester
        (populated dynamically)
  Help
     About this application...
     About HSE...
     About LabVIEW...

The items marked as (populated dynamically) are filled during runtime, see below. The items marked with * are used for our hse-application-addons

Adding a module

Any module can insert itself into the runtime menu by sending the Add to Run-Time Menu System Message broadcast and supplying its own location (path).

Add to run-time Menu system message
Adding a module to the run-time menu

The UI Manager will parse the Module's name (<%ModuleName%> as used in the examples below) from the path (*) and add it to the following locations:

Menu Tag Item Name Item Tag
Modules <%ModuleName%> <%ModuleName%>
<%ModuleName%> Display in Subpanel <%ModuleName%>:Managed
<%ModuleName%> Open in New Window <%ModuleName%>:Stand-Alone
ShowBD <%ModuleName%> <%ModuleName%>:BD
LoadTester <%ModuleName%> <%ModuleName%>:APItester

(*) The folder which the module is stored in has to have the same name as the module lvlib itself.


Adding project specific Run Time Menu Entries

The UI Manager forwards menu selections to registered modules. If manual creation of entries in the PROJECT_RunTimeMenu.rtm is needed, they have to be handled project specifically. For this case, the UI Manager forwards unhandled menu selections to the PROJECT_Evaluate Default Menu Selection.vi.

Main Content

The actual UI of the application (the front panel of any given DQMH module) is loaded into the Layout VI's SP_Content subpanel.

  • UI Manager has request Display another Module UI
    • Can be called as request or via Run-Time Menu
    • This request just asks another module to display its UI
      • via the Request UI Display
  • Every module (that has a UI) implements the Request UI Display request w/ reply
    • Parameters:
      • enum Display Scenario (managed, stand-alone)
    • Reply Parameters:
      • bool Accept?
    • See example below:

  • Every module implements the System Message broadcast event
    • Parameters:
      • string Identifier
      • variant Payload
      • enum Source Type (module, application, network)
      • string Source Name (needed for cloneables to identify the clone instance)
code/dqmh/hse-application-template/ui-manager.txt · Last modified: 2021/02/22 09:03 by alexander.elbert