OpenSCADA

Modules/QTStarter

English • ‎mRussian • ‎Українська
Module Name Version License Source Languages Platforms Type Author
QTStarter Qt GUI starter 6.0 GPL2 ui_QTStarter.so en,uk,ru,de x86,x86_64,ARM UI Roman Savochenko
  Maxim Lysenko (2009) — the page initial translation
Description
Provides the Qt GUI starter. Qt-starter is the only and compulsory component for all GUI modules based on the Qt library.
  • Total complexity: > 10 HD[!]
  • Sponsored by, for the backuping implementation on 0.5 HD[!]: Hadi Ramezani
  • To Do:
- implement for manager of subprojects of their starting in different processes but with the ones storing and managing into the single configuration file of the project, for high reliable configurations;
- implement for manager of the background-daemon processes.

The module provides OpenSCADA with the starter of the GUI modules on the multi-platform library Qt of the graphical user interface (GUI) of initially created by the firm TrollTech. Also, the module implements elements of the OpenSCADA project manager. A separate module of running the Qt GUI modules and elements of the OpenSCADA project manager is needed because of the need for single-flow execution of all visual components of Qt and centralised initialisation of the main object of the Qt-library — QApplication.

Contents

1 Introduction

From the beginning, this module creates a separate thread for the main Qt thread, where it is possible to create a dynamic splash screen (Fig.1), since the main OpenSCADA tasks continue to run in the main thread. That version of Qt5 became especially sensitive to execution in a non-main thread, so for OpenSCADA it was added to this feature, but with the messages update in the screen saver from the service thread before and after the moment of switching to the primary tasks. To control this feature, the --QtInNotMainThread startup option, which enables thread execution in the non-main thread, is provided, for Qt4, so, by default, executing in the main thread is typical, for Qt5.

Fig.1. Dynamic splash screen of the module.

The starter dialog window (Fig.2) in whole provides:

Fig.2. Starter dialog window of the module.

In the case of missing the starter dialog window and all windows of the Qt GUI modules, the program can be started up or collapsed to the system tray (Fig.3) created by this module.

Fig.3. Project "AGLKS" started up or collapsed to the system tray.

The module disables the function of saving the program session when the system is shut down, in order to prevent attempts to restore this session at the system startup, since OpenSCADA does not need it.

The module provides support for emulating a right mouse button for touchscreen-like environments, like to Android, since the interface often provides control solely through the context menu. The emulation is enabled by setting the command line parameter --simulRightMKeyTm=<tm> at the program start, which specifies the hold time (typically two seconds) of the left mouse button (or on the screen) to generate events of the right mouse button and context help. Emulation of the right button does not turn off-postpones the primary events of the left key, so its general actions should work correctly, but there possible discrepancies in places where the primary events trigers something and the emulated event will not go to the address!

2 Qt modules of OpenSCADA

To run Qt GUI modules, an advanced interface for calling module functions is used. This interface involves exporting of functions by the external modules. In our case, Qt GUI modules must export the following functions:

For the identification, a Qt GUI module must define the information item "SubType" of the module as "Qt". Proceeding from this sign, "Starter" works with it.

After receiving the object of the main window, "Starter" simply displays it, and the module window can additionally add the "Starter" elements, in the form of a general list of Qt modules of OpenSCADA, to call them from this window. The general list of Qt modules of OpenSCADA can be added to the menu or toolbar of the window by calling the "makeStarterMenu(QWidget *mn = NULL)" slot of the QApplication class from "Starter", where mn indicates a widget of the QAction container or the main window menu for NULL.

To specify Qt GUI modules that start at startup, the starter module contains the "StartMod" configuration field. This field specifies the identifiers of the modules that are started. The "StartMod" configuration field can be defined in the configuration file as well as in the system table of the database ("SYS") via a dialog of the module configuration (Fig.4).

In the case of closing the windows of all Qt GUI modules or starting without defining the module to start in the "StartMod" field, "Starter" creates its own dialog (Fig.2). If the "CloseToTray" field of the configuration file or module configuration (Fig.4) is installed then in this case, the program will be collapsed to the system tray (Fig.3).

3 OpenSCADA projects

With the integration into OpenSCADA elements of the project manager, this module received the function of selecting existing and creating new OpenSCADA projects in the list of the projects and project commands (Fig.2). Currently, there are two modes of the starter dialog window (Fig.2), which is the mode of the initial start and the mode of execution of the selected project.

The initial mode is, in fact, a launch mode without a specified project, and it involves choosing a project for switching to the second mode, and accordingly hides the list of Qt GUI modules, even if they are loaded to the initiating configuration.

In the project execution mode, all common mechanisms work, that is a call to Qt GUI modules and a start-collapse in the system tray, and the startup dialog (Fig.2) contains a list of available Qt GUI modules and the information about the running project in the title of the window.

In the list of projects, the user (via the context menu) is additionally given the opportunity to remove not running projects, BackUp and restore projects from the selected backup.

In addition to the names of the projects in the list of projects, to the right of the title, their status is provided — "current", "running" and "{N} backups". The state "current" means that the execution of this particular project is carried out. The state "running" indicates a multiple-start blocking file presence, and thus the execution of the project, and separately from this project if the state "current" is not specified next. You can select and try to switch to a project in the "running" state by accepting the warning, but if this project is actually executed now and the presence of the lock file is not residual after the program crash, then the switching program just ends! The state "{N} backups" indicates presence the specified backups number of the project.

4 Look and feel

Due to the expansion of the use of OpenSCADA to mobile software platforms such as Maemo, MeeGo, Android, and frequent cases of Qt4 and Qt5 libraries mismatches to modern desktop environments, this module has been expanded by its own mechanism for controlling the look and feels of the final visual interface.

In general, the module now controls overall: Qt widget style, common font, interface palette, and cascading style sheets. This control is performed through the parameters of the configuration file "Style", "Font", "Palette", "StyleSheets" and module configuration (Fig.4).

Also, the module provides fixing of the outcomes of the individual looks and feelings in a library of the composite nature, which is formed in a configuration file table with the structure: LookFeel(NAME, STYLE, FONT, PALETTE, STL_SHTS).

Therefore, for mobile devices or predefined specific desktop environments, the required look and feel can be pre-installed in the program package configuration file, but for everyone you can quickly change it after installation by selecting the one you want from the library.

5 Configuration

To configure the functions shown above, the module provides the ability to configure their parameters through the OpenSCADA control interface (Fig. 4):

Fig.4. Configuration page of the module.

6 User programming API

The module object (SYS.UI.QTStarter)

Modules/QTStarter/en - GFDLMarch 2024OpenSCADA 0.9.7