Phone: +41 56 310 3406
Printer friendly version
caQtDM - a medm replacement based on QT
Poster presentation at ICALEPCS 2013:
version 3.7.3 can be downloaded below (new of 4.3.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). 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 libqtcontrols.so 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
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.
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 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.
- 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.
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:
caQtDM_3_7_3, sources and build scripts only
For Windows Version 3.7.3 : caQtDM_3_7_3.msi(caQtDM,adl2ui and designer)
For Mac OS X (Alpha) Version 3.7.6 : caQtDM_3_7_6.dmg
5. Powerpoint presentation from the epics collaboration meeting at SLAC, spring 2012
Author: A.C.Mezger Phone: +41 56 310 3406 Email: firstname.lastname@example.org Updated: 05.06.2012