PyDM 0.3.0
v0.3 RELEASE NOTES
PyDM v0.3 adds new widgets, new features, and many bug fixes. Please note the breaking changes section below - if you use plot widgets, some action will need to be taken to make your displays work again. As a reminder, the project uses semantic versioning, and as we are still in major version 0, any release may have breaking changes, although we try to keep them to a minimum.
Breaking Changes
- PyDMTimePlot and PyDMWaveformPlot now accept multiple curves for each plot. To edit the curves for a plot in designer, right click it and choose 'edit curves', or double click on the widget. This will bring up a curve editor where the channel, label, and color for each curve can be configured. Please note that existing plots will no longer function, plots in .ui files and plots created in .py files need to be updated to use the new properties provided by the widgets. (thanks @laispc)
New Features
- The macro system has been extended to python based displays as well. Any Display subclass should expect to receive a 'macros' keyword argument in the initalizer, which is a dictionary with macro values, keyed on macro names.
- In the 'View' menu there is now an option to show the path to the file you are currently viewing, rather than its title.
- A new SpinBox widget to manipulate float values has been added (thanks @mennodoor)
- Display subclasses no longer need to define an 'intelclass' variable, PyDM will inspect the loaded python file and find the appropriate class to use.
- The 'File' menu now has an 'Open...' item which brings up a file dialog box to pick a file to load. (thanks @hhslepicka)
- A set of widgets for drawing shapes and static images have been added. These widgets all have alarm sensitivity in fill color and border. (thanks @hhslepicka)
- A widget called PyDMByteIndicator has been added for viewing the individual bits in a status 'byte'. Each bit has a configurable label, and the endianness of the byte, and number of bits contained within, are configurable.
- A widget called PyDMSymbol has been added. The symbol widget takes a enum channel as an input, and displays a different image for each state of the enum. Most common image file types are supported, as well as SVG (scalable vector graphics) files.
- PyDM now supports an environment variable to set a default protocol. If you set the PYDM_DEFAULT_PROTOCOL environment variable to a protocol specifier (for example, 'ca' for EPICS), you can define channels throughout PyDM without supplying the 'ca://' before the rest of the address.
- PyDMRelatedDisplayButtons now have an option to open their file in a new window, rather than in the existing window. (Note from Matt: Please use this feature sparingly to avoid a huge number of windows that operators need to clean up!)
- Data plugins can now be added by adding a file in pydm/data_plugins/. It is no longer necessary to modify the PyDMApplication to register a new plugin.
- PyDMPushButtons now have an option to display a confirmation dialog box before sending the value to the PV. Additionally, an 'enter password' box option has been added (thanks @hhslepicka).
- Data plugins can now send control limits and units to widgets. These can be used for example to set the maximum and minimum values the widget can handle. Support for control limits and units has been added to existing widgets, where applicable. These properties can be overridden by the display author if desired.
Bug Fixes
- Many problems with PyQt5 compatibility were fixed (thanks @gabrielfedel and @laispc)
- Handle cases where EPICS PVs return bytestrings for units in Python 3 (thanks @gabrielfedel)
- Widgets can implement slots for only one signal type (float, int, or string), they will not fail if all types are not implemented.
- Fix a crash when using PyEPICS plugin, and a PV info field (units, precision, etc.) changes without the value changing.
- Add handling of EPICS long, char, and short data types to EPICS plugins (thanks Tim Madden (@argonnexraydetector))
- Clicking on related display buttons without a defined filename property no longer crashes PyDM.
- Image color maps scaling calculations no longer rely on 8-bit image values (thanks @mennodoor)
- Fix a bug with PyDMLabel and PyDMSlider where they would not visually show disconnected status when their channel disconnects (thanks @laispc)
- Fixed a bug that prevented tooltips from displaying when middle clicking widgets. Also fixes problems when copying channel information to the clipboard when a widget is middle clicked. (thanks @scalverson)
- Fix a bug where old widgets were left in an embedded display after the file displayed was changed. (thanks @hhslepicka)
- Fix a bug where data plugins would sometimes get passed channels with empty 'address' fields and crash.
- Fix a bug where the slider widget would crash if it was sent an int value instead of a float. (thanks @mennodoor)
- Whitespace has been standardized throughout the project to four spaces per tab. (thanks @hhslepicka)