Version v0.8.1
Added
- The Tree plugin can now filter content based on a search field.
- In Debug mode, items from the Tree can be added to the Console.
- Added option to liveDisplays to toggle between automatically or manually scaling the x axis.
- Integrated generating and running python plot code for tests of devices, scans, and displays.
- Added log level setting to determine level of information in logs.
- Introduced log level 'Trace' which shows detailed device communication info if implemented by device.
- Tests now write a log to a dedicated file in the current session path.
- In advanced mode of Settings, the error count for controllers of devices and channels is now shown.
- Input channels are now shown in the channel list of scans.
- Added icons to change log and documentation.
- Input and output messages from console will now appear in terminal and log file.
- Added Lakeshore335 plugin.
- Added advanced option invalidWhileWaiting to Scans to allow to ignore values while signal is stabilizing.
- Added CustomDevice2 as an example of how to create a custom plugin that replaces an internal plugin while using the same files.
- In Debug mode, plugins will be added to console when accessing the about dialog.
Changed
- Added confirmation prompt before deleting all device history.
- Added some pauses during testing if GUI gets too busy.
- Simplified instructions for offline installation. No conda or python installation needed on offline PC!
- Disallowed use of / in channel names.
- In liveDisplays, the mouse enabled mode of subplots is now linked.
- Data files are now only saved while closing if new data has been recorded since starting the program.
- While testing, images are written to files instead of clipboard for later inspection and to not spam the clipboard.
- Instead of showing the last valid value after stopping acquisition, NAN is displayed to indicate that the current value is unknown.
- Changed smoothing algorithm to preserve sections with less datapoint than smoothing window.
Fixed
- Fixed error when canceling loading a file from DeviceManager.
- Changing channel limits will now also update referencing channels (e.g. in UCM or PID).
- Fixed liveDisplay copyClipboard function.
- Scans will now append session notes to scan notes. Used to be notes of current directory in explorer.
- Fixed update of colors of in linked channels.
- Fixed issue with scans starting even through output channels were not recording.
- Fixed an issue with uninitialized scan plots after changing scan channels.
- Fixed update of channel values in interactive mode of Omni scan.
- Fixed issue where channel equations tried to access backgrounds for channels that do not use backgrounds.
- Preventing error when changing directories to fast by ignoring double click while loading.
- Fixed an issue where the data type of channel values would be changed to float64 when extending the dynamic numpy array.
- Instead of reloading plugins, the application performs a clean restart. This is to avoid memory leaks from incompletely closed plugins.
- Fixed TIC, ISEG, and Temperature after testing with hardware.
- Fixed testing of internal displays.
- Splash screen is only on top of ESIBD Explorer but not on top of all other applications.
Removed
- Removed option to turn of logging.
Developer Notes
- Simplified plugins by introducing default implementations of DeviceController.values, DeviceController.applyValue, DeviceController.updateValues,
DeviceController.initComplete, DeviceController.toggleOn, Channel.applyValue, Device.closeCommunication, and Device.setOn.
Custom plugins need to be adjusted by deleting or simplifying functions to use default implementation! - Fixed sequence for extending DeviceController.closeCommunication. Adjust custom plugins based on documentation and examples!
- Changed implementation of initScan. Extend addInputChannels instead.
- Abandoned use of :meta private: where it was overwriting the docstring of a parent method.
- Added documentation for many methods.
- generatePythonPlotCode method now only returns text. When running generated code from the context menu, other plots are no longer changed into popups.
- Removed unused getInitializedChannels method.
- Restructured project structure to separate scans and displays. Using lower case convention for project folders and module files. Enabling simplified import statements,
e.g.: from esibd.scans import Omni, from esibd.devices import ISEG, from esibd.displays import PDB. - Introduced restore option for parameters and settings and used it to not restore values for lagging, errorCount, and interval measured.
- Removed option to edit indicators through the context menu.
- Enabled context menu for LedIndicators.
- Added type hints and improved consistency of formatting.
- Replaced EsibdConst and EsibdCore with esibd.const and esibd.core
- Completed type hinting and implemented multiple improvements suggested by ruff.
- Removed aboutFunc argument from finalizeInit.
- Renamed _parent to more descriptive name in DeviceController, TimeoutLock, PlotItem, PlotWidget, Parameter, Setting.
- Renamed _min, _max with minimum, maximum for Setting, Parameter, and DynamicNp.
- Renamed _from and to in scans to start and stop. Change does not affect user interface and files!
- Renamed PluginManager.TYPE to PLUGINTYPE.
- Renamed Parameter.TYPE to PARAMETERTYPE and widgetType to parameterType.
- Renamed outputs to outputChannels and inputs to inputChannels for scans and staticDisplays.
- Renamed scan.run to scan.runScan
- Removed acquiring argument in DeviceController.runAcquisition. Use self.acquiring instead.
- Renamed QLabviewSpinBox, QLabviewDoubleSpinBox, QLabviewSciSpinBox to LabviewSpinBox, LabviewDoubleSpinBox, LabviewSciSpinBox.
- Merged deviceController.device and deviceController.channel into deviceController.controllerParent.
- Renamed channel.device to channel.channelParent.
- Added type hints and refactored code based on type checking.
- Reimplemented MultiStateAction labels with Enums to enable type checking.
- Changed Device.initialized() to Device.initialized.
- Removed runAcquisition in DeviceControllers where obsolete.
- Fixed handling of NaN for LabviewSpinBox, LabviewDoubleSpinBox, and LabviewSciSpinBox.
Performance
- Improved GUI responsiveness handling: Data is still appended but plots are skipped if needed.
- Scans and devices will pause if the GUI gets too busy. Scans will wait for previous scan step to be processed if necessary.
- Increased performance by delaying update of matplotlib figures while resizing.
- Increased performance by suspending plotting in liveDisplays while resizing.
- Increased performance by suspending update in liveDisplays while resizing.