caQtDM - a medm replacement based on QT

Table of Contents

1. Introduction

version 4.1.3 can be downloaded below, for android version 4.1.3 is already available

Version 4.1.0 most important change: user widgets (caLineDemo) can be added without any change to caQtDM_Lib while an interface has been defined (this version can be found in the developement path on caqtdm_github
other changes are suppressed leading zeros in caspinbox and and cawheelswitch; still more optimization through multicore usage; caCamera images are now treated through dedicated routines, in order to add easily new formats

Version 4.0.0 important change is the support for data source plugins, so that other controlsystems can be easily added.

Version 3.9.4 saw quite a lot of modifications, one of the most important ones being the possibility to integrate a python function for visibility and calc pv's (see list of modifications). Also macros can now be read when specifying -macrodefs filename at the command line. caQtDM can also be started with a configuration window as on mobile platforms with the option -httpconfig. By the way you will find caQtDM also on github, so you can collaborate if you wish.

In Version 3.9.3 the most important change is the adding of a new widget caScan2D. caScan2D has been developed by Tim Mooney from Argonne and integrated in caQtDm with some new features, that are also present in the waterfallplot and camera widgets. Now more colormaps as well as a custom colormap are available. In version 3.9.1 many small changes were done (see below). Also android (on this page) and ios versions (on applestore) are available.

Now this version also includes a simple tool called edl2ui to convert edm files to ui files. caQtDM follows the philosophy of MEDM and thus not all features of EDM can be integrated. edl2ui is therefore a simplified conversion tool and while at PSI EDM is not used, it could not be really fully tested. However it is quite easy to modify and add forgotten items and properties (see in directory parserEDM). This could be done by the interested laboratories.

Also this update features a better optimized build mechanism, dialog windows for setting precision and limits, hopr,lopr instead of drvh, drvl for sliders and wheelswitches and in case of tabbed widgets suspended io for hidden pages (see qtdefs.pri). The previous update featured mainly improved performance for huge waveforms used by the cartesian and waterfall plots and some enhancements for calinedit (framed border and possibility to show alarms on fore or background) as well as some changes for macOS and IOS. A new object cawavetable has been added and the stripplot was extended for autoscaling. Also the stripplot will not clear anymore while resized and the epics timestamp has been added to the infobox. catogglebutton will resize too. The caQtDM manual although not yet finished can be found in caQtDM_QtControls/doc. The manual is available as html file as well as in Qt assistant format and can be integrated in the Qt assistant with the command "assistant -register caQtDM.qch", this file being in the same directory. Windows MSI packages as well as an OSX package are available too. You will also find caQtDM on the Apple Store. For linux a build can be initiated with caQtDM_Build.

The EPICS display manager MEDM is a very powerful tool with many features and satisfies most of the needs for synoptic displays. However MEDM is based on MOTIF/Xt and X11, systems/libraries that are getting into age. Moreover applications using those systems are difficult to maintain and to extend. At PSI a new Qt based application was written (download below), reproducing the functionality of MEDM. Moreover a parser was written to convert the MEDM files into Qt files, the resulting displays being an exact reproduction of the MEDM displays.

It has to be noticed that the widgets used are not directly epics aware. The idea was to strictly separate the control system from the display part, in order to be able to add other controlsystems if necesssary (which is still the case for our high intensity particle accelerator).

An application is never finished and can always be improved and new things can be added. This is therefore also the case for caQtDM. The widgets could be improved, not everything has been finished and bugs will be found.

We consider this software as an open source software. Try it, use it and improve it. Yust give us your improvements and bug fixes back to us, so that we can integrate them.

The downloadable tar file contains all sources and build procedures. In the parser directory you will find the adl to ui converter.

The application itsself consists of an main programm (caQtDM) using the display class from a shared object library (libcaQtDM_Lib). The control widgets are given by the shared object library or qtcontrols4.dll. The libraries have to be in the LD_LIBRARY_PATH for linux and for Windows you have to define the System path (you can also use scripts). For the designer and caQtDM the 3 plugin libraries have to be copied to the designer plugin directory.

While the display part is handled by the display class, you can build any application using this class with a designer developed ui file. The display class will take care of the controlsystem defined widgets. The other widgets you define like buttons or frames having to contain something you would like to define in your application can be handled (in order to use this feature contact the author)

caQtDM supports also .prc files. These files can be written by a text editor and are used at PSI. for their syntax take a look at some .prc files in directory caQtDM_tests.

Please give feedback if you are using it, found some bugs or made some additions

The application loads a stylesheet and ui files from the path defined by CAQTDM_DISPLAY_PATH or your actual directory. Inside the ui files a stylesheet can also be defined which is the case for the examples (one example proscanprobe.ui uses a different stylesheet given a different look as the other files). However many styles are defined by the widgets themselves and can not be modified

The following screen was created by using the file tests.ui. It contains all available epics related widgets of caQtDM.

Some more examples of caQtDM displays (click to enlarge):
example 1 example 2

2. Downloads and Tracker

Version 4.1.3 (for version 4.1 go to github and clone the development path)

This distribution contains all the sources. Of course you will have to install Qt and Qwt first on your linux platform.

Installation Packages

The MS Windows and the Mac OS X distribution contain only binaries and you can immediately start to use it after installation. A bug and issue tracker is available but only for PSI: Issue Tracker for the caQtDM project

3. HowTo

Did you know that the core class of caQtDM can be used to write C++ applications in a quite easy way? You may design an user interface that can be used by the core class and you can introduce in your application then more data acquisition and intelligence. See the two examples given below:

probe scan: An application using caQtDM libraries
rf display: An application using caQtDM libraries

How to install and run caQtDM

4. Presentations

At APS they recorded a caQtDM Tutorial given by Jim Stevens and uploaded it to YouTube:

5. List of Documented Modifications

new in 4.1.0

new in 4.0.3

new in 4.0.2

new in 4.0

new in 3.9.5

new in 3.9.4

new in 3.9.3

new in 3.9.1

new in 3.8.9

new in 3.8.7

new in 3.8.5

new in 3.8.4

new in 3.8.1

new in 3.7.8

new in 3.7.7

new in 3.7.6

new in 3.7.3

new in 3.7.0

new in 3.6.4

new in 3.6.2

new in 3.6.1 since 3.5.2

new in 3.5.2

new in 3.5.1

new in 3.5.0

new in 3.4.7

new in 3.4.6

new in 3.4.5

new in 3.4.4

new in 3.4.3

new in 3.4.2

new in 3.4.1

new in 3.4.0

new in 3.3.1

new in 3.3.0

new in 3.2.2

new in 3.2.1

new in 3.2.0

new in 3.1.1

new in 2.8 - 2.5

new in 2.5

new in 2.3

new in 2.1

When you use the Qt tools through the network you should start them tools by specifying on the command line '-graphicssystem native' in order to enhance the performance. The designer presents besides the control system widgets also many other widgets that could be used. One of the more important ones is the tab widget, that can be used to make subwindows.

new in 2.0

6. Correspondence list between MEDM, EDM, caQtDM

(has to be completed)

by courtesy of Zai Wang from

Graphics Graphics Graphics Description
MEDM widget (from Doc) EDM widget (from Doc) CaQtDM  
Line   caGraphics  
Rectangle Rectangle caGraphics  
Oval Circle caGraphics  
Arc Arc caGraphics  
Text Static Text caLabel  
Image   caImage  
  GIF Image caImage  
  PNG Image caImage  
  HTML ? Qt understands html text  
  Dynamic Symbols ? caImage  
Polygon   caPolyLine  
Polyline Lines caPolyLine  
Monitors Monitors Monitors  
MEDM widget (from Doc) EDM widget (from Doc) CaQtDM  
Meter Monitor Meter caCircularGauge  
Bar Bar caThermo  
Text Text Monitor caLineEdit  
Byte Monitor   caByte  
  Byte ?  
Cartesian Plot   caCartesianPlot  
Strip Chart   caStripPlot  
  X-Y Graph caCartesianPlot or caStripPlot  
  Message Box ?  
  Symbols caImage?  
Scale Monitor   caThermo  
Controls Controls Controls Description
MEDM widget (from Doc) EDM widget (from Doc) CaQtDM  
Entry Text Text caTextEntry  
Slider Slider caSlider  
Menu Menu Button caMenu  
Choice Button Choice Button caChoice  
Message Button Message Button caMessageButton  
Related Display Related Display caRelatedDisplay  
Shell Command Shell Command caShellCommand  
  Menu Mux (multiplexor) ?  
  Multiplexor ?  
  Button ?  
  Motif Slider caSlider  
  Up/Down Button ?  
  Exit Button ?  
  Radio Box caChoice  
Wheel Switch   caNumeric  
Composite   Use caFrame and caInclude  

Author: A.C.Mezger   Phone: +41 56 310 3406   Email:   Source: /afs/