Table of Contents
This document lists the most relevant changes, additions, and fixes provided by the latest MeVisLab releases.
Saving of internal networks is now refused by default.
Open a pristine copy of the network and do your changes there.
Or set the allowSaveOfInternalNetworks
attribute in the Package.def of your
MeVisLab package to "warn" or "allow".
The maximum number of background tasks can be configured in the Preferences dialog now. Previously, this was hard-coded to 8.
Added filter buttons to the Debug Output console to complement the filter options in its context menu.
Allow to open specific applications for given file endings from MeVisLab (including MATE). Previously, if MATE was enabled, everything was opened with it.
MeVisLab will now ignore network auto-save files if the
-noninteractive flag is given on the command line.
The Welcome screen shows an index of the current tip now.
Space characters in log output in the Debug Output console are now preserved.
The recent files list in MeVisLab did not work with file names containing a comma.
Note: Since the storage location for this list was changed, updates to the list will not be reflected in older MeVisLab versions anymore.
Fixed that stored user dock layouts were not used on subsequent starts.
The full-text search can now be restricted to the scopes "MDL", "Python", "C++", "Modules", and other help.
Fixed highlighting of full-text search results in documentation when '+' or '-' (or other single special characters) were used.
Fixed: The direct help search widget in the help menu did not find menu entries that were only created on demand.
Fixed an assertion (i.e., crash) that could happen when clicking on some results of the old direct documentation search.
Fixed some cases where the formatting of field tooltips taken from the module help did not match the result in the HTML help page.
Fixed wrong rendering in the module help of enum values starting with '-'.
Fixed that the mayDependOn dependencies
of packages would sometimes not be resolved correctly if the
dependency graph contained loops, and thus caused incorrect warnings.
MeVisLab can print a warning when the package given in
a mayDependOn attribute is not known.
Set the WarnOnUnknown_mayDependOn_Package
variable in your preferences file to true for this.
Print a warning if a package overrides another package with the same ID.
Fixed a crash that could happen while profiling, e.g.,
when using the RunPythonScript
module.
The Profiling view in the IDE has been refactored to never update any values if the Auto Updates option is off. Previously, it would update values when, e.g., expanding rows.
There were some general improvements to the Wizard dialogs.
Fixed: Translations of strings in Python files were not detected correctly if the string contained non-ASCII characters.
Fixed translation hints missing from generated translation files.
Empty network windows can now only be reused for loading networks if their redo buffer is empty, so as to not accidentally lose the redo history.
Projects created with the Project Wizard no longer use the site ID as a name prefix.
The network rendering is now refreshed after field connections are created/removed between fields of the same module.
Cloning selected modules with Ctrl+D no longer uses the clipboard.
The output inspector for images now can also display all DICOM tags.
The output inspector for images now shows the correct voxel value beneath the mouse cursor in 3D.
Prevented a crash when closing a scripting console while it was still processing.
Several documentation updates, spelling fixes, GUI fixes.
MATE shows the corresponding VTK class documentation when the context help is invoked on VTK wrapper classes in a Python file.
Show keyboard shortcuts in tooltips for the debugger tool buttons.
Use a better default position for the debugger toolbar.
Improved startup performance by lazy loading open documents.
One can now configure the file types that MATE will open inside itself, even if the MeVisLab IDE is configured differently.
Show files ending on .htm in a web browser
window, just as with files ending on .html
The Python code auto-completion will automatically try to load DLLs that probably register the wrapper classes used in type hints.
[Linux only] Make sure not to start a MeVisLab
that does not match the current LD_LIBRARY_PATH value.
Remembers the last selected file type from the "Open" dialog now.
Will try to minimize automatic Python reformatting changes when they are done, so that undo for these changes works better and does not replace the whole document.
Do not evaluate watch expressions in the Python debugger if the corresponding view is not even visible.
Commenting/uncommenting Python code now adds/removes an additional space after the comment character to match the format enforced by the Black auto-formatting tool.
Fixed that adding line breaks to wrapped around lines could duplicate the parts after the next wrap-around.
MATE now has an About dialog (basically the same one as the main application).
Python code tools: Updated the default PyLint and MyPy versions used for error checking, the Black version used for code formatting, and the Rope version used for refactoring.
Allow Shift+Insert to paste text in the Evaluate Expression view.
Test cases are now cached the same way as modules, which speeds up the TestCenter start if you have a lot of test cases. The test case cache is updated together with the module cache.
One can now define setUp and
tearDown functions,
which are called before and after each test function.
Show separate sections for setUpTestCase
and tearDownTestCase functions.
Changed the default for the grabFromScreen
parameter of the TestSupport.ScreenShot.createScreenShot
method to false. This way, screenshots are not obscured by
a possible lock screen.
Added methods updateValue to
TestSupport.Fields and
updateFieldValue to
TestSupport.ChangeSet, which do not
touch the field if the required value is already set.
Fixed logging output if functions like EXPECT_EQ
are called inside a Base.expectError function.
Show an error if a test could not be loaded. Also create an entry in the test report.
List missing or not correctly loading tests in created JUnit test reports.
Fixed warning and error handling in
setUpTestCase functions.
Show a warning in the test report if a test suite contains unknown test names.
On a finished test run, raise the report window to the front if it was already open.
Show the network of a test when the Stop and inspect network on error option is active, even if the network was initially empty or did not exist.
Fixed Stop and inspect network on error option changing the test behavior in certain circumstances.
Do not revert ChangeSets when stopping
because of the
Stop and inspect network on error option.
One can give an additional factor for test timeouts
in the case test execution is slowed down for any reason.
Either with the environment variable MLAB_TEST_TIMEOUT_FACTOR,
or, if tests are run from the command line with
TestCenter.py, with the option -X.
Avoid unnecessary reloads of the selected test when editing the quick search string.
Apply a short delay before applying the quick search string; this speeds up filtering while typing.
Fixed a case where old test reports could not be deleted before generating a new one.
Downgraded module deprecation warnings to info messages for tests that are solely associated with deprecated modules.
Formal tests will by default try to use software rendering on Windows.
The default formal test for modules now tests
if the seeAlso tag references deprecated
modules when the referencing module itself is not deprecated,
and warns accordingly.
Process the idle queue after closing an example network in formal tests to facilitate possibly required clean-up.
Fixed that MLABListViewControl.setColumnWidth
had no effect if the control was already visible.
Added the removeNode method to the
MLGraphWrapper class.
Added the methods isPersistent and
setPersistence on
WEMPrimitiveValueListWrapper
Added the method WEMPatchWrapper.transform
to transform individual WEM patches with a 4x4 matrix.
Added MLABNetwork.clearUndoHistory
to the ScriptingReference documentation.
Added the convenience method
MLPagedImageWrapper.getFullImage,
which returns the full image data as a NumPy array.
One can restore the original values of output-only fields per scripting now. (Previously, this only worked for editable fields.)
Added methods for creating rectangles
and ellipses to the CSOList wrapper.
Fixed that the automatically executed sizecustomize.py
failed if the called MeVisLabPackageScanner showed any warnings or errors.
Created the command-line Python tool mevislab_pip.py
for installing Python packages, which basically does the same as the
PythonPip module.
Also marked our Python installation as EXTERNALLY-MANAGED, so that is impossible to install into it if not deliberately.
Added the missing detach method to
Inventor.sensors.SoNodeSensor,
Inventor.sensors.SoFieldSensor,
and Inventor.sensors.SoPathSensor.
Deprecated the method MLABPackage::scriptsPath,
which had a somewhat misleading name. Use
MLABPackage::basePath instead.
Adding an item to a StandardItemModel
using an invalid index does no longer crash MeVisLab.
Fixed that ctx.(un)expandFilename did
not use the same precendence mechanism as
MLAB.variable.
Added a hintText attribute to the TextView
control (similar to the same attribute for LineEdit).
Keyboard navigation with Tab/Shift+Tab is now possible inside PushButtonGroup and ToolButtonGroup.
Fixed: ListView control showed an empty row for an empty
values attribute.
Added documentation for the following controls: ImageMap, MatplotlibCanvas, QuickView.
Fixed the spelling of the persistence methods in the
ml::ListBase class.
The MeVisLabVersion.h include is not
included through other header files anymore
and must be included explicitly.
Stripping of debug symbols in own DLLs can now be triggered with
the CMake variable MLAB_STRIP_DEBUG_SYMBOLS.
(for those users with an ADK or Application Builder license)
The number of threads used for installer pre-compression on Windows can now be configured. (See the ADK documentation.)
Use better compression (xz instead of gzip) for Linux installers.
Third-party libraries can be excluded explicitly from an installer
if they are optional by setting the
EXCLUDE_<libraryname> installer variable to 1.
The Python import analysis done for installers does not
look anymore at the code of those Python packages for which a
python_<import-name>.mli file has been
generated.
It just adds this include file, which is responsible to copying
all required files and dependencies.
Standalone applications now automatically include the
PagedImage scripting wrapper,
even if it is not explicitly added.
Setting the UseReadOnlyLicenseDialog
preferences variable
for an application forces the use of a browse dialog for licenses
that is read only. The default dialog on Windows would allow to
create and remove directories, etc.
Improved the performance of deleting Python cache files when uninstalling a Windows application.
The MeVisLabPackageScanner in newly generated applications
will ignore MeVisLab .prefs files and only read
application-specific .prefs files.
It will read the file mevislabApplicationName
in the MeVisLab/IDE/bin directory to
get the application name. This also affects the
sitecustomize.py file, which sets up the
PYTHON_PATH for separate Python processes.
Adding @@!MeVisNoCrypt!@@ to any file prevents
its encryption during installer generation.
Added a new command variant to the installer language syntax:
-gr <regEx-string> will remove all previously
added files from the installer that match the given regular expression.
If the verbose mode of the ToolRunner tool is switched off, the log output now contains only non-verbose messages. Turn on Use verbose mode to revert the log output to a state similar to previous versions.
Fixed: When installing certain Python packages with
PythonPip,
e.g., scikit-learn, and using it in an application, it could happen
that the associated third-party information entry was not included
in the installer.
Fixed: Some Python packages included with the SDK (for example, matplotlib) might by default be missing dependencies when used in a standalone application.
The Standalone Application wizard allows to provide additional product information to be incorporated into the generated software bill of materials (SBOM) file.
When generating the SBOM file for an installer: If the license ID of a third-party component starts with "LicenseRef-", the text of the license is included in the SBOM, since this is obviously not a known SPDX identifer.
SBOM generation: Was missing entries for some static libraries used by the SDK only indirectly.
SBOM generation: We marked some component dependencies as explicitly optional where appropriate, so as not to generate unnecessary warnings when they are no included in a standalone installer.
A lot of third-party libraries have been updated in this release.
See the list of available third-party libraries here.
Note that this is not the complete list of third-party components used in MeVisLab;
for this, you should consult the About dialog of MeVisLab, or use the
ThirdPartyInformation module.
Some notable updates/additions:
Embree has been updated from version 2.17 to 4.4.
Sphinx was updated from version 6.x to 8.x.
Qt has been updated to 6.9.2.
Python has been updated to version 3.13.7.
Boost has been updated from version 1.86 to 1.87.
NumPy has been updated from version 2.2.6 to 2.3.2.
The signfiles tool now signs .toml and
.yml files with the correct comment character.
Replaced a fallback font used on Linux with something with a well-known, permissible license.
The eatDicom command line tool has finally been removed from the SDK. It was severly outdated and not used anymore.
Likewise, the MeVisLabDicomService has been removed, which partly relied on eatDicom.
The movie player and screenshot gallery widgets have been moved to a separate DLL to facilitate smaller application installers (with reduced system dependencies) if these widgets are not needed.
The Remote Rendering protocol was changed to use physical (pixel) units instead of logical units for sizes and event positions, to allow for pixel perfect rendering and interaction on scaled or high DPI displays.
Fixed that the Convert Pro Files to CMake...
user script would complain about nested packages when converting a
package directory (i.e., one with a Package.def
file in it).
A parent or child directory of the package directory were
fine, and even in the error case the converter would do
its job nevertheless.
Setting the environment variable MLAB_USE_CRASHHANDLER
to a value other than 0 starts a crash handler for the IDE or
standalone applications.
If the main MeVisLab executable crashes, a crash dump is stored
in the directory given in MLAB_CRASHHANDLER_DIR or,
if that is empty or unset, in %TEMP%/MLABCrashReports
resp. $TMP/MLABCrashReports.
CSO modules:
Fixed: The SoCSO*Editor
modules did not respect the
Empty group before generation flag.
CSOIsoGenerator now
generates a CSOGroup with a given ID if that CSOGroup does not
exist yet.
CSOIsoGenerator:
Slightly improved error handling.
Added a voxel snapping option to
SoCSOPointEditor.
ImageToCSOVoxelSet:
Do not print meaningless error message if no image is connected.
Made the shouldMoveOnlyGrabbedSide flag
of the SoCSORectangleEditor
module visible in the panel and documented it.
SoCSORectangleEditor:
Several small usability fixes.
WEM modules:
WEMSubdivide:
Added a field for limiting the number of iterations.
WEMLoad
will detect degenerated meshes while loading,
which can, e.g., happen when loading .stl files.
WEMSave:
Got a field that outputs the actually used file name
(in the case a suffix is added automatically).
WEMSave:
Do not save file if file type is auto-detected
and the file suffix is unknown.
Also added a savingSuccessful flag.
WEMModify
now retains the persistent PVLs of an added WEMPatch.
WEMClipPlaneToWEM
also tries to retain persistent node PVLs.
WEMClipPlaneToWEM:
Try to avoid crash condition.
Improved performance of
SoWEMDiagnosis
when detecting many errors.
WEMSelectPatches
can now actually select multiple patches.
SoWEMRenderer:
Added support for rendering multiple selected WEMPatches,
specified by their indices.
SoWEMRenderer:
Added support for rendering an individual LUT for each WEMPatch.
View2D modules:
Added new modules
SoView2DPointMarkerEditor and
SoView2DVectorMarkerEditor.
These are partial replacements for the
SoView2DMarkerEditor.
SoView2DExtensionSampler:
Added support for MSAA (multi-sampling).
The View2DFontQt class
used an inappropriate blend function
(this was only obvious with low alpha values for the text).
SoView2DRectangle:
Fixed swapping of start/end coordinates after sides of the rectangle were moved close together
Fixed that flipping of the rectangle was possible in ManagedInteraction mode.
Added optional colors for handles and side lines.
Corner handles were not correctly scaled on a high DPI display.
Corner handles and side lines now become thicker on hovering over them with the mouse
Fixed that command actions of SoView2D
could not be executed with the
SoExecuteCommandAction module.
Fixed GenericSoView2DPointingAction
not correctly updating the inViewer flag if
the SoView2D area does
not cover the whole window and the cursor is moved outside
this area but does not leave the window.
View2D and co.:
Retire the useRelativeLUTIfNoInputImage
flag, which did not behave correctly in all cases, and
instead introduced the scaleLUTForNewImage and
shouldComputeLUTOnEachImageChange flag.
Changed the default View2D
behavior when the input image changes. The LUT is now recomputed
on each image change instead of trying to keep the relative values
of the previous LUT.
Rendering 2D slices in 3D viewers now has correct depth information.
This fixes incorrect visualization for
RemoteRendering and
OffscreenRenderer modules,
when no stencil buffer is used; but this introduces depth fighting
on the 2D slice. Better to switch on the stencil buffer.
Other Open Inventor modules:
Changed depth buffer handling for
SoExtText2 to fix rendering
if alwaysOnTop is false.
SoPostEffectAntiAliasing:
Fixed shader errors with FXAA anti-aliasing on AMD GPUs.
Added a SoTriggerOffsetAction
module that allows to conveniently trigger steps
for a Managed Interaction offset action.
Fix crash on Linux in
SoRenderSurfaceIntersection
caused by use of unavailable geometry shader functions.
SoPostEffectTransparentGeometry:
Changed the default mode to Depth Peeling,
because Dual Depth Peeling does not work
with NVidia drivers since version 570.
SoGVRVolumeRenderer:
The maxTimePoint and maxUserIndex
fields are now updated immediately when the input changes.
Improved the error handling of the
GVRVolumeSave module.
Fixed a crash in some GVR modules if an image only has one slice.
Fixed border pixel calculation of the MPR
and SoView2DOverlayMPR modules
in Average mode.
Changed LUT handling in
InteractiveRampLUT when image
is changed and the LUT shall remain untouched.
StylePalette:
Changed MonoDefaults button to MonochromeColors and adapted resulting palette.
Renamed marker type title None to Module default.
Renamed marker type header to marker shape in the UI.
DisplayLUT and
MLLUTInspector always rasterized
the input LUT to 256 entries.
Now it is smarter about it and uses up to 4096 entries.
RunPythonScript:
Got a hidden baseIn field that can
be queried just like the 10 parameter fields.
Module panel did not expand properly in vertical direction.
The module ImageSave now keeps
the input image's ImageComments DICOM attribute
unless it is overwritten by the module's image comment.
ImageLoad:
Fixed a memory leak when loading an image failed.
Fixed the behavior of the
SmartMarker module.
DicomSourceEditor:
Now allows to the set the defaultCallingAET name.
DicomViewer:
Avoid error messages when selecting datasets that are not an image.
DicomViewer:
Added an option to use the image's actual minimum and maximum voxel values.
Added the MaskComparison
module, which returns a number of overlap metrics for two mask images.
Improved the error handling of the
DeMosaic module.
Enable the user to set the output image type of the
Mask module.
Added new module ShapeMask.
It can be used to generate ellipsoid or box mask shapes at a
user defined position inside an empty image.
For the modules OffscreenRenderer
and RemoteRendering, the stencil buffer
option is now on by default (if supported).
New user script Toggle Default Text Editor to allow quick-switching between MATE and your favorite external editor(s) as configured in the preferences (default shortcut: CTRL+SHIFT+M).
New module MaxValuePositions
to combine the positions of the n highest image values in an
XMarkerList.
New module XMarkerListToCircular
creating a mask image with simple circular objects at positions given
by an XMarkerList.
Added option to limit maximum number of points in
PCLMovingLeastSquaresr.
DICOM:
Resolving variables in paths in many DICOM related modules.
Added decoding of some more private Siemens tags in tag dumps, mostly related to C-arm devices.
DicomConfigurableMessageFilter
can filter more messages, and can suppress user defined ones, too.
Improved inherit-flexibility of GUI for Dicom Patient Information in some DICOM export modules.
Now supporting (rarely used) DICOM Segmented Color Palette LUTs
in ApplyDicomPixelModifiers.
DirectDicomImport:
Improved details regarding import of DICOM files from Siemens' Cios C-arm.
JPEG2000 import is performed without experimental
itkImageFileReader backend now.
Also tries to load non DICOM files with suffix
.gz (e.g.,
.nii.gz-files) now.
Also keeping SOPClassUID in private
tag in cases where it is overwritten during import.
Allowing user defined comments in Configuration → Import Files and → Import Directories.
Added some experimental options for debugging purposes under Configuration → DICOM Import Options → Experimental. Not for common use.
Improved support for enhanced self-composed Siemens Set'N'Go Series in Configuration → DICOM Import Options → Experimental → Special Processors.
Fixed incorrect DICOM SOPClassUIDs and SeriesInstanceUIDs
written into files saved with
DicomPRSave.
MultiFileVolumeListPROutput:
Fixed missing/incorrect display of a some Presentation State information such as graphic annotations or VOI LUTs.
Better supporting referenced frames with multiple values
in tag ReferencedFrameNumbers.
DirectDicomImport:
Fixed import problem for a few DICOM files where the image data was loaded correctly but DICOM tags were missing.
Fixed rare path-resolving problem.
Fixed rare problem with incorrect creation of DICOM UIDs when importing enhanced multi-frame files with only one frame.
Partially fixed possible collision and mishandling of FME private creator tags with MMS private creator tags.
Fixed some subtle filter mismatches when importing
via FileListFilterPlugin
and filtering DICOM tag values, especially on DCM/Tiff pairs.
Better supporting hashes ("#") in file names.
The SoView2D module got a
userInfo attribute that can be displayed by
the SoView2DAnnotation module.
DicomImport module: Added
the possibility to check the SortPart configuration before
applying it.
Third-party libraries have been updated as usual for a patch release. A notable update is the NumPy Python package, which has been updated from version 1.26.4 to 2.2.6.
Patched Qt to improve startup performance of OpenGL back buffer generation. This affects, e.g., remote rendering of module panels.
Fixed a problem where active MeVisLab profiling could change the sequence in which fields were updated.
MATE:
Improved Dark mode handling on Windows 11.
Fixed Goto Definition in the context menu of Python code, which would previously jump to the same location as Goto Assignment. This might be slow, though.
Fixed a problem where an automatically created type hint import for Python code could be inserted in a statement continued from the previous line.
Fixed the Matplotlib control in
MeVisLab when the hideToolBar attribute was
set.
Fixed that the Python function
mlabAsync.fieldChanged did not handle
cancelled futures.
Fixed an initialization problem of the SoWEMBulgeEditor module, which prevented
it from working properly when freshly instantiated in a network.
ImageToCSOVoxelSet does not
print an error anymore when no image is connected.
Fixed a crash in the WEMRayInterset module when connected to
a WEM with no patches.
DicomImport:
Fixed that 2D images were not correctly split with the Split time points option.
Fixed that the MeVisLab private frame number tag was missing for single slices from multi-frame images.
Managed Interaction handling in SoView2D:
Offset actions did not consider the view the mouse was over when triggered through a key press, e.g., when the slicing operation was bound to key presses.
GenericSoView2DPointingAction:
The inViewer field would not correctly update
if the corresponding SoView2D did
not occupy the whole viewing area.
PythonPip:
Fixed an exception if Python packages had a
license directory in their metadata.
Greatly improved the startup performance.
ApplicationBuilder: Improved SBOM generation.
MeVisLab-specific Python wrapper classes are now also registered in the virtual package 'mevislab' (previously, they would only be available from '_PythonQt.private').
Third-party libraries have been updated as usual for a patch release.
A check for still running processes in the Windows installer/uninstaller has been removed again. It did not work for new Windows 11 installations and prevented installation, and also was used in cases where it was not needed.
The SoVertexAttribute4ub
module (and perhaps other modules that take integer lists)
would not parse value lists that were given as hexadecimal
values.
Python auto-completion for external editors (e.g., PyCharm) showed an bogus extra parameter for some Qt methods. This has been fixed.
MATE: When creating Python function stubs for MDL commands that take scripting classes as parameters, the type hints for these are now generated as strings, to prevent an import error if these scripting classes are loaded only on demand, e.g., when a panel is opened.
MATE: Fixed dark mode display of intermediate ReST code for mhelp files.
DicomDeidentify: Changed
pseudonymization to return same values as before the 4.1.0
release when all relevant values are the same.
SoSelection2 has been
un-deprecated, as there currently are use cases that cannot be
implemented with SoPicking.
Fixed an exception in the Interaction
Example of the
MatplotlibMDLExample module.
Assorted fixes and improvements for the new
CategoricalEncoding module.
Fixed a memory leak in the destructor of the
AccumulateXMarkerLists module.
Application Builder: Restrict number of threads used by the installer pre-compression on Windows. We encountered cases where installers could not be built on machines with many cores because the required memory could not be allocated.
MeVisLab now has a full-text search for its documentation. The entry for it can be found in the Help menu of the menu bar. (Note: The input widget above this entry only searches in section headers.)
The documentation of user packages can be indexed with the
IndexUserPackagesHTMLFiles
module.
Input and parameter connections in a network can now be copied instead of just moved to another input connector by pressing the Shift+Control keys while dragging.
A newly installed MeVisLab will default to only show the module panels for the currently active network. This behavior can be changed by deselecting the menu item Panels => Hide Panels of Invisible Networks.
Support for application translations has been improved, e.g., detection of translatable multi-line strings in Python code, translation hints in comments.
Since the command-line help of MeVisLab is very long, it is shown in a browser window now instead of a dialog.
The automatic panel of each module now shows a column that displays - in abbreviated form - the attributes of each field, e.g., is it editable, has it still its default value. Fields can also be sorted by this column.
File links in the output console get a different color if the linked file does not exist.
If the variable
DisableModuleWindowsPersistence is set to
True in the mevislab.prefs
file, only the positions of currently open panels are saved in
a network file and all others are removed.
Previously, all panel positions were removed when this option
was set.
Fixed that Restart with Current Networks also opened recent files if the Auto Load Recent Network Documents setting was set.
Fixed that the parsing of floating-point numbers in files depended on the set locale, which could accidentally be set to the system's default. This would affect users with, e.g., German system settings.
Suppressed a “Unable to open monitor interface” warning from Qt that could occur if the monitor setup was changed on Window.
Fixed the links created by :field: and
:module: Sphinx roles in network note items.
Fixed many (mostly small) memory leaks.
Disabled the broken Restore Defaults button in the Preferences dialog for now.
Lots of small documentation updates and corrections.
MATE got an option to auto-format Python code with the black tool either manually or on each save.
The Jedi Python package used in MATE for the Python auto- completion has been updated to a recent version, and should support current language features.
Auto-generated Python function stubs will use the type hint support of Python now.
The Python debugger will mark object attributes that actually are a 'property' object as such.
The Python debugger in MATE could show overly long value tooltips. These now have a sensible maximum length, and occasional word breaks for better usability.
Raise the IDE window when continuing after hitting a breakpoint in the debugger.
The MATE object available for user
scripts in the MATE text editor can now also be used in
its scripting console.
MATE: Fixed hard to read text in the workspace file finder drop-down list.
Fixed the integration of the rope Python refactoring library.
Fixed that the Alt+Down key combo would not select the next entry in the 'outline' view anymore (while Alt+Up still worked).
Fixed a crash in MATE when setting/resetting the busy state cursor with a UserScript.
Fixed a crash if Ctrl+F3 is pressed without selecting or searching something before. Now, the text under the cursor is automatically selected in this case.
Fixed that the Close all secondary windows with ESC preferences option inexplicably also was used for opening the error check view of Python code. This has now its own option.
The ScreenShot.createScreenShot
function in the TestSupport Python
package now allows to specify that the screenshot should not be
grabbed from the screen, but instead be done in an offscreen
buffer, which works around the problems of panels sometimes
being obscured by other windows or the screen saver.
Added missing compare functions to
TestSupport.Base
Fixed that a test could sometimes be started recursively a second time by the user while it was still running.
Added the function MLAB.isNone(), which
can be used to check if a wrapped Qt object has been deleted.
This method has been added because the usual way of simply
using the object itself as bool value could return wrong values
because it would also use any isVisible,
isNull, or isValid
method of an object.
Added the function
MLABDicom.loadDicomTreeFromBinaryContent,
which loads a DICOM file from a buffer instead of from a file.
Users can unset the internal "should stop" flag with
MLAB.setShouldStop(False).
This can be helpful in server scenarios.
Named dock presets/layouts of the IDE can be activated by
scripting with
MLAB.IDE().activateDockPreset(name).
CurveList and
CurveData objects can now be created by
scripting with
MLAB.createMLBaseObject("CurveList") and
MLAB.createMLBaseObject("CurveData"),
respectively.
Some code wizards were adapted to not create Python code with (initially) unused imports.
Jobs submitted to the JobScheduler
extension were never finished if the executable to use did not
exist.
JobScheduler: Fixed that jobs that
were chained to a predecessor job that didn't exist anymore
were not necessarily removed.
Fixed that adding a Python function as field listener to a module with no own script context would fail.
Fixed CSOWrapper.getIsPointInside
behavior.
Made sure that the output from the
logging default logger is correctly
categorized in the output console as info/warning/error.
The ProgressBar control now shows
an indefinite progress bar when combined with a boolean field.
One needs to call
MLAB.processEvents(True) periodically to
allow GUI updates of the progress bar, though.
Fixed that the CSS hover attribute was
ignored for buttons associated with a field when using CSS
styling for a panel GUI.
This was only a problem when used in the IDE, though,
it always worked when run as application.
Alleviated a problem where the GraphicsView would not show the content of a web item if the view is too big. The issue still exists, but the view can be larger now.
For Visual Studio projects, UTF-8 is now the expected encoding for source files.
Windows: By default, the /MP option is used
when compiling C++ modules with Visual Studio;
this can be configured with the
MLAB_MSVC_PARALLEL CMake option.
(for those users with an ADK or Application Builder license)
Installers can now generate a rudimentary JSON software
bill of materials (SBOM) file. Set the variable
GENERATE_SBOM to 1 in
your .mlinstall file to use this.
The SBOM file is generated alongside the installer.
Fixed annoying misleading warning message about files that could not be decrypted (and were not meant to, because they were provided this way by the MeVisLab SDK).
Fixed: Installing Python packages with
PythonPip generated
unnecessary (optional) library dependencies, which could
mean unnecessary Python libraries were included in standalone
installers if they were also installed.
Fixed a crash in the Standalone Installer wizard when closing the wizard after typing an invalid or incomplete application module name.
Windows specific
Installer generation now uses 7-zip for pre-compression, which yields far better compression, but takes somewhat longer.
Warn if an application can not be uninstalled completely because some executable from it is still running.
Fixed that installers installed by users without admin rights would sometimes not work because the required updated VisualC runtime could not be installed on the system. Now, the necessary DLLs are installed into the application directory in this case.
Fixed uninstall of long file paths.
Linux specific
Now allowing to select an executable (process) name for the standalone installer that is identical to the application name.
Allow installers with spaces in their product name.
A lot of third-party libraries have been updated in this release.
See the list of available third-party libraries here.
Note that this is not the complete list of third-party components used in MeVisLab;
for this, you should consult the About dialog of MeVisLab, or use the
ThirdPartyInformation module.
Some notable updates/additions:
mimalloc is now used by MeVisLab to improve memory allocation efficiency on Windows (only in Release mode).
DicomImport:
The user can now drag directories or files to import onto the module.
Added new modules for filtering which files are imported:
DicomImportTagFilter
and DicomImportBooleanOperationFilter.
Added JPEG2000 decoding support.
Allow slightly wrong DICOM files with trailing zero bytes instead of trailing spaces for odd-sized string tags.
Added support for segmented palette LUTs.
DicomImport now
prevents import of more than one file with the same
SOPInstanceUID.
Fixed: Tags stored in SharedFunctionalGroupsSequence tags were ignored during import of multi-frame files.
SoView2D and
SoDiagram2D by default now
use the Qt library for 2D text rendering, which has the
advantage that it usually can print all unicode characters.
The old default is restored by setting
View2DEnableQtFontRendering = No
in the MeVisLab preferences file.
PythonPip will not
propose a target package for installing packages by default,
the user must select one (but the selection will be
remembered).
The GraphManager:
module got the ability to create a completely empty
Graph object
(which can be filled from scripting).
Improved loading speed of Graph
objects with the BaseLoad
module.
SoCSOTransform modules
will now accumulate transformations in typical OpenInventor
manner (only for newly created modules that use this information -
existing modules in saved networks will retain the old behavior
through a hidden option field).
Object inputs and outputs of ITK wrapper modules are now more specifically typed, which should make it easier to connect the correct input objects.
The itkImageFileReader
and itkImageFileWriter modules
have been moved to the MeVisLab/ITK package.
Changed the Histogram
module to never set a NULL object at its output.
ImageLoad: Make PNG
loading more robust against unusual compression parameters.
Fixed that the progress bar in WEMLevelSet...
modules didn't show any intermediate progress.
Fixed: Some WEMLevelSet... modules could
crash if applied on a WEM without any faces.
UndoManager: Fixed cause
of rare, spurious crashes on module creation.
Fixed a crash in the MemoryCache module if the input image
is too large. Instead print an error message.
VideoWriterML and
VideoWriterInventor: Fixed
handling of non-ASCII characters in the target filename.
ExportImageAsSlices:
Fixed that the Export button was
disabled when a valid file path was already set upon network
loading.
Thumbnail: Fixed
auto-update behavior.
The ExtractRTStruct
module did not produce any output if the
SourcePixelPlanesCharacteristicsSequence tag was not empty.
Fixed image border handling of
View2DIsoContourShader.
So3DMarkerRenderer:
Fixed that the internal bounding box of this scene node
did never shrink when markers were removed.
The SoView2DMarkerEditor
has been refactored somewhat.
WEMIsoSurface: Will now
unset its WEM output in
AutoUpdate mode if the input image is
removed.
Fixed: WEMGeodesicClip
was only usable in AutoUpdate mode.
WEMBinarySurface: Fixed
that profiling didn't work for this module.
Fixed: Connecting an invalid image to a
CSOIsoGenerator
cross-connected to a
CSOMerge triggered an endless
loop.
Fixed a problem with the SoCSOEllipseEditor that path points
would not be correctly calculated while dragging the cursor
outside the viewer.
SoView2D: Fixed: It has
been possible to set the maximum z, t, and u index for the
displayed image beyond the actual dimensions of the input
image.
Fix SoView2DAnnotation
occasionally printing errors to the console when showing
long, abbreviated UTF-8 strings.
SoLUTEditor: Changed
the behavior of the interactive editor: Previously, it was too
easy to accidentally insert new control points when wanting
to move the first or last LUT point up or down. Now a more
conscious move to right or left is needed.
Sobel3D: Fixed a
potential division-by-zero crash.
Fixed that the enabled field of the
SoPathTracerMaterial or
SoPathTracerGradientVolume
modules was ignored.
Deprecations:
Removed (deprecated) SegContourList
inputs from modules
DynaCurve and
FuzzyConnectDistance.
FuzzyConnectDistance has
been deprecated, as its proper use has been lost to history.
ImageROIIsFileCache has
been deprecated, use
AccumulateImage instead.
The StringListSplitter
module has been deprecated.
ConnectedComponentsMacro,
for simple access to the most common features from combinations
of ComputeConnectedComponents,
FilterConnectedComponents, and
ConnectedComponentsToImage.
ExtractTextTableFromPRData,
which tries to convert textual data from the
GraphicAnnotationSequence of DICOM files
as plain text, JSON, and CSV.
FieldDifferenceViewer, for
showing differences between two strings as a difference view.
SelectTimepoints, which
allows to select a subset of time points from an image, either
by index, or by which are closest to a list of desired time
stamps.
MarkerToImage, for
changing image values at provided marker positions.
CategoricalEncoding, which
converts one- or multi-hot-encodings to integer labels and vice
versa.
NormalizeImageByPercentileMapping,
which normalizes image values by linearly mapping lower and upper
percentile to a defined range.
Fixes of several code smells and memory leaks; more compile warnings are handled as errors now.
SoMLMatrixTransform
can now invert the matrix on the fly.
DICOM related modules:
Many DICOM documents updated.
DirectDicomImport:
Also uses the new JPEG2000 decoder mentioned above now
(previously it used the
itkImageFileReader
for JPEG2000 encoded image data).
DirectDicomImport:
Does not compose certain IODs / Modalities anymore,
which it previously did in error.
Improved robustness against non-standard and broken DICOM files, improved issue logging.
Added some checks and warnings for error cases that might be caused by non-standard, or too long, file names.
DicomTreeCompare has
new parameters to control difference dumps.
CSOBoolOp:
Fixed a crash that occurred when the input
CSOLists contained identical
CSOs
Fixed incorrectly empty results when the input
CSOLists had two path points in
different CSOs that were very close
together (< 1e-9 mm)
Removed the project MLStochasticCollocation
(...LinearFunction and
...InterpolationPolynomial modules) from the
FMEwork/Release package,
as nobody seemed to use it.
The PCLMarchingCubesRBF
module been removed since the used PCL algorithm is
too memory- and time consuming for nearly all parameter
configurations, so that is was not stable enough for normal
operation.
Qt has been updated from version 6.6.3 to 6.7.2. Other assorted third-party packages have also been updated.
Fixed pixel spacing and patient orientation for single
images imported with DicomImport,
when the corresponding tags are contained in a
SharedFunctionalGroupSequence tag.
Fixed that DicomImport would
sometimes swallow the image data of files when imported together
with other files (in the same series) not containing image data.
Fixed: DicomImport would set
incorrect image min/max values for files where these values were
not explicitly given but had to be derived from the number of bits
used.
Fixed: DicomImport did not correctly
handle PALETTE COLOR images. This led to garbled images or crashes
on accessing the output image.
Fixed an occasional crash of remote modules using the
RemotePanelRendering module for
remote UI.
Clean-up and fixes of license identifiers displayed for some third-party libraries.
Fixed that the context help function in the MATE editor (e.g., for scripting functions) wouldn't jump to the relevant position in the help file.
Fixed: The OutputInspector would show the first inspected output twice if the view is in a floating window (instead of docked to the main window).
Fixed: Editing network notes did not allow to add links by shift-clicking GUI elements anymore.
Fixed: Some mouse interactions on a network didn't work on displays with a configured scaling other than 100%.
Fixed: The ML Module wizard had created invalid code.
Fixed some duplicated WEM help entries when using the Help → Search in MeVisLab function.
Removed some help sections pertaining to the discontinued macOS support.
ADK/ApplicationBuilder: Removed non-functional macOS settings from the Standalone Application wizard dialog.
ADK/ApplicationBuilder: Fixed stand-alone applications not working correctly if they use the asyncio event loop, but do not (even indirectly) import the Qt Python bindings.
Various small updates for third-party libraries. A notable change is boost, which was updated to version 1.85.0 (from 1.84).
The PythonPip module will
now try to determine a SPDX compatible license identifier for
newly installed Python packages when generating the
.mlinfo entry for the
About... box.
Windows: The SDK installer didn't install the Visual C runtime installer, so it failed if the runtime wasn't installed by some other application first.
Fixed: DicomRescale
could crash if operating on a DICOM file with invalid tags.
Fixed various other crashes caused by loading invalid or corrupt DICOM or .mlimage files.
Fixed loading of DICOM tags which have more than one allowed VR type.
Updated the MESA OpenGL driver to fix a crash triggered
by the SoPostEffectAntiAliasing
module when using software rendering on Windows.
Fixed a crash that could occur in the
ListView control when adding more columns
(via scripting) to items containing rich text.
Fixed a crash in secure mode testing when opening panels with stored relative positions.
Fixed unvoluntary pinning of wheel events in the RemotePanelRendering module.
Fixed: The BoundingBox
module didn't crop the C/T/U dimension information to the
output dimensions (unlike, e.g., the
SubImage module).
MATE: Fixed hardly readable text in workspace file finder.
Small documentation fixes.
We mainly used this release to remove old interfaces and modules that were deprecated, or to fix interfaces that had severe drawbacks.
The following deprecated modules have been removed from MeVisLab (you could instantiate them in previous versions if you knew their exact name, or if they were used in old networks).
SoAsciiText
CSOBulgeEditor, CSOFreehandProcessor, CSOIsoProcessor, CSOLiveWireProcessor, CSOModifyProcessor, CSOPrimitiveProcessor, CSOTransformationProcessor, SoView2DCSOEditor
SoFixedFunctionShader
SoAngleLines, SoAngleToObjects, SoCake, SoDistanceLine, SoMainAxis, SoMinimalDistance, SoRuler, SoShapeToPointSet, SoThresholdToPointSet,
SoScreenSpaceAmbientOcclusion
ImportDialog, OISettings, OpenImage, SaveImage
EatDicomImport, DicomService
Negation
AngleLines2D3D, DistanceLine2D3D, SimpleImageStatistics
ObjMgrEventClient (and all ObjectManager related modules)
LiveWireMacro
SwapViewer
BaseBypassOp
ConnectedComponents
ContourManager, Draw2D, LiveWire, RegionToContour
DistanceTransform
LoG
KernelFilter
WEMClip
MovieCreator
The following MeVisLab-specific Python packages were deprecated and have been removed:
ObjMgr
(as the associated modules have been removed, too
matrix4
(use linear.matrix4)
The following MeVisLab-specific Python functions and methods were deprecated and have been removed:
linear.vec3.copy
(use vec3 constructor instead)
linear.toVec3
(use vec3 constructor instead)
The old QtWebKit-based web control has been removed in favor of the (still supported) QtWebEngine based one. This new web control supports modern web standards and is based on the Chromium engine (used by the Chrome browser), but has one important drawback: Since the HTML/JavaScript engine runs in a separate process, communication with MeVisLab needs to be serialized, and viewer controls can't be embedded into an HTML page, at least not directly.
The TestWebEngineView module
demonstrates the abilities of the WebEngineView
control.
![]() | Note |
|---|---|
Technical note: Since the If you implement your own QtQuick based widgets in MeVisLab, we suggest to set the backend to "OpenGL" in your code, too, with the following line: QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);to avoid render behavior changing depending on the module load order. |
Lots of old names of renamed functions and enums have been removed.
There still exists a Python script file to help in the renamings:
Packages/MeVis/BuildSystem/BuildTools/Scripts/replaceDeprecated.py
You can use this script from MeVisLab with the MLReplaceDeprecatedAPI module.
Some methods were replaced because they returned a const char* object, where it was the recipient's duty to free the allocated memory afterwards. In these cases there are methods that take a std::string instead.
Some methods were removed because the task could nowadays as easily be performed with methods from the STL (or Qt).
The method ml::Module::calculateOutputImageProperties
now has two arguments. The second one is the PagedImage
on which to set the image properties (previously obtained with
getOutputImage(outIndex)).
You might notice that trying to override the method with one argument now causes an error in the compiler. This is intentional, you need to override the method with two arguments.
getFieldContainer() isn't needed anymore,
as ml::Module is derived from
ml::FieldContainer anyway.
And so on.
If you are unsure how to replace removed methods, install the 3.7.2 SDK, and compile your code with deprecation warnings enabled, and/or look at the documentation of the methods.
Qt has been updated to Qt 6.6. Consequently, some long deprecated classes and methods have been removed. Some of the more prominent ones are:
QGLWidget is no more.
Use the newer QOpenGLWidget.
QRegExp has been superseded by
QRegularExpression.
QTextCodec, QTextEncoder,
and QTextDecoder have been removed (not exactly,
they still exist in the QtCore5Compat package, which we don't include
in the SDK). By default, Qt only supports Latin1 and UTF encoding.
The multimedia framework has undergone some refactoring.
The default encoding of text files read or written by MeVisLab is now UTF-8, if not specified otherwise.
The window positions of modules in a network are now stored relative to the screen the IDE main window is on.
Added a new command line argument -prefs-variable
to define/override a preferences variable (e.g., 'Locale=en_US').
Auto-completion for imports in the Python scripting console didn't work for namespace packages (PEP 420).
When searching for words in an editable text area with the search dialog, the highlighted words were hardly visible.
MATE: Fixed shortcut F7 being defined twice in the help editor.
When converting a local to a global macro, a dummy example network is now created automatically.
Ctrl+L doesn't just switch to the No Dock Windows layout now, but toggles between this layout and the previous one.
When changing the visibility of an connector by removing the hidden tag again, a reload of the module would not update the hidden state.
Fixed that a field comment from the Interface section is lost if the field is also listed in the Description section.
MATE: The project workspace search now supports multi-word search.
The MeVisLabStarter executable (on Windows) doesn't have any special functionality anymore, and is just needed to restart MeVisLab. It sets the -singleinstance command line parameter of MeVisLab though, so if you want to re-use a running instance of MeVisLab, you can continue using MeVisLabStarter or set the -singleinstance parameter yourself.
When opening a scripting console for the field of a module (through the context menu), it would not stay on top like other windows.
Fixed a crash on closing the IDE when the cache size in the GUI is updated one last time.
Fixed background color of screenshots of panels that included OpenInventor viewers.
The About dialog now has a link to the license text of MeVisLab.
The CodeTest module in the
TestSupport package got an
optional parameter for its inject
function that allows to ignore output lines matching
a regular expression before doing error detection.
Fixed Show Enclosing Folder context menu entry for wrapped CodeTests.
Python coverage ignores code in a
site-packages directory by default (since
it contains third-party code). Also added the ability to specify
explicit inclusion of directories through the TestCenter config
file ("InclusionExpression").
Images in test results are restricted in the displayed size (but can be expanded).
Avoid temporarily opening a console window on test cleanup (only happened on Windows).
If the TestCenter is running in secure mode on Linux, and a test crashes (with a segmentation fault), the TestCenter will try to give a stack trace (which might include the signal handler functions as top-level entries).
The generation of ThirdPartyInformation (About dialog) entries
and dependency information for Python packages installed with
PythonPip got more robust.
MeVisLab now comes with automatically generated .pyi files
for the scripting wrappers available in MeVisLab. These should
automatically be found by any Python IDE that uses our Python
environment (through sitecustomize.py) and
help with auto-completion and type checking.
If you don't want this, set the environment
variable MLAB_DISABLE_SITECUSTOMIZE to 1.
Fixed a crash on destruction of the
SoViewportRegionWrapper.
Added the option to not create skeletons in
MLGraphWrapper.createEdge.
MLABScriptProcess doesn't inherit
file handles anymore by default.
Slightly changed the behavior of MLAB.setVariable(),
which previously wouldn't change a value that was stored persistently.
The interface of the class returned by
MLABGraphicsScene.addWebView has changed somewhat, because
there is no native support for adding a web viewer to Qt's
QGraphicsScene anymore.
Fixed layout of HyperLabel control
with longer texts.
The Image control re-renders SVG
images to the displayed size now.
Keyboard navigation/selection did not work for a
RadioButtonGroup if it was attached to a field.
Button titles of ToolButtonGroups connected
to enum fields were not translated.
The PythonTextView was buggy with regard
to the syntax highlighting, which could lead to overlapping line
numbers and crashes.
ml::CurveList and ml::CurveData
are now derived from ml::RefCountedBase,
which means that these classes should not be deleted explicitly
by the user, but implicitly through the use of the
CurveListPtr and
CurveDataPtr classes.
This also means that CurveList and CurveData can't be direct
members of another class anymore.
Especially the interface of ml::CurveList
has been adapted accordingly, with explicit methods for adding and
removing of ml::CurveData objects.
(for those users with an ADK or Application Builder license)
When local macros share the same name, only the dependencies of one of these modules would be considered.
Determining DLL dependencies for stand-alone installers on
Windows doesn't require an external tool like
DependencyWalker anymore (and also became a
lot faster).
A lot of third-party libraries have been updated in this release.
See the list of available third-party libraries here.
Note that this is not the complete list of third-party components used in MeVisLab,
for this you should consult the About dialog of MeVisLab, or use the
ThirdPartyInformation module.
Some notable updates:
Qt has been updated to version 6.6.3 (from 5.15).
The PythonQt scripting wrappers for Qt have been re-created.
Python has been updated to version 3.11.9 (from 3.9).
jemalloc isn't used by MeVisLab and not included in the SDK anymore.
MeVisLab now solely uses libjpeg-turbo for the JPEG file format. libjpeg is no longer included in the SDK.
CMake target names of some third-party libraries have changed (mostly upper/lower case).
The Python package asyncqt has been replaced by qasync to fix problems with aiohttp.
ITK has been updated to version 5.3.0, and the module wrappers have been updated, including newly introduced classes.
VTK has been updated to version 9.3.0. Almost all module wrappers have been removed, please use the Python bindings provided by VTK instead. Have a look at the example networks of the remaining bridge modules for how interfacing with MeVisLab modules works.
The Windows version now uses 7-Zip in its installer.
DicomImport:
Do not split image series just because they erroneously have slightly differing StudyDate/StudyTime tags.
Make DicomImport (and other modules) more tolerant against certain errors in the DICOM data.
Do not show corrupt image data for .dcm/.tif pairs.
Correctly report missing image data (.dcm/.tif pairs must
be read with ImageLoad).
We added an example DicomViewer
application module to MeVisLab, which provides basic DICOM image
viewing capabilities in 2D and 3D.
The clear button in the WEMInteract module now clears the drawn
contour.
WEMModify updates the face
normals now. This attribute is, e.g., used by WEMInfo to compute the volume of a
WEM patch.
SignedEuclideanDistanceTransform:
Fixed wrong output for example network if minValue
and maxValue are set to 0.
SoCoordinateSystem rendered
the text shadow in front of the actual text under certain
circumstances.
CSOMerge did handle input
notifications when auto update was set to off.
Most WEM modules that use PVLs (primitive value lists): Introduced checks for correct type (per-node, per-edge, or per-face).
WEMLoad: Introduced a new
field for auto-loading of WEMs.
ConnectedComponentsToImage:
Did set an invalid image extent if no cluster was selected.
WEMVascularSystem: Would
hang indefinitely if the graph was completely outside the
image extent associated with it (which could happen if you
constructed the graph by scripting).
There is also now a field clipping which
determines if the resulting WEM should be clipped to the
associated image extent.
Added new color modes to So3DMarkerRenderer
that use vector length/angle and use a LUT as color input.
WEMLoad now can load
.ply files with one-based indexing (previously it crashed).
ImageStatistics: Fixed
that the variance could get slightly negative due to rounding
errors.
Fixed rare crash in SoCoordinateSystem
if no axis was initialized.
The OutputInspector for images
now allows to step through the user dimension with
Ctrl+Left and
Ctrl+Right.
Fixed: The code generated by the Project Wizard for modules
derived from SoView2DExtension missed an
important dependency.
Module DicomPRSave
saves XMarkerList, StylePalette,
and CSOLists Base objects as and in DICOM files of
Grayscale Softcopy Presentation State IOD.
See also MultiFileVolumeListPROutput.
Module FileEncrypter
encrypts files using a new C++ API
BinaryEncryption, but the
currently implemented encryption method is internal to FME,
so this module is only useful if you implement your own.
Module SoMLMatrixTransform
wraps SoMatrixTransform to
enable direct use of ML and numpy matrices (which are transposed
relative to the matrices used by SoMatrixTransform).
DirectDicomImport resolves
variables (such as $(NETWORK),
$(TMPDIR) etc.) in fields
Import Files and
Import Directories in the
Configuration panel.
Improved robustness of experimental
MultiFileVolumeListPROutput.
LoadYAML and
ReadYAML can now deal with
Python tuples encoded with "!!python/tuple".
Macro module CachedPath and
Python module file_caching now support
pruning of the synchronization target folder, which is enabled
by default.
Removed the unused/unsupported NoCache mode
from the modules ImageCache and
ImageCacheForNetworkLoops.
ThirdPartyLicenseReport:
now reads 'homepage' as alternative to the 'url' key in .mlinfo
files; and some other minor improvements.
The fmeTestSupport Python module now
supports EXPECT_ERRORS().
For the release notes of older MeVisLab releases see this document.
© 2025 MeVis Medical Solutions AG