Control UI Toolkit User Manual
2.3.1
Table of Contents
1. Introduction
1.1. Scope
1.2. Definitions
1.3. Conventions
1.4. Overview
1.5. Source Code
1.6. Previous Release
2. Release Notes
2.1. Summary
2.1.1. What is the purpose of this release?
2.1.2. What is the scope of this version?
2.1.3. Limitations and Constraints
2.2. Dependencies
2.2.1. Development Environment ETL DevEnv
2.2.2. Core Integration Infrastructure CII
2.2.3. Qt
2.2.4. PySide2
2.2.5. Shiboken
2.2.6. ERFA
2.2.7. msgsend
3. Installation
3.1. Using RPM Packages
3.2. Manual Compilation
3.3. Vagrant Virtual Machine
4. Tutorials
4.1. Beginners Tutorial
4.1.1. Starting the Demo Service
4.1.2. Lets check functionality
4.1.3. Basic Concepts from Qt
4.1.4. Qt Signals and Slots with one widget
4.1.5. Qt Layouts
4.1.6. Qt Signals and Slots with two widgets
4.1.7. Taurus Introduction
4.1.8. Model View Controller Pattern
4.1.9. URIs
4.1.10. Taurus Model
4.1.11. Taurus Model Plugins
4.1.12. Taurus Model Plugin: OLDB
4.1.13. Taurus Widgets: TaurusLabel
4.1.14. Taurus Widgets: Fragments
4.1.15. Taurus Widgets: TaurusForm
4.1.16. Taurus Widgets: TaurusPlot and TaurusTrend
4.1.17. Taurus Widgets: TaurusLauncherButton
4.1.18. Taurus Model Plugin: Evaluation
4.1.19. Taurus Command Line Tool
4.1.20. Taurus Widgets
4.1.21. Taurus Display Widgets
4.1.22. Input Widgets
4.1.23. Plotting Widgets
4.1.24. Qt and UI Files
4.2. Python Application Tutorial
4.2.1. Download, Compilation, and Running
4.2.2. Project Structure
4.2.2.1. Project wscript
4.2.2.2. Module wscript
4.2.3. Entry Point Python Script
4.2.4. Design of the Graphical User Interface
4.2.4.1. Widgets Connections
4.2.4.2. Actions
4.2.5. Implementation of the User Interface
4.2.5.1. Long Running Jobs
4.2.6. Adding a Dock Widget and Logs Widget
4.2.6.1. Dock Widget
4.2.6.2. Logs Widget
4.2.6.3. Trying it out
4.2.7. Frequently Asked Question
4.2.7.1. I have connected a signal and slot, but nothing is happening. What is missing?
4.2.7.2. What causes the GUI to freeze?
4.3. Widget Library Tutorial
4.3.1. Introduction
4.3.2. Kind of Widgets
4.3.2.1. WAF Project
4.3.3. Widgets WAF Module
4.3.3.1. Header (.hpp)
4.3.3.2. Implementation (.cpp)
4.3.3.3. Header file
4.3.3.4. Compilation
4.3.3.5. Thoughts on Widgets Properties, Signal and Slots
4.3.4. Plugin WAF Module
4.3.4.1. Header files
4.3.4.2. Implementation
4.3.5. Showcase Demo Application
4.3.6. Bindings
4.3.6.1. Input for Bindings
4.3.6.2. Code generation
4.3.6.3. Compilation
4.3.6.4. Bindings WAF Module
4.3.7. Showcase Python Demo Application
4.3.8. Taurus Databinding Widgets
4.3.8.1. Taurus Controller
4.3.8.2. Taurus Widget
4.3.9. Multiple Widgets
4.4. RAD Hello Tutorial
4.4.1. Introduction
4.4.1.1. Definitions
4.4.1.2. Conventions
4.4.1.3. Download, Compilation, and Running
4.4.2. Project Structure
4.4.2.1. Project Definition (wscript)
4.4.2.2. Module Definition (cut_rad_hello/wscript)
4.4.2.3. Entry Point Python Script (cut_rad_hello/src/cut_rad_hello.py)
4.4.3. Graphical Design Updates (cut_rad_hello/src/cut_rad_hello/mainwindow.ui)
4.4.3.1. New Menu: Server
4.4.3.2. Deleted QTextEdit widget
4.4.3.3. A new QGroupBox
4.4.3.4. A second QGroupBox
4.4.4. StdCmds Interface (cut_rad_hello/src/cut_rad_hello/stdcmdsfacade.py)
4.4.4.1. Imports
4.4.4.2. Class Definition and Initializator
4.4.4.3. Interface Methods with no Arguments
4.4.4.4. Interface Method with Argument
4.4.5. UI Implementation (cut_rad_hello/src/cut_rad_hello/applicationwindow.py)
4.4.5.1. Imports
4.4.5.2. Initialization
4.4.5.3. closeEvent()
4.4.5.4. Server (dis)connection Slots
4.4.5.5. Slots for methods in the interface
4.4.5.6. Starting Hellocii process
4.4.6. RAD Tutorial Second Part
4.4.6.1. OLDB Data Points (cut_rad_hello_custom/src/cut_rad_hello_custom/mainwindow.ui)
4.4.6.2. Preset Command
4.4.6.3. Replace QeDartBoard by QeRaDec (cut_rad_hello_custom/src/cut_rad_hello_custom/mainwindow.ui)
5. Examples
5.1. Python Application
5.2. Widget Library
5.3. Analog Clock
5.4. RAD Hello GUI
5.5. RAD Hello Custom GUI
5.6. Complex Application
5.7. cutDemoService
6. Widget Creation
6.1. Common to all kind of widgets
6.1.1. Widget Class Declaration
6.1.2. WAF project/module for the Widget
6.2. Creating a New Widget
6.2.1. update() and paintEvent() methods
6.2.2. event(QEvent*) and specialized event methods
6.2.3. Colors and Palette
6.2.4. Fonts
6.2.5. Coordinates
6.2.6. save() and restore()
6.2.7. Widget Size and Ratio
6.2.8. Caching Pixmaps
6.2.9. Plugin, Bindings and Example Application
6.3. Specialize an Existing Widget
6.3.1. Declaration
6.3.2. Implementation
6.4. Create a Composite Widget from Existing Ones
6.4.1. UI Declaration
6.4.2. Widget Class
7. GUI Development
7.1. CLI Options and Arguments
7.2. Data Manipulation and Taurus
7.3. Data Units and Conversion
7.4. WAF and Project Structure for Bigger Applications
7.5. Connecting to MAL or OLDB
7.6. Logging
7.7. Widgets and Application properties as Configurable
7.8. Complex UI
7.9. Declarative UI
7.10. Widget Promotion
7.11. Auto Slot Connection
7.12. Declarative Databinding
7.13. Models
7.14. Taurus Model Plugin Development
7.15. Debugging
7.15.1. Taurus Log Level
7.15.2. OLDB GUI
7.15.3. GDB
7.15.4. Python faulthandler
7.15.5. Python Debugger
7.15.6. Profiler
8. Color Schemes
8.1. QPalette
8.1.1. ColorGroups
8.1.2. ColorRoles
8.2. QeColorsModel
8.3. QeColorsMenu
9. Standalone Tools
9.1. cutWidgetsShowcase and cutWidgetsShowcasePy
9.2. cutExampleColorScheme and cutExampleColorSchemeCpp
9.3. cutDemoService
10. API
11. Frequently Asked Question
11.1. Python Bindings
11.1.1. How do I use the widget?
11.1.2. If I connect a signal to one of the widget’s slots, it does nothing.
11.1.3. PySide::Signal namespace not found
11.1.4. If I connect a signal to one of the widget’s slots and trigger it, the application crashes with a Segmentation Fault.
11.1.5. A symbol is missing (a method), and it is from my widgets:
11.1.6. Application crash on startup, indicates Qt_5_6 version is used, but it was compiled against Qt_5_14
11.1.7. My application crashes, in a section that is C++, how can I get a back trace
11.2. Widget Library
11.2.1. Why the separation between the widget and plugin library
11.2.2. The widget plugin does not load
11.2.3. What method of library is used for bindings
11.2.4. Why is there a header called “libraryname.h”
11.2.5. libraryname.h? why not libraryname.hpp?
11.2.6. I have created a templated QObject, but it does not compile. What am I doing wrong?
11.2.7. paintEvent() is not called in python
11.3. Qt in General
11.3.1. How to start a process and monitor if it is still running?
Control UI Toolkit User Manual
4.
Tutorials
4.3.
Widget Library Tutorial
4.3.5.
Showcase Demo Application
4.3.5.
Showcase Demo Application