New Developer Features in GIMIAS 1 6
GIMIAS-1.6.r1 (in progress)
- Main focus: The main focus of this release is for MSV project
- Changelog (MantisBT):
- ENH #0438: Cannot see all available tools in plugin selector
- FIX #0300: Scan and load command line plugins in background
- FIX #0435: Add help for Vessel Centerline tool
- FIX #0417: GIMIAS takes 20 sec. to start in debug mode
- FIX #0434: Cannot delete the first point of a set of landmarks
- ENH #0426: Landmarks are not selected when clicking on the list
- FIX #0420: Image information coordinates are not in mm
- FIX #0414: Wheel mouse is not changing slice for MRI image when pressed once
- ENH #0412: Improve usability of workflow editor
- ENH #0433: Add basic Skull Stripper tool
- FIX #0423: Time information for a DataEntity is not saved
- FIX #0422: Sometimes I get this error: "Trying to set existing property to a property with different type."
- ENH #0421: When a child DataEntity is registered to a father, there's any event triggered
- ENH #0416: Use blTagMap to manage sessions
- ENH #0415: Transfer rendering properties when changing working area
- ENH #0409: Allow cropping surface mesh
- ENH #0407: Add preview image for DataEntity
- ENH #0403: Load session using drag and drop
- ENH #0402: Integrate MSV working area with metadata information
- ENH #0399: Allow adding/editing/removing tags for DataEntity metadata
FIX #0417: GIMIAS takes 20 sec. to start in debug mode
Enabling just the MITK and SceneView plugin, GIMIAS takes 26 seconds to start in Debug mode. It will be interesting to reduce this start-up time for developers that are working on a GIMIAS plugin.
To analyse the start-up, the VS2010 profile tool has been used. Most of the time is taken when initializing OpenGL. In order to reduce this time, one option is to execute the different plugin providers in parallel in a secondary thread and send to the main GUI thread the GUI tasks. Initial tests show that this can reduce the start-up time to 15 seconds (42% of reduction).
The main window will be the responsible to update all the plugin providers. It will delegate the responsibility to the class PluginSelectorWidget. When the providers needs to be updated:
- Adds an observer to each provider, that is derived from the class BaseProcessor and sends it for background execution
- Executes the function OnStartLoading( ) to initialize framework before loading plugins
- The provider will scan the plugins
- When the plugins are going to be loaded, - this task should be executed by the main GUI thread - it will call the function UpdateOuptut( ) for each plugin
- The main GUI thread will receive the information about the plugin to load/unload using a blTagMap and call the function LoadPlugin/UnLoadPlugin for the current provider.
- Executes the function OnStopLoading( ) to initialize framework after loading plugins
The information messages will be sent to the main GUI thread using the UpdateCallback class and the function AddInformationMessage( ).
ENH #0402: Integrate MSV working area with metadata information
MSV working area allows visualization of data objects using tool tips and VTK buttons to navigate. Read more in MSV Plugin.
ENH #0407: Add preview image for DataEntity
The interface class Core::DataEntityPreview is used for managing a preview image of a DataEntity. A concrete implementation is MITKPreview that uses wxImage to store/load/save the preview.
When a DataEntity is created, it searches the FactoryManager for an implementation of DataEntityPreview interface class and creates an instance.
The preview image is loaded/saved when the DataEntity is loaded/saved.
This class is used in MSV Plugin.