This task is for collecting all the noteworthy new features, that should definitely be mentioned in the release notes for MITK (2018-04). We should also note if a feature is API-breaking and therefore needs a migration guide or if a feature should be explained a bit in an extra "New features" section.
Description
Related Objects
- Mentioned In
- T25619: Remaining Todos for MITK v2018.04
- Mentioned Here
- T19760: RT data support via reader service
T19783: Implement RTPlan reader
T25441: Name DataNodes with DICOM data appropriately by using dicom tags
T23751: Introduction of new selection concept
T24196: Singleslot selection widget
T24771: [MITKDoc] Add a concept documentation for the data storage inspectors and the overhaul of the selection concept
T24059: MITK-IGT Release 2018.03
T24561: Upgrade to VTK 8.1
T23034: Make MITK compatible to MSVC 2017 and Qt 5.8/5.9
T23248: Prepare MITK for macOS 10.13 HighSierra support
T23276: Support MSVC 19.11
T23614: GCC 7.2 Compatibility
T23868: Increase minimum supported version of MSVC from 2013 to 2015
T23882: Support Visual Studio 2017 15.5
T23985: [macOS] Make MITK compile and shine again
T24391: Make MITK compatible with Visual Studio 2017 15.6
T23104: Deprecate QmitkPlotWidget
T24522: Deactivate IO Service "MITK DICOM Reader v2 (classic config)"
T24521: Remove old DicomSeriesReader
T19437: Configfile classicreader.xml and mitk::ClassicDICOMSeriesReader produce different results
T23721: Project "Astonishing Angelfish"
Event Timeline
T23721: Project "Astonishing Angelfish"
API changes by new mitk::WeakPointer and more subtle (and hence probably more dangerous) the new property look-up which includes the base data properties as fallback.
Dark theme (provide info how to switch back)
Also provide information for developers on how to use the styling for custom icons. Magic colors and berry::QtStyleManager, e.g.:
m_Controls.remeshPushButton->setIcon(berry::QtStyleManager::ThemeIcon(QStringLiteral(":/Remeshing/RemeshingIcon.svg")));
or
m_Controls.remeshPushButton->setIcon(QmitkStyleManager::ThemeIcon(QStringLiteral(":/Remeshing/RemeshingIcon.svg")));
Third-party toolkit upgrades (Most incisive is probably VTK 8 with its OpenGL2 backend: MITK doesn't run on very old computers anymore, just on old ones. 😄 I had issues on my 2012 notebook with combined Intel/Nvidia GPUs. Had to go into the Nvidia settings and add the Workbench to the applications that needs the NVidia GPU)
Even it is covered by Project Angelfish above: New MITK extension feature (we should really promote this as the new way to go, update tutorials, write a good get started guide and so on...)
Currently I think the dark theme is more like a regression ;). In its current condition I would definelty would not make it default. E.g. sometimes widgets overlap (e.g. big radio buttons) and you cannot read the text properly.
It definitely needs to be fixed for the release. The overall contrast is too low at the moment. But I'm confident that this is something we are able to fix for the upcoming release.
T19437: Configfile classicreader.xml and mitk::ClassicDICOMSeriesReader produce different results is fixed. There is information about breaking changes due to this fix. See T19437#126866 for more information.
T24521: Remove old DicomSeriesReader is done and T24522: Deactivate IO Service "MITK DICOM Reader v2 (classic config)" which is a Breaking change for everyone who explicitly used the classic config (e.g. in a PreferenceReaderListOptionFunctor). For details see task.
Breaking change in mitk::IOUtil:
auto image = mitk::IOUtil::LoadImage("path"); auto surface = mitk::IOUtil::LoadSurface("path"); auto pointSet = mitk::IOUtil::LoadPointSet("path");
auto image = mitk::IOUtil::Load<mitk::Image>("path"); auto surface = mitk::IOUtil::Load<mitk::Surface>("path"); auto pointSet = mitk::IOUtil::Load<mitk::PointSet>("path");
All deprecated methods were removed, including SaveImage(), SaveSurface(), SavePointSet(), which can be simply changed to Save().
There's a new set of Load() methods with reader options / reader options callback as additional parameter. See mitkIOUtil.h for details.
Not sure if this was considered a feature (at least I am not aware of documentation): whitelisting modules changed, whitelisting plugins was added since 2016.11.
In 2016.11, you could provide a CMake list MITK_MODULES_TO_BUILD in the initial CMake cache. Only modules listed would be built.
In 2018.04 this changed to a system where you define the name of a a whitelist file that is searched in one of two directories (internal and external whitelist directory). This mechanism should be documented. Since internally, CMake functions modify the whitelist name to distinguish internal/external lists, there should ideally be an example for external projects (the internal version seems straightforward).
This feature was introduced in MITK 2015.05 already. The CMake functions used for whitelisting are documented in https://github.com/MITK/MITK/blame/master/CMake/mitkFunctionWhitelists.cmake. A kind of user documentation is missing indeed. You already summarized it quite good:
- MITK_WHITELISTS_EXTERNAL_PATH is by default the folder .mitk/Whitelists in your home directory but can be changed to any existing folder
- Every whitelist that is found in the specified folder can be selected in MITK_WHITELIST
- As far as I remember " (external)" is added as suffix to the external lists
- Whitelists should be set on superbuild level for the initial build
An example whitelist is:
set(enabled_modules Core CppMicroServices ) set(enabled_plugins "" )
Introduction of new node selection widgets / data storage inspectors and so forth (see T23751: Introduction of new selection concept and branch T24196).
T24771: [MITKDoc] Add a concept documentation for the data storage inspectors and the overhaul of the selection concept will contain the concept informations
T22228 is a new plugin with a lot of beamforming functionality for photoacoustics and ultrasound
@seitela noticed, that with Qt 5.11.1 we also have MSVC 2017 as minimum required compiler as QtWebEngine in Qt 5.11 is only available for MSVC 2017.
Propertylist has more strict behavior. Only none empty strings are allows as property key. Property list now also implements the PropertyOwner interface.
Introduced with T25441: Name DataNodes with DICOM data appropriately by using dicom tags
MITK_PP_ macros were replaced with their original BOOST_PP_ counterparts. Only mitkPPArgCount.h is left as it doesn't originate from Boost.