PSI HomeEPICS HomeSLS HomeSLS Live Status




Author: A.C.Mezger
Phone: +41 56 310 3406
Updated: 05.06.2012

Printer friendly version

caQtDM - a medm replacement based on QT

1. Introduction

Poster presentation at ICALEPCS 2013:   presentation     poster

you will find also installation and some other information on the new epicsqt site.

version 3.8.4 can be downloaded below (new of 17.10.2014, small bug fixe against the previous version of 3.10.2014)

This update features 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. The Windows MSI package (3.7.3) is available too. 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 nmodified

This distribution contains all the sources Of course you will have to install Qt and Qwt first on your linux platform. The windows distribution contains only binaries and you can immediately start to use it.

documented modifications

new in 3.8.4

  • more changes for ios
  • castripplot has been modified so that resizing does not clear the curves
  • epics timestamp introduced for info box
  • modified catogglebutton in order to be able to resize its label
  • greek micro replaced by u when macos or ios
  • when rescaling castripplot, figure will be cleared

new in 3.8.1

  • added cawavetable in order to display a waveform numerically (maximum items = 300)
  • adapted source code in order to run on ios (ipad)
  • cachoice crashed when index was higher than the number of ENUMS, fixed
  • castripplot changed in order to get also auto scaling
  • the title of the display can now be set in the window caption by defining the dynamic property "Title" for the mainwindow. when using a macro definition, this will be expanded.

new in 3.7.8

  • when writing a double, float was used so that the precision was lost, corrected
  • related display modified for up to 16 items
  • changed names for designer groups to include PSI Name
  • changed caToggleButton and caLed behaviour
  • changed caSlider and caThermo to be compilable with the standard version of qwt6.1 when using qt5.2
  • modified caQtDM_Lib to be callable from the software of the Australian lightsource
  • fixed a bug in the scrollbar behaviour of the camera widget

new in 3.7.7

  • in waterfall plot the demo plot was not erased at initialization with real data, corrected

new in 3.7.6

  • added a property to the waterfall plot in order to define the maximum number of points treated in the waveform
  • due to the change 3.7.4 for reload, the popup of an existing window was not working correctly
  • cagraphic lost its linecolor after no connection
  • calineedit was not showing alarm colors in alarm_default mode
  • improved performance for cartesian and waterfall plot; very long arrays can be displayed
  • zoom in cartesian plot was not working well for small values and has been corrected
  • added properties to calineedit in order to be able to make a framed border

new in 3.7.3

  • cagraphic lost its linecolor after no connection
  • calineedit was not showing alarm colors in alarm_default mode
  • improved performance for cartesian and waterfall plot; very long arrays can be displayed
  • zoom in cartesian plot was not working well for small values and has been corrected
  • added properties to calineedit in order to be able to make a framed border

new in 3.7.0

  • a spinbox has been integrated in order to be smaller than the wheelswitch. for the spinbox the digit has to be activated by clicking in order to change it.
  • strings in calineedit were trimmed; took that out
  • selection in catable can be rows or coluns now, catable can execute a specified script with the associated pv
  • eliminated sending message in camessage with right button of mouse.

new in 3.6.4

  • an empty char waveform was not clearing the calineedit: corrected
  • enums with empty strings were not displaying correctly in calineedit
  • when reloading a .prc file, size of display was not minimized
  • default back and foreground colors can be set now for calineedit/catextentry in ui-file stylesheet of mainwindow or in stylesheet.qss
  • negative precision was leading to an unexpected behaviour, calineedit will use the precision and switch to exponential display
  • spacebar press has been suppressed for camessagebutton, cashellcommand, carelateddisplay, carowcolmenu, cachoice
  • changed for caslider and canumeric the limits for channel to DRVL and DRVH
  • added to formread in prc file command and comlab modifiers

new in 3.6.2

  • cartseian plot and stripplot can have a logarithmic scale now

new in 3.6.1 since 3.5.2

  • suppressed slidervaluecallback when setting limits from hopr, lopr
  • added a first attempt of a waterfall plot for waveforms
  • corrected for cameras, position calculated when zooming to small images
  • in case of reload, data display is now stopped until all displays are loaded again
  • camera images can now be zoomed and scrolled
  • reset zoom for cartesian plot did not reset correctly in case of channel limits
  • added zoom mechanism for cartesian plot
  • added update mechanism choice in main menu in order to switch to direct monitoring or timed monitoring
  • starting performance optimized for relateddisplay, cachoice, camenu
  • splashscreen added for loading includes (in some cases loading time can be significant)

new in 3.5.2

  • by using CAQTDM_EXEC_LIST as environment variable (as in MEDM with the same syntax), menu items can be added to the context menus
  • for cathermo in parser the look was not see as property and cathermo itsself was initializing itsself per default wrong

new in 3.5.1

  • bug corrected when unfinished enum definition
  • slider was writing to epics on first call, now it does not
  • capolyline now does not extend its lines when linesize > 1 is used, reproducing the behaviour of MEDM
  • cathermo and caslider resize handle and labels according to the size, foreground and background are working correctly now
  • however with qwt6.1.0 in qwt_slider the routine scaleDraw(); must be set protected instead of private as was in qwt6.0

new in 3.5.0

  • caQtDM gives information now about number of monitors/s, number of displays/s and highest monitor

new in 3.4.7

  • adapted caslider for qwt6.1

new in 3.4.6

  • corrected a bug for cagauge with alarms no
  • use control key for amplifying 10x the increment

new in 3.4.5

  • caslider has now a menu to change its increment, in designer increment can be specified to
  • caslider moves also on left mouse click and an wheel scroll; when it has the focus, up and down keys can be used (when focus outline red gets drawn)
  • gauges have now following properties: alarmLimits : Channel_Alarms, User_Alarms, None
  • displayLimits : Channel_Limits, User_Limits
  • adl2ui has been corrected for these properties

new in 3.4.4

  • enhanced performance for camera widget

new in 3.4.3

  • package can also be build with Qt4.6 and qwt6.0, necessary for SL6 (cacartesianplot, cadoubletabwidget and plugins slightly modified)
  • epics enums and strings modified for count > 1

new in 3.4.2

  • camera stuff modified
  • added mutex to synchronize data and display
  • font bug in catable solved
  • found a datarace in castripplot, corrected

new in 3.4.1

  • cacamera displays intensity at x, y
  • cacamera context menu for grey / spectrum and zoom

new in 3.4.0

  • caStripplot has been revisited
  • caCamera uses now concurrent mode for calculations

new in 3.3.1

  • mainwindow and messagewindow have been merged

new in 3.3.0

  • caTable gets now the correct font after resizing when values update
  • caStripPlot has been corrected for incorrect time behaviour.

new in 3.2.2

  • in menu you have the possibility to raise the main and message windows

new in 3.2.1

  • when requesting a display that was already started, it did not popup but made a new instance. this has been corrected
  • this was working before, but by some modifications was not correct any more

new in 3.2.0

  • The build mechanism for linux and windows should do on most platforms, see caQtDM_README
  • caQtDM build for qt4.8 with qwt6.0 and for qt5.1 with qwt6.1
  • caled can use now the severity to colorize
  • cathermo was inadvertently using nodeco mode when mode was used
  • cacirculargauge will draw a white scale when not connected and bug corrected
  • for enums without enum string write just the value in calineedit

new in 3.1.1

  • The main characteristic of this version is that you can resize the caQtDM synoptic display windows without using Qt layouts. You can build a display normally and everything will be resized when you resize the window.
  • In order to make the resizing correctly, you should specify for the fontscalemode of caLabel and caLineEdit the parameter "WidthAndHeight".
  • When you convert MEDM displays with the utility adl2ui, this is done automatically.
  • When you do not want a window to be resized, you can specify -noResize on the command line.
  • Another enhancement existing since version 2.8 is the fact that you can hook a digit of the wheelswitch to the keyboard in order to modify it with the up and down keys.

new in 2.8 - 2.5

  • All the changes have been documented in qtdefs.pri

new in 2.5

  • Scales of Stripplot can now be changed during runtime. The caQtDM application normally limits the update rate of monitors to 5 Hz,
  • however now a JSON string can be written behind the channel name.
  • An example is given in the presentation "introduction to caQtDM".
  • Color mode for calabel is now working (was forgotten). Also an icon is presented on the window bars.
  • A Windows distribution package allowing to work immediately with the designer and caQtDM has been build and can be downloaded here
  • (this package does not contain any sources, merely executables, work done by H.Brands at PSI).

new in 2.3

  • Timebase of Stripplot was wrong and has been corrected. Some other compiler warnings have been eliminated and the building process was slightly modified.

new in 2.1

  • When using correctly the layout possibilities offered by Qt, one can resize a window (you will find an example in work/caQtDM/parser/proscanFiles/phaseslitsnew.ui).

  • Up to now when using "includes" only a placeholder could be seen in the designer. Now the included ui file is displayed inside the designer.

  • For polylines and polygones, a graphical editor is integrated into the designer. One can create segments by pressing the left mouse button when moving the
  • mouse and one can delete the last created segment by pressing the right mouse button.

  • The graphical entities (rectangles, circles, ellipses, lines, arrows, triangles) can be rotated by specifying a tilt angle.
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

  • The major changes in this version are changes for stability (in the previous version sometimes crashes occurred) and the introduction
  • of soft pv's. A variable can be defined, calculated and used as a normal pv.
  • All the features of medm used for the cartesian plots are implemented now. The cartesian plot background can be transparent so that a camera image can be
  • underlaid. The limits of the x and y axes can be changed by specifiying pv's instead of values when using channel limits. The stripplot widget has been
  • modified while the behaviour was not quite correct. The message button and textentry were not working well and have been corrected. Labels can be transparent too.
  • A camera widget has been introduced. At PSI we can now display are usual cameras bw and color. You can easily modify the code to treat other formats
  • of camera waveforms.
  • caQtDM gives the number of connected and unconnected channels, furthermore a list of unconnected channels with their file location can be shown.
  • caQtDM is now protected against ui description file syntax errors;
  • caQtDM supports the command line parameters -attach -noMsg -display -macro -x -noStyles -dg. -x has no effect but suppresses the error message when
  • keeping the medm command line parameters.
  • caQtDM runs in native mode on linux as well as on microsoft windows.

some examples of caQtDM displays:
example 1 example 2


Version 3.8.4

caQtDM_3_8_4, sources and build scripts only

Installation Packages
For Windows Version 3.8.4 : caQtDM_3_8_4.msi(caQtDM,adl2ui and designer)

For Mac OS X (Alpha) Version 3.8.4 : caQtDM_3_8_4.dmg

an application using caQtDM libraries

modifications documented

4. HowTo


5. Powerpoint presentation from the epics collaboration meeting at SLAC, spring 2012


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