1. Introduction

The Control UI Toolkit (CUT) is a suite of libraries, tools and examples used to develop Graphical User Interfaces (GUI) for the ELT. CUT is build using Qt a graphical rendering library, and Taurus as a powerful Model-View-Controller (MVC) layer that allows you to bind datapoints in the control system servers and services to widgets in your graphical application.

The toolkit is being developed by ESO to help developers implement their GUIs.

This Manual does not go into the details of design and the different considerations taken during the design. More information about it can be found in ELT Control GUI Toolkit Design.

Warning

Users should avoid using APIs and facilities that are not documented in this manual. Such undocumented APIs and facilities are intended for internal use and should not be relied on by an end user.

../_images/screenshot.png

Control UI Toolkit demonstration

1.1. Scope

This document is the developers manual for the Control UI Toolkit. The intended audience are ELT users, consortia developers or software quality assurance engineers.

1.2. Definitions

Widget

Display or Control element of a GUI. Widgets present data or information to the user of the GUI, and implement interaction capturing input from the user, making it available for the application to process. Widgets are intended to be a small reusable unit of GUIs.

Composite widget

a widget that is implemented by composing several other smaller widgets. Implementing a composite widget commonly achieves a complex tasks by cooperation between its parts.

Sequential Programming

a programming paradigm in which the flow of control is predetermined by a sequence of instructions.

Asynchronous Programming

a programming paradigm in which the program reacts to events. Different kinds of inputs can be translated into events, such as key strokes, mouse movements, network connection status, battery level, etc.

Note: Asynchronous programming is not restricted by multi-threading, but some long running responses to events certainly benefit from it.

Event Loop/Engine/Pump

Asynchronous Programming needs to implement an additional section of the program that gathers input, creates events, and trigger the responses to those events. One possible implementation of this, and the one that Qt uses, is an Event Loop (See QEventLoop).

Python module

A python file, may contain several classes, functions and scripts.

Python package

A directory, and a __init__.py file. This packages contains all other python modules in inside of the directory.

WAF module

A directory with a wscript, that is not a top-level project script.

WAF project

The first wscript of a project. It also must document the external dependencies of the project.

1.3. Conventions

Note

Through this document, the author will refer to widgets by name using the following notation: TextOnTheWidget kindOfWidget

For example: Accept button or Open File dialog

Note

When referencing code, like methods or class names, this notation will be used closeEvent(QEvent *event).

Note

Executable programs will be depicted like this cutDemoService.

Note

When navigating through a menu, context menu, or a hierarchy of options, the document will use the following notation to describe the consecutive options the reader has to follow:

Start ‣ Programs

Note

Special keystroke combination that the reader has to input will be given in the following format:

Control-x Alt-f

1.4. Overview

The Control UI Toolkit foresees the following software artefacts.

../_images/Control_UI_Toolkit_Layers.png

Control UI Toolkit deliverables in a Layers view

Note

Since the Control UI Toolkit is being developed in an iterative way, the current release may not yet include all the artefacts depicted above. It is also possible that some artefacs are covered only partially, they will be refined to their full functionality in future versions.

1.5. Source Code

To access the CUT sources in Gitlab follow this link:

1.6. Previous Release

https://gitlab.eso.org/ecos/cut/-/releases/v1.2.11