[Repository Listing] / [Slicer4] / trunk / Modules
 

Log of /trunk/Modules

Parent Directory Parent Directory View Directory Listing Directory Listing


Sticky Revision:

Revision 26393  Directory Listing
Modified Sun Sep 24 12:04:18 2017 UTC (27 hours, 8 minutes ago) by lassoan
ENH: Added column property editor to tables module

Type and other properties of any existing column and default properties of new columns can be changed using GUI.
This is important for plotting, which requires numeric column types.

Additional improvements:
* changed defaultValue to nullValue to better reflect that the value represents missint/unknown value.
* made reading and conversion of bit and char type columns more robust

Revision 26390  Directory Listing
Modified Fri Sep 22 02:04:42 2017 UTC (3 days, 13 hours ago) by lassoan
ENH: setting automatically a Plot layout from Table Widget

Revision 26380  Directory Listing
Modified Wed Sep 20 17:13:25 2017 UTC (4 days, 21 hours ago) by jcfr
ENH: Integrate VTK plotting to support Interactive manipulation

This commit provides Plotting facilities that include a Plot View
that can be packed in the layout, similar to the Slice Views and 3D Views.

The architecture also includes nodes that represent the data to be displayed
in the plot as well as nodes to represent the display properties of the data
and the plot itself.

In Addition, the PlotView is connected with the Table Module and Views allowing
the plotting of arrays with a simple click.

References:
https://www.slicer.org/wiki/Documentation/Nightly/Developers/Plots
https://www.na-mic.org/wiki/Project_Week_25/Interactive_Manipulation_of_Plots_and_Graphs
https://www.slicer.org/wiki/Developer_Meetings/20170425

Reviewed-by: Andras Lasso <lasso@queensu.ca>
Reviewed-by: Andriy Fedorov <fedorov@bwh.harvard.edu>
Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Reviewed-by: Steve Pieper <pieper@bwh.harvard.edu>

From: Davide Punzo <punzodavide@hotmail.it>

Revision 26378  Directory Listing
Modified Wed Sep 20 07:21:46 2017 UTC (5 days, 7 hours ago) by jcfr
COMP: Fix -Wreorder warning in qSlicerTerminologyNavigatorWidget

This commit fixes the following warning:

/path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx: In constructor ‘qSlicerTerminologyNavigatorWidgetPrivate::qSlicerTerminologyNavigatorWidgetPrivate(qSlicerTerminologyNavigatorWidget&)’:
/path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx:178:8: warning: ‘qSlicerTerminologyNavigatorWidgetPrivate::AnatomicContextComboboxPopulating’ will be initialized after [-Wreorder]
   bool AnatomicContextComboboxPopulating;
        ^
/path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx:171:10: warning:   ‘QColor qSlicerTerminologyNavigatorWidgetPrivate::GeneratedColor’ [-Wreorder]
   QColor GeneratedColor;
          ^
/path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx:182:1: warning:   when initialized here [-Wreorder]
 qSlicerTerminologyNavigatorWidgetPrivate::qSlicerTerminologyNavigatorWidgetPrivate(qSlicerTerminologyNavigatorWidget& object)
 ^

Revision 26377  Directory Listing
Modified Wed Sep 20 07:21:45 2017 UTC (5 days, 7 hours ago) by jcfr
COMP: Fix -Wunused-but-set-variable warnings in qMRMLSubjectHierarchyModel

This commit fixes the following warnings:

/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qMRMLSubjectHierarchyModel.cxx: In member function ‘virtual QMimeData* qMRMLSubjectHierarchyModel::mimeData(const QModelIndexList&) const’:
/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qMRMLSubjectHierarchyModel.cxx:612:15: warning: variable ‘parent’ set but not used [-Wunused-but-set-variable]
   QModelIndex parent = indexes[0].parent();
               ^
/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qMRMLSubjectHierarchyModel.cxx: In member function ‘virtual void qMRMLSubjectHierarchyModel::delayedItemChanged()’:
/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qMRMLSubjectHierarchyModel.cxx:1409:17: warning: variable ‘parentIndex’ set but not used [-Wunused-but-set-variable]
     QModelIndex parentIndex = this->indexFromSubjectHierarchyItem(draggedShItemID).parent();
                 ^

Revision 26376  Directory Listing
Modified Wed Sep 20 07:21:43 2017 UTC (5 days, 7 hours ago) by jcfr
COMP: Fix sign-compare warning in vtkSlicerSegmentationsModuleLogic

This commit fixes the following warning:

/path/to/Slicer/Modules/Loadable/Segmentations/Logic/vtkSlicerSegmentationsModuleLogic.cxx:1865:69: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while (typesInFirstCategory.empty() && firstNonEmptyCategoryIndex < categories.size());
                                                                     ^

Revision 26373  Directory Listing
Modified Sun Sep 17 14:17:23 2017 UTC (8 days ago) by lassoan
BUG: Fixed memory leak

When just started and stopped Slicer, it logged these memory leaks:
Class "vtkMRMLFiducialListNode" has 1 instance still around.
Class "vtkSegmentationConverter" has 1 instance still around.
Class "vtkMRMLColorTableStorageNode" has 24 instances still around.
Class "vtkMRMLAnnotationDisplayNode" has 1 instance still around.
...

The problem was that the Segmentation logic did not release its reference to the Terminologies logic in its destructor.

Revision 26372  Directory Listing
Modified Wed Sep 13 21:43:31 2017 UTC (11 days, 17 hours ago) by lassoan
BUG: Activate picking manager before placing transform editor box widget

Box widget behavior is different with picking manager enabled/disabled. If disabled, then the middle handle can be grabbed to translate the widget.
If enabled, then translation is only possible using shift+click.

It maight be a bug in VTK that the center handle is not accessible when picking manager is enabled.

Revision 26371  Directory Listing
Modified Wed Sep 13 14:13:25 2017 UTC (12 days ago) by pinter
ENH: Map labelmap items to segment terminology when importing

When importing a labelmap to a segmentation, the labels in the labelmap are matched to the 3dSlicerLabel attributes in the selected terminology. Terminology can be selected in the Advanced section in Import/Export section of Segmentations module. If match is made, then the found terminology is assigned to the segment, otherwise the first entry in the terminology is set. If the segment name cannot be found in the labelmap (segment name is searched in the color table to find corresponding label), then the terminology entry is left as is (which may be the default Tissue/Tissue, or what the user manually specified). This occurs if the user imports to a non-empty segmentation.

Revision 26370  Directory Listing
Modified Tue Sep 12 19:21:58 2017 UTC (12 days, 19 hours ago) by pinter
ENH: Restore SH selection after batch processing

Many operations are done in batch processing, including loading of any volume. After batch processing, as atomic events are not invoked, the SH model needs to be rebuilt from the SH node. During this, selection is lost, which can disrupt a workflow. E.g. when a CLI is used in a workflow, the output of which is then processed, the loading of the CLI output is done in batch processing, and the selections in the module or slicelet are reset. By restoring the selection, this issue is prevented.

Also: Expose name filter for SH tree view; Remove unnecessary error message; Simplify selected item query; Allow setting NULL scene to tree view (e.g. to allow manual reset from python)

Revision 26369  Directory Listing
Modified Tue Sep 12 17:33:18 2017 UTC (12 days, 21 hours ago) by lassoan
BUG: Fixed incorrect value ending up in composite view's volume node IDs

By not checking the compared object by contained values, the string 'keep-current' could end up in the volume node IDs (background, foreground, label) stored in vtkMRMLSliceCompositeNode, making it hard to check if a valid volume node in shown in a slice view.

For some reason the string 'NULL' can also end up in these char* members that should only contain valid node ID strings or null pointer, hence the fix in qSlicerSubjectHierarchyVolumesPlugin. The source of the string 'NULL' is still unknown.

Revision 26367  Directory Listing
Modified Sat Sep 9 15:49:28 2017 UTC (2 weeks, 1 day ago) by pinter
ENH: Overhaul of Segment Editor button row

Renamed Create surface button to Show 3D, and added convenience action to set smoothing factor

Added button that switches to Segmentations module. Added convenience action to jump to import/export section

Fixes https://issues.slicer.org/view.php?id=4415
Fixes https://github.com/QIICR/QuantitativeReporting/issues/176

Revision 26365  Directory Listing
Modified Fri Sep 8 20:48:19 2017 UTC (2 weeks, 2 days ago) by jcfr
COMP: MRML: Fix "inconsistent-missing-override" C++11 warnings

Ensure that overridden functions are explicitly validated
when compiling with C++11

This patch suppresses 100's of warnings:
warning: 'SomeMemberFunctionOfDerivedClass' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 26361  Directory Listing
Modified Fri Sep 8 19:49:28 2017 UTC (2 weeks, 2 days ago) by pinter
BUG: Fixed subject hierarchy tree view and combobox filter bug

If the scene item was rejected initially due to a filter, it caused (for unknown reason) the scene item not to be examined later when new items arrived, and so the other items that fulfilled the filters were not shown either. Worth noting that if this did not happen (and the scene was not rejected), then the filters worked properly. By making sure the scene is always accepted, new data appears as expected.

Fixes #4428
https://issues.slicer.org/view.php?id=4428

Revision 26358  Directory Listing
Modified Fri Sep 8 11:35:33 2017 UTC (2 weeks, 3 days ago) by lassoan
BUG: Added pointer check to prevent crash in qMRMLSegmentsTableView

Crash occurred during py_nomainwindow_SegmentationWidgetsTest1
http://slicer.cdash.org/testDetails.php?test=8279970&build=1092745

Revision 26357  Directory Listing
Modified Thu Sep 7 22:29:15 2017 UTC (2 weeks, 3 days ago) by pinter
PERF: Speed up segmentation show/hide

When showing/hiding a segmentation even in the 3D view, the slice intersections were always computed. Now they are only computed if the segment polydata changed since last slice intersection computation.

Revision 26355  Directory Listing
Modified Wed Sep 6 22:42:04 2017 UTC (2 weeks, 4 days ago) by pinter
ENH: Show generated color in terminology navigator if selected entry contains no recommended color

This is an update to the previous implementation that kept increasing the index of the generated color (from generic anatomy color table). That solution was not ideal, as the generated color was only applied once the terminology entry was selected, which means that when the user clicked on a terminology type with no recommended color set, then they saw the invalid gray in the color box of the terminology navigator, which was changed to the generated color on acceptance. This was confusing.

Now the generated color appears in the terminology navigator widget as well, replacing the invalid gray.
The way the color is generated also changed: now the generated color is always the same as what the empty segment initially had (the index of the segment in the generic anatomy color table plus one so that background is ignored).

Revision 26352  Directory Listing
Modified Wed Sep 6 03:36:27 2017 UTC (2 weeks, 5 days ago) by lassoan
ENH: Added segment editor shortcut (i) for toggle masking by intensity range

Revision 26345  Directory Listing
Modified Tue Sep 5 14:29:51 2017 UTC (2 weeks, 6 days ago) by jcfr
COMP: vtkSlicerTablesLogic: Fix uninitialized variable warning

Revision 26344  Directory Listing
Modified Tue Sep 5 14:29:50 2017 UTC (2 weeks, 6 days ago) by jcfr
COMP: Fix unused variable warnings

Revision 26332  Directory Listing
Modified Mon Sep 4 05:16:23 2017 UTC (3 weeks ago) by jcfr
BUG: StandaloneEditorWidgetTest: Fix memory leak

This commit updates Editor and EditorWidget class to extend from
ScriptedLoadableModule and ScriptedLoadableModuleWidget.

It then implements the "cleanup" function so it resets the scene associated
with qMRMLWidget instantiated in the constructor.

This commit fixes the following leak:

```
440: vtkDebugLeaks has detected LEAKS!
440: Class "vtkMRMLFiducialListNode" has 1 instance still around.
440: Class "vtkSegmentationConverter" has 1 instance still around.
440: Class "vtkMRMLColorTableStorageNode" has 22 instances still around.
440: Class "vtkMRMLAnnotationDisplayNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationSnapshotStorageNode" has 1 instance still around.
440: Class "vtkMRMLIGTLTrackingDataQueryNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationControlPointsNode" has 1 instance still around.
440: Class "9vtkBufferIxE" has 7 instances still around.
440: Class "vtkMRMLLabelMapVolumeDisplayNode" has 1 instance still around.
440: Class "vtkMRMLTableStorageNode" has 1 instance still around.
440: Class "vtkCellData" has 10 instances still around.
440: Class "vtkOrientedGridTransform" has 1 instance still around.
440: Class "vtkMRMLEMSSegmenterNode" has 1 instance still around.
440: Class "vtkMRMLEMSTemplateNode" has 1 instance still around.
440: Class "vtkTransformPolyDataFilter" has 1 instance still around.
440: Class "vtkMRMLCropVolumeParametersNode" has 1 instance still around.
440: Class "vtkMRMLEMSNode" has 1 instance still around.
440: Class "vtkCollection" has 6 instances still around.
440: Class "vtkMRMLFreeSurferModelStorageNode" has 1 instance still around.
440: Class "vtkMRMLROIListNode" has 1 instance still around.
440: Class "vtkInformationVector" has 394 instances still around.
440: Class "vtkMRMLDiffusionTensorDisplayPropertiesNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationLinesNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationSnapshotNode" has 1 instance still around.
440: Class "vtkMRMLIGTLSensorNode" has 1 instance still around.
440: Class "vtkPerspectiveTransform" has 4 instances still around.
440: Class "vtkMRMLEMSVolumeCollectionNode" has 1 instance still around.
440: Class "vtkMRMLScalarVolumeNode" has 1 instance still around.
440: Class "vtkMRMLColorNode" has 1 instance still around.
440: Class "vtkDataSetAttributes" has 1 instance still around.
440: Class "vtkMRMLMultiVolumeStorageNode" has 1 instance still around.
440: Class "vtkPointData" has 10 instances still around.
440: Class "vtkCompositeDataPipeline" has 69 instances still around.
440: Class "vtkMRMLDiffusionTensorVolumeNode" has 1 instance still around.
440: Class "vtkMatrix3x3" has 3 instances still around.
440: Class "vtkObservation" has 68 instances still around.
440: Class "vtkTrivialProducer" has 4 instances still around.
440: Class "vtkMRMLTableViewNode" has 1 instance still around.
440: Class "vtkMRMLMultiVolumeDisplayNode" has 1 instance still around.
440: Class "vtkMatrix4x4" has 82 instances still around.
440: Class "vtkMRMLLinearTransformNode" has 4 instances still around.
440: Class "vtkMRMLSegmentationStorageNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationTextNode" has 1 instance still around.
440: Class "vtkPassThrough" has 9 instances still around.
440: Class "vtkImageMapToColors" has 6 instances still around.
440: Class "vtkMRMLNodeReference" has 6 instances still around.
440: Class "vtkMRMLEMSTreeNode" has 1 instance still around.
440: Class "vtkSimpleTransform" has 14 instances still around.
440: Class "vtkMRMLFreeSurferModelOverlayStorageNode" has 1 instance still around.
440: Class "vtkMRMLSegmentationDisplayNode" has 1 instance still around.
440: Class "vtkImageShiftScale" has 2 instances still around.
440: Class "vtkColorTransferFunction" has 2 instances still around.
440: Class "vtkMRMLTransformStorageNode" has 1 instance still around.
440: Class "vtkPlaneSource" has 3 instances still around.
440: Class "vtkObserverManager" has 173 instances still around.
440: Class "vtkIntArray" has 117 instances still around.
440: Class "vtkPoints" has 10 instances still around.
440: Class "vtkGridTransformConnectionHolder" has 1 instance still around.
440: Class "vtkInformation" has 862 instances still around.
440: Class "vtkMRMLLabelMapVolumeNode" has 1 instance still around.
440: Class "vtkMRMLDiffusionTensorVolumeDisplayNode" has 1 instance still around.
440: Class "vtkMRMLUnitNode" has 6 instances still around.
440: Class "vtkMRMLVolumePropertyStorageNode" has 1 instance still around.
440: Class "vtkMRMLProceduralColorStorageNode" has 1 instance still around.
440: Class "vtkMRMLTransformDisplayNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationFiducialsStorageNode" has 1 instance still around.
440: Class "vtkCacheManager" has 1 instance still around.
440: Class "vtkMRMLSliceCompositeNode" has 4 instances still around.
440: Class "vtkMRMLVectorVolumeDisplayNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationRulerNode" has 1 instance still around.
440: Class "vtkDataIOManager" has 1 instance still around.
440: Class "vtkMRMLTableNode" has 1 instance still around.
440: Class "vtkMultiThreader" has 52 instances still around.
440: Class "vtkMRMLSnapshotClipNode" has 1 instance still around.
440: Class "vtkTable" has 1 instance still around.
440: Class "vtkMRMLMarkupsNode" has 1 instance still around.
440: Class "vtkMRMLMarkupsFiducialStorageNode" has 1 instance still around.
440: Class "vtkMRMLEMSAtlasNode" has 1 instance still around.
440: Class "vtkMRMLMultiVolumeNode" has 1 instance still around.
440: Class "vtkMRMLSelectionNode" has 2 instances still around.
440: Class "vtkInformationIntegerPointerValue" has 2 instances still around.
440: Class "vtkMRMLGPURayCastVolumeRenderingDisplayNode" has 1 instance still around.
440: Class "vtkEventBroker" has 1 instance still around.
440: Class "vtkLookupTable" has 2 instances still around.
440: Class "vtkPolyData" has 8 instances still around.
440: Class "vtkMRMLEMSTreeParametersParentNode" has 1 instance still around.
440: Class "vtkMRMLCPURayCastVolumeRenderingDisplayNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationFiducialNode" has 1 instance still around.
440: Class "vtkMRMLLabelMetaListNode" has 1 instance still around.
440: Class "vtkMRMLClipModelsNode" has 2 instances still around.
440: Class "vtkMRMLROINode" has 1 instance still around.
440: Class "vtkHTTPHandler" has 1 instance still around.
440: Class "vtkMRMLSliceNode" has 5 instances still around.
440: Class "vtkMRMLDoubleArrayNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationRulerStorageNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationBidimensionalNode" has 1 instance still around.
440: Class "vtkMRMLMarkupsStorageNode" has 1 instance still around.
440: Class "vtkMRMLTextNode" has 1 instance still around.
440: Class "vtkPiecewiseFunction" has 2 instances still around.
440: Class "vtkImageThreshold" has 5 instances still around.
440: Class "vtkMRMLProceduralColorNode" has 1 instance still around.
440: Class "vtkXMLDataElement" has 23 instances still around.
440: Class "vtkMRMLAnnotationTextDisplayNode" has 1 instance still around.
440: Class "vtkMRMLNRRDStorageNode" has 1 instance still around.
440: Class "vtkOpenGLCamera" has 2 instances still around.
440: Class "vtkMRMLHierarchyNode" has 1 instance still around.
440: Class "vtkSegmentation" has 1 instance still around.
440: Class "vtkMRMLDiffusionWeightedVolumeDisplayNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationNode" has 1 instance still around.
440: Class "vtkMRMLMarkupsDisplayNode" has 1 instance still around.
440: Class "vtkMRMLIGTLStatusNode" has 1 instance still around.
440: Class "vtkMRMLVolumeRenderingScenarioNode" has 1 instance still around.
440: Class "vtkMRMLFiducialListStorageNode" has 1 instance still around.
440: Class "vtkMRMLImageMetaListNode" has 1 instance still around.
440: Class "vtkIdList" has 2 instances still around.
440: Class "vtkMRMLDoubleArrayStorageNode" has 1 instance still around.
440: Class "vtkDoubleArray" has 7 instances still around.
440: Class "vtkAlgorithmOutput" has 57 instances still around.
440: Class "vtkMRMLCrosshairNode" has 2 instances still around.
440: Class "vtkImageCast" has 1 instance still around.
440: Class "vtkMRMLColorTableNode" has 2 instances still around.
440: Class "vtkMRMLSubjectHierarchyNode" has 2 instances still around.
440: Class "vtkMRMLAnnotationROINode" has 1 instance still around.
440: Class "vtkMRMLEMSGlobalParametersNode" has 1 instance still around.
440: Class "vtkMutexLock" has 5 instances still around.
440: Class "vtkMRMLModelNode" has 4 instances still around.
440: Class "vtkInformationIntegerValue" has 972 instances still around.
440: Class "vtkDiffusionTensorGlyph" has 2 instances still around.
440: Class "vtkMRMLGridTransformNode" has 1 instance still around.
440: Class "vtkMRMLChartNode" has 1 instance still around.
440: Class "vtkMRMLAnnotationHierarchyNode" has 1 instance still around.
440: Class "vtkMRMLIGTLTrackingDataBundleNode" has 1 instance still around.
440: Class "vtkCellArray" has 7 instances still around.
440: Class "vtkTagTable" has 43 instances still around.
440: Class "vtkDiffusionTensorMathematics" has 2 instances still around.
440: Class "vtkImageRGBToHSI" has 1 instance still around.
440: Class "vtkMRMLEMSTreeParametersNode" has 1 instance still around.
440: Class "vtkVertex" has 1 instance still around.
440: Class "vtkMRMLSegmentationNode" has 1 instance still around.
440: Class "vtkMRMLDiffusionWeightedVolumeNode" has 1 instance still around.
440: Class "vtkMRMLDisplayableHierarchyNode" has 1 instance still around.
440: Class "vtkMRMLEMSTargetNode" has 1 instance still around.
440: Class "vtkMRMLScriptedModuleNode" has 3 instances still around.
440: Class "vtkImageData" has 2 instances still around.
440: Class "vtkMRMLAnnotationLineDisplayNode" has 1 instance still around.
440: Class "vtkMRMLIGTLConnectorNode" has 1 instance still around.
440: Class "vtkFloatArray" has 20 instances still around.
440: Class "vtkImageExtractComponents" has 13 instances still around.
440: Class "vtkMRMLScalarVolumeDisplayNode" has 1 instance still around.
440: Class "vtkMRMLVectorVolumeNode" has 1 instance still around.
440: Class "vtkMRMLHierarchyStorageNode" has 1 instance still around.
440: Class "vtkInformationStringValue" has 8 instances still around.
440: Class "vtkVolumeProperty" has 1 instance still around.
440: Class "vtkStringArray" has 113 instances still around.
440: Class "vtkImageMapToWindowLevelColors" has 5 instances still around.
440: Class "vtkInformationExecutivePortVectorValue" has 51 instances still around.
440: Class "vtkMRMLTransformNode" has 1 instance still around.
440: Class "vtkMRMLCommandLineModuleNode" has 1 instance still around.
440: Class "vtkIdTypeArray" has 7 instances still around.
440: Class "vtkTransform" has 11 instances still around.
440: Class "vtkMRMLAnnotationControlPointsStorageNode" has 1 instance still around.
440: Class "vtkMRMLModelStorageNode" has 1 instance still around.
440: Class "vtkMRMLChartViewNode" has 1 instance still around.
440: Class "vtkMRMLSegmentEditorNode" has 1 instance still around.
440: Class "vtkImageMathematics" has 1 instance still around.
440: Class "vtkMRMLModelHierarchyNode" has 1 instance still around.
440: Class "vtkVoxel" has 1 instance still around.
440: Class "vtkMRMLModelDisplayNode" has 4 instances still around.
440: Class "vtkFieldData" has 13 instances still around.
440: Class "vtkOrientedBSplineTransform" has 1 instance still around.
440: Class "vtkMRMLBSplineTransformNode" has 1 instance still around.
440: Class "vtkMRMLEMSTreeParametersLeafNode" has 1 instance still around.
440: Class "vtkMRMLInteractionNode" has 2 instances still around.
440: Class "vtkMRMLAnnotationPointDisplayNode" has 1 instance still around.
440: Class "vtkAssignAttribute" has 9 instances still around.
440: Class "vtkVariantArray" has 1 instance still around.
440: Class "vtkSubjectHierarchyItem" has 4 instances still around.
440: Class "vtkMRMLEMSWorkingDataNode" has 1 instance still around.
440: Class "vtkLineSource" has 1 instance still around.
440: Class "vtkMRMLCameraNode" has 2 instances still around.
440: Class "vtkMRMLVolumeArchetypeStorageNode" has 1 instance still around.
440: Class "vtkSphereSource" has 1 instance still around.
440: Class "vtkUnsignedCharArray" has 2 instances still around.
440: Class "vtkMRMLLayoutNode" has 2 instances still around.
440: Class "vtkStreamingDemandDrivenPipeline" has 4 instances still around.
440: Class "vtkMRMLAnnotationLinesStorageNode" has 1 instance still around.
440: Class "vtkMRMLMarkupsFiducialNode" has 1 instance still around.
440: Class "vtkMRMLVolumePropertyNode" has 1 instance still around.
440: Class "vtkImageStencil" has 5 instances still around.
440: Class "vtkMRMLDiffusionTensorVolumeSliceDisplayNode" has 1 instance still around.
440: Class "vtkMRMLViewNode" has 3 instances still around.
440: Class "vtkBitArray" has 6 instances still around.
440: Class "vtkImageAppendComponents" has 5 instances still around.
440: Class "vtkBSplineTransformConnectionHolder" has 1 instance still around.
440: Class "9vtkBufferIfE" has 20 instances still around.
440: Class "vtkTimerLog" has 1 instance still around.
440: Class "vtkUnsignedLongArray" has 23 instances still around.
440: Class "vtkThreshold" has 9 instances still around.
440: Class "9vtkBufferIdE" has 7 instances still around.
440: Class "vtkMRMLScene" has 1 instance still around.
440: Class "vtkMRMLAnnotationStorageNode" has 1 instance still around.
440: Class "vtkCommand or subclass" has 441 instances still around.
440: Class "9vtkBufferIiE" has 117 instances still around.
440: Class "9vtkBufferIhE" has 2 instances still around.
440: Class "9vtkBufferImE" has 23 instances still around.
440: Class "vtkImageLogic" has 5 instances still around.
440: Class "vtkInformationExecutivePortValue" has 56 instances still around.
440: Class "vtkMRMLSceneViewNode" has 1 instance still around.
440: Class "vtkMRMLSceneViewStorageNode" has 1 instance still around.
440:
1/1 Test #440: py_StandaloneEditorWidgetTest ....***Failed    3.36 se
```

Revision 26325  Directory Listing
Modified Wed Aug 30 20:22:54 2017 UTC (3 weeks, 4 days ago) by pinter
ENH: Added option to disable DICOM reference check

- Added checkbox in the DICOM references dialog to not check for references again. Selection is saved regardless of pressed button
- Added generic options group in Application Settings / DICOM where this setting can be changed
- Added optional constructor argument to DICOMLoadable for easy conversion from qSlicerDICOMLoadable (useful for debugging when the otherwise deprecated python DICOMLoadable class is used internally)

Integrating https://github.com/Slicer/Slicer/pull/767

Revision 26324  Directory Listing
Modified Wed Aug 30 19:54:25 2017 UTC (3 weeks, 4 days ago) by pinter
PERF: Added checks to subject hierarchy widgets to prevent unnecessary operations

Revision 26322  Directory Listing
Modified Wed Aug 30 18:44:51 2017 UTC (3 weeks, 4 days ago) by pinter
ENH: Added convenience function in vtkSegmentation to get segment by name

A few stylistic changes were done as well: typos, copy-paste mistakes, indentation consistency

Revision 26321  Directory Listing
Modified Wed Aug 30 17:33:46 2017 UTC (3 weeks, 4 days ago) by lassoan
BUG: Fixed SliceAnnotations cache update

Fix of regression introduced a few days ago.

Revision 26311  Directory Listing
Modified Mon Aug 28 18:46:27 2017 UTC (3 weeks, 6 days ago) by lassoan
ENH: Improved slice browsing speed when slice annotations shown

Slicer browsing speed of DICOM imported data was really slow (especially when slices were moved by shift+mouse move) when slice annotations was shown.
The problem was that each time the mouse was moved, all slice view nodes were updated, which triggered corner annotation update, which included reading 10+ DICOM tags from the tag cache.

Solution:
* Cache most recently used volume's tag collection.
* If slice annotations are disabled then DICOM information is not retrieved.

Also fixed inconsistencies in the user interface (slice views were not updated after annotations were disabled; on startup, if annotations were disabled, the annotation options in the module widget were not disabled).

Revision 26309  Directory Listing
Modified Sat Aug 26 18:23:10 2017 UTC (4 weeks, 1 day ago) by pinter
ENH: Use generated color if selected terminology entry contains no recommended color

There were two options to do this:
1. Only increase counter when segment is added: change the terminology of not the last segment to one with no recommended color, then the segment's color will be the same as the last one
2. Increase counter on every generation: if the user changes terminology of the same segment multiple times to one with no recommended color, then the generated color will be different each time
-> The second has been implemented, as it seems to cause the smaller problem.

Revision 26308  Directory Listing
Modified Sat Aug 26 13:41:40 2017 UTC (4 weeks, 2 days ago) by lassoan
BUG: check for uninitialized DICOM db location

DatabaseDirectory setting is not available on first start of Slicer. As
described in https://issues.slicer.org/view.php?id=4424, this can lead to the
default location be non-writeable, without user being notified.

Based on pull request of Andrey Fedorov (https://github.com/Slicer/Slicer/pull/782/files)

Revision 26306  Directory Listing
Modified Fri Aug 25 21:39:12 2017 UTC (4 weeks, 2 days ago) by pinter
BUG: Fix get/set current item(s) in SH tree view and combobox

Fixes https://issues.slicer.org/view.php?id=4422

Revision 26303  Directory Listing
Modified Thu Aug 24 20:33:15 2017 UTC (4 weeks, 3 days ago) by pinter
COMP: Fix build error in segmentations module widget

Revision 26299  Directory Listing
Modified Thu Aug 24 14:06:09 2017 UTC (4 weeks, 4 days ago) by pinter
ENH: Repeat terminology of last segment when new segment is added

Convenience feature to facilitate easier selection of terminology from the same context (and perhaps category) for subsequent segments, for example in this use case:
"1. Create segmentation in Segment editor 2. Add segment 3. open terminology popup, import custom JSON files for category/type and anatomic location, assign category/type from the newly loaded terminology 4. add another segment, open terminology popup - the selected terminology is still the default one, not the one I selected for the previous segment"

Revision 26298  Directory Listing
Modified Tue Aug 22 19:22:59 2017 UTC (4 weeks, 5 days ago) by pinter
BUG: Propagate current item changed signal in SH combobox

Related to discussion https://discourse.slicer.org/t/qmrmlsubjecthierarchycombobox-usage/763

Revision 26297  Directory Listing
Modified Tue Aug 22 03:36:00 2017 UTC (4 weeks, 6 days ago) by lassoan
STYLE: Fixed typo in comment about segment editor shortcut

Contributed by https://github.com/moselhy

Revision 26294  Directory Listing
Modified Mon Aug 21 15:33:02 2017 UTC (4 weeks, 6 days ago) by jcfr
BUG: SegmentStatistics: Fix typo

From: Christian Herz <christianherz1985@googlemail.com>

Revision 26293  Directory Listing
Modified Fri Aug 18 23:29:22 2017 UTC (5 weeks, 2 days ago) by jcfr
ENH: SegmentStatistics: Add support for plugins

This commit updates the module adding support for custom
statistics computation deriving from "SegmentStatisticsPluginBase".

Features:

* provide DICOM related information for measurements as required for
  Quantiative Reporting and DICOM SR export.
* support configuration via parameter node.
* store measurement meta information together with measurement result
  to avoid data inconsistencies

The following 3 plugins are introduced:

* ClosedSurfaceSegmentStatisticsPlugin
* LabelmapSegmentStatisticsPlugin
* ScalarVolumeSegmentStatisticsPlugin

See https://github.com/QIICR/QuantitativeReporting/issues/168

Key contributors:

@chribaue .................... : Plugin mechanism, parameter node, and user interface
@che85 ....................... : Integration with Quantitative Reporting module and testing of use cases
@fedorov ..................... : DICOM codes
@chribaue @lassoan @fedorov .. : Concept development

Reviewed-by: Andras Lasso <lasso@queensu.ca>

From: Christian Bauer <christian-bauer@uiowa.edu>

Revision 26292  Directory Listing
Modified Fri Aug 18 12:21:23 2017 UTC (5 weeks, 3 days ago) by lassoan
ENH: Made fill value configurable in Crop volume module

In CT volumes background (air) has value of -1000, so the default 0 value was too bright.

Revision 26288  Directory Listing
Modified Wed Aug 16 22:51:31 2017 UTC (5 weeks, 4 days ago) by jcfr
BUG: Fix ResampleDTIVolumeBSplineInterpolationTest with VTK8

This commit updates the IntensityTolerance  from 0 to 1e-10 to allow the
test to pass when Slicer is built against VTK8/OpenGL2.

It also updates the tolerance of "BSplineWSInterpolationTest" and
"2RigidTransformsLinearTest" from 1 to 1e-10 which was improperly set
to 1 in r15843 (ENH: Changed tolerance for ITKv4.)

Suggested-by: Max Smolens <max.smolens@kitware.com>

Revision 26281  Directory Listing
Modified Wed Aug 16 14:15:51 2017 UTC (5 weeks, 5 days ago) by jcfr
BUG: DICOM: Ensure precache tags are configured with or without mainwindow

Revision 26280  Directory Listing
Modified Wed Aug 16 14:15:49 2017 UTC (5 weeks, 5 days ago) by jcfr
ENH: SlicerApplication: Introduce "startupCompleted()" signal

This signal is emitted when the startup phase has been completed.

Startup is complete when all the modules have been
initialized and the main window is shown to the user.

Note: If the application is started without the mainwindow,
the signal is emitted after the modules are initialized.

Test checking that both cases work as expected is also added.

Suggested-by: Andras Lasso <lasso@queensu.ca>

Revision 26279  Directory Listing
Modified Wed Aug 16 14:15:45 2017 UTC (5 weeks, 5 days ago) by jcfr
BUG: Fix module updating mainwindow at load time when using Qt5

With Qt5, relying on "Qtimer::singleShow" with a time of 0ms is not
sufficient anymore to ensure the associated slot is called after the
main window is shown.

The following errors were reported at startup time:

```
Failed to obtain reference to 'FileMenu'
Failed to obtain reference to 'qSlicerAppMainWindow'
No Data Probe frame - cannot create DataProbe
Failed to obtain reference to 'qSlicerAppMainWindow'
Failed to obtain reference to 'FileMenu'
```

To ensure module can update the main window once it is shown, this
commit introduces the signal "qSlicerApplication::mainWindowShown()" that
can be connected when a scripted or loadable module is initialized.

Once the main window is shown, the signal "mainWindowShown()" ends up being
triggered.

Revision 26277  Directory Listing
Modified Wed Aug 16 11:11:51 2017 UTC (5 weeks, 5 days ago) by jcfr
STYLE: VolumeRendering module: Remove unused and invalid image

Revision 26272  Directory Listing
Modified Mon Aug 14 22:21:04 2017 UTC (5 weeks, 6 days ago) by jcfr
BUG: Update DICOMWidget to fix regression breaking DICOM tests using Qt4

This commit fixes a regression introduced in r26253 (COMP: Update DICOM
module to work with Qt5 API) and ensures the DICOMWidget can work with
both Qt4 and Qt5.

Tests fixed by this commit are the following:

* py_DICOMReaders
* py_nomainwindow_qSlicerDICOMModuleGenericTest
* py_JRC2013Vis
* py_SubjectHierarchyGenericSelfTest
* py_RSNAVisTutorial

Revision 26270  Directory Listing
Modified Mon Aug 14 15:30:26 2017 UTC (5 weeks, 6 days ago) by jcfr
STYLE: vtkPichonFastMarching: Remove dead code, update order of includes

Revision 26269  Directory Listing
Modified Mon Aug 14 15:30:25 2017 UTC (5 weeks, 6 days ago) by jcfr
COMP: vtkPichonFastMarching: Fix undeclared identifier 'finite' build error

This commit fixes a build issue reported on MacOSX following the explicit
setting of 98 c++ standard in r26266 (ENH: Support configuring with Qt 4
or 5, auto select VTK version and backend)

Error:

```
/Users/kitware/Dashboards/Nightly/Slicer-0/Modules/Scripted/EditorLib/Logic/vtkPichonFastMarching.cxx:73:7: error: use of undeclared identifier 'finite'
  if(!finite(s))
      ^
/Users/kitware/Dashboards/Nightly/Slicer-0/Modules/Scripted/EditorLib/Logic/vtkPichonFastMarching.cxx:83:28: error: use of undeclared identifier 'finite'
  if( (s<1.0/(INF/1e6)) || finite(s)==0 )
                           ^
```

Revision 26265  Directory Listing
Modified Mon Aug 14 02:16:23 2017 UTC (6 weeks ago) by jcfr
COMP: Fix QStyleOptionFrameV[2-4] deprecation warnings with Qt5

Fix warnings similar to the following when building with Qt5:

    Base/QTGUI/qSlicerStyle.cxx:149:61: warning: 'QStyleOptionFrameV2' is deprecated [-Wdeprecated-declarations]

From: Max Smolens <max.smolens@kitware.com>

Revision 26260  Directory Listing
Modified Mon Aug 14 02:16:07 2017 UTC (6 weeks ago) by jcfr
ENH: Set default QSurfaceFormat for QVTKOpenGLWidget

Set default QSurfaceFormat for QVTKOpenGLWidget so that QVTKOpenGLWidget
receives the proper OpenGL core profile context.

From QOpenGLWidget documentation (http://doc.qt.io/qt-5/qopenglwidget.html):

    Note: Calling QSurfaceFormat::setDefaultFormat() before constructing
    the QApplication instance is mandatory on some platforms (for
    example, macOS) when an OpenGL core profile context is requested.
    This is to ensure that resource sharing between contexts stays
    functional as all internal contexts are created using the correct
    version and profile.

Client code uses QVTKOpenGLWidget when SlICer_VTK_USE_QVTKOPENGLWIDGET
is defined in vtkSlicerConfigure.h.

Multisampling is disabled to support volume rendering and other VTK
functionality that reads from the framebuffer. See
https://gitlab.kitware.com/vtk/vtk/issues/1709.

From: Max Smolens <max.smolens@kitware.com>

Revision 26257  Directory Listing
Modified Mon Aug 14 02:15:35 2017 UTC (6 weeks ago) by jcfr
ENH: Fix DICOMScalarVolumePlugin error with Qt5

Fix the following error loading DICOMScalarVolumePlugin:

    ValueError: Could not find matching overload for given arguments:
    ('DICOM/ScalarVolume/ReaderApproach', QComboBox(0x28aa89eee20) , 'currentIndex', u'2currentIndexChanged(int)')

From: Max Smolens <max.smolens@kitware.com>

Revision 26255  Directory Listing
Modified Mon Aug 14 02:15:31 2017 UTC (6 weeks ago) by jcfr
BUG: Fix deprecated use of QPixmap::grabWidget

Co-authored-by: Max Smolens <max.smolens@kitware.com>

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 26253  Directory Listing
Modified Mon Aug 14 02:15:19 2017 UTC (6 weeks ago) by jcfr
COMP: Update DICOM module to work with Qt5 API

- use setSingleShot method (singleShot is a read-only method)

- use more specifice signal signature with enum

- update dicom browser for Qt5 no keyword C++ constructor from python
  and avoids this runtime error:

```
  File "/home/pieper/slicer4/latest/Slicer-qt5-superbuild/Slicer-build/lib/Slicer-4.7/qt-scripted-modules/DICOMLib/DICOMWidgets.py", line 964, in __init__
    super(DICOMPluginSelector, self).__init__(parent, width=width, height=height)
ValueError: Calling C++ functions with Python keywords is not supported! Function: QWidget(QWidget parent, Qt::WindowFlags f) Keywords: {'width': 50, 'height': 100}
```

From: Steve Pieper <pieper@isomics.com>

Revision 26251  Directory Listing
Modified Mon Aug 14 02:07:21 2017 UTC (6 weeks ago) by jcfr
ENH: Add preliminary support for Qt5

Support configuration using either Qt4 or Qt5

Based on preliminary work from Steve Pieper <pieper@bwh.harvard.edu>

* vtkSlicerConfigure: Introduced Slicer_HAVE_QT5 and Slicer_HAVE_WEBKIT_SUPPORT.
  This was needed to workaround limitation of "moc" compiler preventing it
  from expanding macro like "QT_VERSION_CHECK.

* Explicitly set QT_PLUGINS_DIR and QT_BINARY_DIR variables when using Qt5

* Update extension build system to propagate Qt version

Tested with Qt 5.7 and Qt 5.9 on Ubuntu

Remaining tasks:
* Port extension manager
* Update install/packaging rules to support Qt5
* SlicerStyle (based on CommonStyle) is disabled (see Main.cxx). Application crashes on Linux.
* Fix runtime errors:
 * libpng warning: iCCP: known incorrect sRGB profile
 * QPixmap::grabWidget is deprecated, use QWidget::grab() instead

Co-authored-by: Hina Shah <hina.shah@kitware.com>
Co-authored-by: Max Smolens <max.smolens@kitware.com>

COMP adding qt5 variables for extension testing

COMP Adding Qt5 build and plugin cmake variables

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 26249  Directory Listing
Modified Mon Aug 14 02:06:31 2017 UTC (6 weeks ago) by jcfr
COMP: Update usage of method deprecated in VTK8.1

VTK8.1 deprecated vtkWindowToImageFilter::SetMagnification(). Replace
calls to that method with vtkWindowToImageFilter::SetScale().

From: Max Smolens <max.smolens@kitware.com>

Revision 26248  Directory Listing
Modified Mon Aug 14 02:06:21 2017 UTC (6 weeks ago) by jcfr
COMP: Fix inconsistent-missing-override warnings

This commit adds the VTK_OVERRIDE macros to fix the warnings.

From: Hina Shah <hina.shah@kitware.com>

Revision 26246  Directory Listing
Modified Mon Aug 14 02:05:15 2017 UTC (6 weeks ago) by jcfr
ENH: Call InitializeObjectBase() in New() methods

In VTK8 it's necessary for New() methods to call InitializeObjectBase() on the
new object for proper tracking with vtkDebugLeaks. The standard macros
(vtkStandardNewMacro, vtkObjectFactoryNewMacro) handle this. For those classes
that don't use the macros, add calls to InitializeObjectBase().

Continue to support earlier versions of VTK by wrapping calls to
InitializeObjectBase() in checks for the preprocessor define
VTK_HAS_INITIALIZE_OBJECT_BASE.

It's possible that many of these implementations could be simplified by using
the standard macros.

See also:
- https://github.com/Kitware/VTK/commit/e5c793d
- http://public.kitware.com/pipermail/vtk-developers/2016-September/034332.html

From: Max Smolens <max.smolens@kitware.com>

Revision 26243  Directory Listing
Modified Sun Aug 13 00:10:41 2017 UTC (6 weeks, 1 day ago) by lassoan
BUG: Fixed display of cell attributes

Attribute location was not updated in the MRML node when it was changed in the GUI.
Attribute location (point or cell) was not saved in the scene file.
Attribute scalar range was not computed correctly for cell arrays.

Revision 26239  Directory Listing
Modified Fri Aug 11 16:54:46 2017 UTC (6 weeks, 2 days ago) by jcfr
BUG: Fix reading DeveloperMode setting

Similar to the approach in Slicer/Slicer@fba6424, make reading the DeveloperMode
setting more robust. The setting lookup now handles when the setting doesn't
exist and when it returns a bool, as in Qt5. This fixes the following error:

    AttributeError: 'bool' object has no attribute 'lower'

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Max Smolens <max.smolens@kitware.com>

Revision 26237  Directory Listing
Modified Fri Aug 11 13:45:46 2017 UTC (6 weeks, 3 days ago) by jcfr
COMP: Fix register deprecation warnings

Fix several warnings like the following:

    Modules/Scripted/EditorLib/Logic/vtkImageConnectivity.cxx:82:3: warning: 'register' storage class specifier is deprecated and incompatible with C++1z [-Wdeprecated-register]
      register unsigned int axisv;

From: Max Smolens <max.smolens@kitware.com>

Revision 26231  Directory Listing
Modified Fri Aug 11 03:50:47 2017 UTC (6 weeks, 3 days ago) by lassoan
ENH: Make it easier to register custom sample data

Added support of loading of custom file types and specifying thumbnails for custom data sets.
Added convenience function (SampleDataLogic.registerCustomSampleDataSource) for registration of custom data sets.

Revision 26216  Directory Listing
Modified Tue Aug 8 03:12:57 2017 UTC (6 weeks, 6 days ago) by jcfr
COMP: qMRMLSegmentEditorWidget: Fix "reorder" warning

This commit fixes the following warning:

```
/path/to/Slicer/Modules/Loadable/Segmentations/Widgets/qMRMLSegmentEditorWidget.cxx: In constructor ‘qMRMLSegmentEditorWidgetPrivate::qMRMLSegmentEditorWidgetPrivate(qMRMLSegmentEditorWidget&)’:
/path/to/Slicer/Modules/Loadable/Segmentations/Widgets/qMRMLSegmentEditorWidget.cxx:238:23: warning: ‘qMRMLSegmentEditorWidgetPrivate::EffectButtonStyle’ will be initialized after [-Wreorder]
   Qt::ToolButtonStyle EffectButtonStyle;
                       ^
/path/to/Slicer/Modules/Loadable/Segmentations/Widgets/qMRMLSegmentEditorWidget.cxx:208:8: warning:   ‘bool qMRMLSegmentEditorWidgetPrivate::ViewsObserved’ [-Wreorder]
   bool ViewsObserved;
        ^
/path/to/Slicer/Modules/Loadable/Segmentations/Widgets/qMRMLSegmentEditorWidget.cxx:242:1: warning:   when initialized here [-Wreorder]
 qMRMLSegmentEditorWidgetPrivate::qMRMLSegmentEditorWidgetPrivate(qMRMLSegmentEditorWidget& object)
 ^
```

Revision 26210  Directory Listing
Modified Mon Aug 7 20:19:34 2017 UTC (6 weeks, 6 days ago) by pinter
COMP: Removed unused variables

Revision 26209  Directory Listing
Modified Mon Aug 7 19:36:22 2017 UTC (6 weeks, 6 days ago) by pinter
COMP: Fixed build warning

Revision 26207  Directory Listing
Modified Fri Aug 4 20:45:12 2017 UTC (7 weeks, 2 days ago) by jcfr
COMP: vtkSlicerTerminology(Category|Type): Fix -Woverloaded-virtual warnings

This commit fixes warnings like this one:

```
In file included from /path/to/Slicer/Modules/Loadable/Terminologies/Logic/vtkSlicerTerminologyCategory.h:27:0,
                 from /path/to/Slicer/Modules/Loadable/Terminologies/Logic/vtkSlicerTerminologyEntry.h:32,
                 from /path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.h:32,
                 from /path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx:24:
/path/to/Slicer/Libs/MRML/Core/vtkCodedEntry.h:41:16: warning: ‘virtual void vtkCodedEntry::Copy(vtkCodedEntry*)’ was hidden [-Woverloaded-virtual]
   virtual void Copy(vtkCodedEntry* aType);
                ^
In file included from /path/to/Slicer/Modules/Loadable/Terminologies/Logic/vtkSlicerTerminologyEntry.h:32:0,
                 from /path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.h:32,
                 from /path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx:24:
/path/to/Slicer/Modules/Loadable/Terminologies/Logic/vtkSlicerTerminologyCategory.h:50:16: warning:   by ‘virtual void vtkSlicerTerminologyCategory::Copy(vtkSlicerTerminologyCategory*)’ [-Woverloaded-virtual]
   virtual void Copy(vtkSlicerTerminologyCategory* aCategory);
                ^
```

Revision 26205  Directory Listing
Modified Fri Aug 4 20:23:55 2017 UTC (7 weeks, 2 days ago) by pinter
ENH: Added options to include patient and study tags in subject hierarchy item names

Revision 26199  Directory Listing
Modified Fri Aug 4 03:35:37 2017 UTC (7 weeks, 3 days ago) by lassoan
ENH: Changed coded entry field order to (value, scheme, meaning)

This (value, scheme, meaning) order is more commonly used in the DICOM standard and DCMTK as the (scheme, value, meaning) order that was used in the original implementation of vtkCodedEntry.

Revision 26195  Directory Listing
Modified Thu Aug 3 18:35:51 2017 UTC (7 weeks, 3 days ago) by jcfr
ENH: Volumes: Add test for Volumes with NaN. See #3851

From: Sumedha Singla <sumedha.singla@kitware.com>

Revision 26194  Directory Listing
Modified Thu Aug 3 18:20:27 2017 UTC (7 weeks, 3 days ago) by pieper
COMP: EditorEffect: ensure application singletons are available

This commit explicitly links qSlicerSegmentationEditorEffects
against qSlicerBaseQTGUI to avoid linker errors on some
platforms (e.g. debian 9 with gcc-6 and cmake 3.9.0-rc6).
This allows access to application singletons like the
layout manager.

This is similar to an issue in the DataStore module [1],

[1] https://github.com/Slicer/Slicer-DataStore/pull/2

From: Steve Pieper <pieper@isomics.com>

Revision 26190  Directory Listing
Modified Thu Aug 3 04:08:55 2017 UTC (7 weeks, 4 days ago) by jcfr
COMP: Update vtkMRMLSceneTest1 and vtkPVScalarBarActor to support VS2015

Co-authored-by: Max Smolens <max.smolens@kitware.com>

From: Adam Rankin <adam.rankin@gmail.com>

Revision 26187  Directory Listing
Modified Tue Aug 1 20:07:33 2017 UTC (7 weeks, 5 days ago) by pinter
ENH: Use new vtkCodedEntry class as base class for terminology containers

Related to https://github.com/Slicer/Slicer/pull/752

Revision 26185  Directory Listing
Modified Sat Jul 29 04:39:55 2017 UTC (8 weeks, 2 days ago) by lassoan
ENH: Added saving of DICOM scalar volume voxel quantity&unit in volume node

It implements functionality originally implemented in this commit (but later reverted due to regressions):
"ENH: init quantity/units in scalar volume plugin" (4ac23a026eac73f471c53383c9cd73cf30eabc79).

This commit is functionally equivalent (except CT quantity incorrect code value has been fixed in
mapSOPClassUIDToDICOMQuantityAndUnits).

Quantity and unit of voxel values of scalar volumes can be accessed in vtkMRMLScalarVolumeNode by using these methods:
  void SetVoxelValueQuantity(vtkCodedEntry*);
  vtkGetObjectMacro(VoxelValueQuantity, vtkCodedEntry);
  void SetVoxelValueUnits(vtkCodedEntry*);
  vtkGetObjectMacro(VoxelValueUnits, vtkCodedEntry);

vtkCodedEntry class was added that simplifies storage, printing, serialization of code scheme/value/meaning triplets
so that it can be easily added to other node types in the future.

DICOMScalarVolumePlugin sets these values when the data is loaded from DICOM.

Added test of setting quantity and unit in scalar volume node during DICOM import (py_DICOMReaders test).

Revision 26184  Directory Listing
Modified Fri Jul 28 22:41:55 2017 UTC (8 weeks, 2 days ago) by pieper
BUG: remove false positive warning

As reported by @fedorov, he was getting warning messages about
bad spacing even for data he thought was correct.  This was
confirmed with data from series 3 of this [1] dataset.

The problem was some faulty logic that to calculate which
loadable has the highest priority [2] but we can remove that
logic because the loadable are already flagged with a
'selected' attribute and we only need to generate the
dialog box when a selected loadable has a warning.

Tested with series 1 (with warning) and 3 of [1].

[1] http://slicer.kitware.com/midas3/folder/2182
[2] https://github.com/Slicer/Slicer/commit/c5a92bcdf471612d41cd41ff5418dca1bf994abb

From: Steve Pieper <pieper@isomics.com>

Revision 26183  Directory Listing
Modified Fri Jul 28 21:50:46 2017 UTC (8 weeks, 2 days ago) by lassoan
STYLE: Changed color for Grow from Seeds error from green to red

Revision 26181  Directory Listing
Modified Fri Jul 28 17:09:20 2017 UTC (8 weeks, 2 days ago) by pinter
STYLE: Typos and more meaningful message

Revision 26180  Directory Listing
Modified Thu Jul 27 17:01:54 2017 UTC (8 weeks, 3 days ago) by lassoan
ENH: Do not reset slice FOV on layout switch in Segment editor

When Segment editor was active and user switched layout, field of view was reset.
We now use slice logic directly instead of propagating volume selection.

Revision 26177  Directory Listing
Modified Wed Jul 26 14:54:05 2017 UTC (2 months ago) by pinter
ENH: Added subject hierarchy attribute filter test

A new test section has been added to SubjectHierarchyGenericSelfTest to test attribute filter. Also a bug was fixed that 

Revision 26176  Directory Listing
Modified Wed Jul 26 14:09:40 2017 UTC (2 months ago) by lassoan
BUG: Revert "ENH: init quantity/units in scalar volume plugin"

This reverts commit 9df49830897e2d0d6e458e7390eec7807a817b41.

The commit caused scene corruption when saving volumes imported from DICOM.
The functionality will be fixed and committed soon.

Revision 26172  Directory Listing
Modified Tue Jul 25 18:47:07 2017 UTC (2 months ago) by fedorov
ENH: init quantity/units in scalar volume plugin

Scalar volumes loaded from various various flavors of MR and CT modalities will
be asigned DICOM.QuantityCode and DICOM.UnitsCode to describe the pixel values
stored in the volume. A function mapping SOPClassUID is introduced in the base
DICOM plugin class to perform the mapping.

See related discussion in

https://github.com/QIICR/QuantitativeReporting/issues/127#issuecomment-273925207

A similar approach is implemented in the PET and Parametric Map plugins
provided in the extensions.

Revision 26171  Directory Listing
Modified Mon Jul 24 22:46:41 2017 UTC (2 months ago) by pinter
ENH: Consolidated redundant segmentation to model export code into logic

Now both export segments into model nodes functions (in Segmentations module widget and subject hierarchy) call the new logic method.
Convenience method added into segmentations logic for exporting visible segments

Revision 26166  Directory Listing
Modified Sun Jul 23 01:03:21 2017 UTC (2 months ago) by lassoan
ENH: adding Qt Designer plugin for qMRMLSubjectHierarchyComboBox

Revision 26165  Directory Listing
Modified Fri Jul 21 23:30:38 2017 UTC (2 months ago) by lassoan
BUG: Fixed slow display of DICOM metadata widget

Due to indentation error in Python, the first DICOM file was parsed as many times as the total number of files.

Revision 26154  Directory Listing
Modified Mon Jul 17 01:03:25 2017 UTC (2 months, 1 week ago) by pinter
ENH: Added file IO to load terminologies from json files

The unique file extension for terminologies is .term.json, but .json only works as well

Fixes https://github.com/QIICR/QuantitativeReporting/issues/167

Revision 26150  Directory Listing
Modified Mon Jul 10 14:53:15 2017 UTC (2 months, 2 weeks ago) by pinter
BUG: Use DICOM tags changed programmatically in SH items when exporting

Revision 26143  Directory Listing
Modified Wed Jul 5 20:59:57 2017 UTC (2 months, 2 weeks ago) by pinter
BUG: Fixed DICOM tag reading from SH series item to DICOM export dialog

Revision 26142  Directory Listing
Modified Sat Jul 1 00:01:31 2017 UTC (2 months, 3 weeks ago) by lassoan
ENH: Added lock window/level button to volume module

Window/level values of scalar volumes can be adjusted by click&drag on the slice view.
While this allows quick&easy tuning of the volume's appearance, in some cases it is too easy
to accidentally modify the volume.

Added a lock button to the window/level settings of Volumes module to enable/disable
modification on the GUI.

Note that window/level adjustment can also be disabled in the slice view interactor.

Revision 26138  Directory Listing
Modified Thu Jun 29 15:06:49 2017 UTC (2 months, 3 weeks ago) by msmolens
COMP: Add missing semicolons

Add semicolons after VTK macros. Without these semicolons, the wrapping
tool that generates hierarchy files fail to parse the declarations. When
the version of VTK is updated to VTK8, generating the hierarchy files
will be necessary for wrapping.

Revision 26136  Directory Listing
Modified Mon Jun 26 14:19:33 2017 UTC (2 months, 4 weeks ago) by jcfr
BUG: ExtensionWizard: Reject improper module name when adding module

This commit ensures valid class names (e.g without spaces) are used when
generating module files.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: AndrewBeers <andrew_beers@alumni.brown.edu>

Revision 26135  Directory Listing
Modified Sun Jun 25 17:30:50 2017 UTC (3 months ago) by lassoan
ENH: ScreenCapture module improvements

Capturing can be cancelled.
In "Capture all views" mode all 3D view controller bars are hidden now (not just the first).

Revision 26131  Directory Listing
Modified Fri Jun 23 00:27:47 2017 UTC (3 months ago) by pieper
STYLE: add extra warning in documentation of dicom reader approaches

Let people know not to re-order the items or people's
settings could be changed.

From: Steve Pieper <pieper@isomics.com>

Revision 26129  Directory Listing
Modified Fri Jun 23 00:27:44 2017 UTC (3 months ago) by pieper
ENH: move comparison utility from test to plugin

This will make the utility available for use in the
plugin and also from other code that needs
the same functionality.

TODO: this could be moved to the vtkSlicerVolumesLogic
class for even greater applicability.

From: Steve Pieper <pieper@isomics.com>

Revision 26125  Directory Listing
Modified Fri Jun 23 00:27:38 2017 UTC (3 months ago) by pieper
STYLE: fix typo in comment string

From: Steve Pieper <pieper@isomics.com>

Revision 26123  Directory Listing
Modified Fri Jun 23 00:27:35 2017 UTC (3 months ago) by pieper
BUG: don't turn off header analysis in DICOM reader

Turns out this call is needed in order to determine
the correct archetype to use.

From: Steve Pieper <pieper@isomics.com>

Revision 26121  Directory Listing
Modified Fri Jun 23 00:27:32 2017 UTC (3 months ago) by pieper
ENH: expose dicom header analysis flag in vtkITK reader

Add a method for this flag - the actual implementation
is not used anyway in slicer and should probably be removed
in the future.

The default value is still true for backward compatibility.

From: Steve Pieper <pieper@isomics.com>

Revision 26120  Directory Listing
Modified Fri Jun 23 00:25:05 2017 UTC (3 months ago) by pieper
ENH: Add DCMTK as reader option for DICOMScalarVolumePlugin

Make the default loading strategy use gdcm for backwards
compatibility, but if that fails, try to load with DCMTK.

Also expose a preference panel that let's users choose the
preferred approach.  For example, this can be used by developers to see
if DCMTK is able to directly load data that GDCM can also load.

Added a test that confirms DCMTK can load data that GDCM cannot.

See discussions [1,2] for context.

[1] https://discourse.slicer.org/t/slicer-dicom-scalar-volume-plugin-relies-on-old-gdcm-why-do-we-not-use-dcmtk/354/14

[2] https://discourse.slicer.org/t/error-with-dce-mri-loading-in-dicom-browser/327/39

From: Steve Pieper <pieper@isomics.com>

Revision 26116  Directory Listing
Modified Fri Jun 23 00:24:58 2017 UTC (3 months ago) by pieper
STYLE: Use enum pattern for DICOM reader 'approach'

As discussed on discourse [1] we may want to allow different
ways of reading DICOM in the future, with this commit we
generalize the concept to use "approach" rather than "library"
since:
* we still use gdcm for some parts of the code
* we may still use dcmtk for reading if we define new
reading approaches in the future.

This commit also changes to using an enum to set
the approach so that the API can remain consistent in the
future.

[1] https://discourse.slicer.org/t/slicer-dicom-scalar-volume-plugin-relies-on-old-gdcm-why-do-we-not-use-dcmtk/354/17

From: Steve Pieper <pieper@isomics.com>

Revision 26115  Directory Listing
Modified Fri Jun 23 00:24:56 2017 UTC (3 months ago) by pieper
ENH: allow DICOMPlugins to add settings panels

For the scalar volume plugin we needed an option to select
which back-end library to use for loading.  With this commit
a new settings panel for DICOM is added to the application
settings dialog.  The DICOM module is extended so that any
DICOMPlugin that implements a settingsPanelEntry method
can populate a group box with widgets to customize the
behavior.

See also:

https://discourse.slicer.org/t/error-with-dce-mri-loading-in-dicom-browser/327/29

https://issues.slicer.org/view.php?id=4372

From: Steve Pieper <pieper@isomics.com>

Revision 26114  Directory Listing
Modified Fri Jun 23 00:24:54 2017 UTC (3 months ago) by pieper
ENH: expose method to set itk metadatadictionary from reader

This method is visible to python and allows implementation
of the same reader functionality in the dicom scalar volume
plugin as in the mrml volume archetype storage node.

Updates DICOMScalarVolumePlugin to use the new method.

From: Steve Pieper <pieper@isomics.com>

Revision 26113  Directory Listing
Modified Fri Jun 23 00:24:52 2017 UTC (3 months ago) by pieper
ENH: enable selection of window/level presets in Volumes

Previously these had not been set by the dicom reader so the
box was always empty and non-functional.

Now the scalar volume plugin populates the displaynode
and these values are shwon in the volumes information widget.
When the user doubleclicks on an entry the display is set
accordingly.

From: Steve Pieper <pieper@isomics.com>

Revision 26112  Directory Listing
Modified Fri Jun 23 00:24:50 2017 UTC (3 months ago) by pieper
STYLE: remove some dead code

pixelDataAvailable variable was set but not used.

Code had been refactored here:

https://github.com/Slicer/Slicer/commit/d9e6edd49b4fbfef04289923bce7c7aecfa45314#diff-5c81585867008dffacf021ea0c9d23d4

From: Steve Pieper <pieper@isomics.com>

Revision 26111  Directory Listing
Modified Fri Jun 23 00:24:49 2017 UTC (3 months ago) by pieper
ENH: WIP: use dcmtk image IO to load scalar dicom

From: Steve Pieper <pieper@isomics.com>

Revision 26107  Directory Listing
Modified Thu Jun 22 16:08:29 2017 UTC (3 months ago) by lassoan
BUG: Fixed warping of markup fiducial labels

Warping of markup fiducial labels was caused by using perspective projection in overlay renderer's camera. See details in commontk/CTK#720.

By switching to parallel projection, default scaling of widgets have to be adjusted, and all other renderers should also use parallel projection to make point placing for widgets invariant to the renderer that is picked.

Revision 26105  Directory Listing
Modified Tue Jun 20 17:16:54 2017 UTC (3 months ago) by lassoan
ENH: Removed terminology support from Colors module

Terminologies are now managed by a dedicated module (Terminologies) and used in segmentations modules.

Fixes #4320 (https://issues.slicer.org/view.php?id=4320)

Revision 26104  Directory Listing
Modified Sat Jun 17 13:25:08 2017 UTC (3 months, 1 week ago) by lassoan
ENH: Improved segment editor interaction mode modification handling

Removed unnecessary default Python implementation of interactionNodeChanged.
Modified interactionNodeChanged -> interactionNodeModified to more clearly indicate that the node selection did not change, only the node content was modified.

Revision 26102  Directory Listing
Modified Sat Jun 17 00:46:14 2017 UTC (3 months, 1 week ago) by lassoan
ENH: Deactivate segment editor effect if markups placement mode activated

If user clicks on the toolbar to change the mouse mode to place markup fiducial, ruler, or ROI, segment editor deactivates the current effect, to make sure there is no double-action (for example, place fiducial & paint).

If an effect requires markup placement, it must override the interactionNodeChanged(vtkMRMLInteractionNode* interactionNode) method and replace default behavior (with an empty method).

Fixes #4384 (https://issues.slicer.org/view.php?id=4384)

Revision 26100  Directory Listing
Modified Fri Jun 16 17:32:45 2017 UTC (3 months, 1 week ago) by lassoan
ENH: Removed legacy BSplineToDeformationField module

BSplineToDeformationField could convert certain bspline transform type to displacement field. The module was limited what transform types it can handle.

Conversion for all transform types was already available for users in the transforms module (and for other modules in the transforms module logic).

Remove BSplineToDeformationField module to reduce user confusion (see https://discourse.slicer.org/t/bspline-to-deformation-field-error/503) and reduce overall Slicer core size and maintenance workload.

Revision 26099  Directory Listing
Modified Fri Jun 16 03:29:08 2017 UTC (3 months, 1 week ago) by ihnorton
STYLE: (DEL?) remove DICOMDiffusionVolumePlugin

Revision 26098  Directory Listing
Modified Thu Jun 15 23:27:38 2017 UTC (3 months, 1 week ago) by lassoan
BUG: Fixed annotation ROI transform hardening

Scale was estimated incorrectly. Now the new ROI computed as the smallest bounding box that contains all the transformed corner points.

Fixes #4332 (https://issues.slicer.org/view.php?id=4332)

Revision 26096  Directory Listing
Modified Thu Jun 15 23:27:33 2017 UTC (3 months, 1 week ago) by lassoan
BUG: Fixed display node creation during scalar->labelmap conversion

Fix of regression introduced earlier today.

Revision 26095  Directory Listing
Modified Thu Jun 15 16:41:47 2017 UTC (3 months, 1 week ago) by lassoan
ENH: Simplified SegmentStatistics test

Revision 26094  Directory Listing
Modified Thu Jun 15 03:20:57 2017 UTC (3 months, 1 week ago) by lassoan
BUG: Fixed heap corruption during scalar->labelmap conversion

Rebuilding histogram for an empty volume after scalar->labelmap conversion triggered a heap corruption report in Visual Studio,
during a free() call. It was not clear why heap corruption occurred, as it seemed to be well paired with a malloc().
As a fix, we don't rebuild histogram with an empty volume, we just hide the histogram if there is no input voxel in the volume.

Revision 26093  Directory Listing
Modified Thu Jun 15 03:20:37 2017 UTC (3 months, 1 week ago) by lassoan
ENH: Added labelmap->scalar conversion in Volumes module

Now there is two-way conversion between labelmap<->scalar volumes.

Revision 26092  Directory Listing
Modified Wed Jun 14 21:02:35 2017 UTC (3 months, 1 week ago) by lassoan
BUG: Fixed saving of FreeSurfer model nodes with overlay

When FreeSurfer overlay was read from file, a vtkMRMLFreeSurferModelOverlayStorageNode node got associated with the model node, which was a mistake, as that storage node does not support saving of the node. Standard model storage node can handle model storage with scalar data.

Fixes #3276 (https://issues.slicer.org/view.php?id=3276)
Fixes #3684 (https://issues.slicer.org/view.php?id=3684)
Partially fixes #4143 (https://issues.slicer.org/view.php?id=4143)

Revision 26091  Directory Listing
Modified Wed Jun 14 16:31:36 2017 UTC (3 months, 1 week ago) by lassoan
ENH: Improved transform widget display and apply transform sections

Simplified interaction section in transform display widget.
Synchronize interaction section in transform display widget with MRML node content.
Disable scaling interaction by default.
Keep Apply transform section closed until a transform is selected (to make the user interface more clear).
Disable widgets in Apply transform section until a transform node is selected.

Revision 26090  Directory Listing
Modified Wed Jun 14 16:31:22 2017 UTC (3 months, 1 week ago) by lassoan
BUG: Fixed transform rotation spinbox in Transforms module

When 0 degree was attempted to be changed by typing .1 the spinbox was reset to 0. The problem was that 0->0.1 means that the number of digits are changed, which triggered an update on all rotation sliders, which caused reset of all values. Fixed by making sure that the axis where spinbox that has the focus is not reset.

Fixed the problem of setting sliders to rotation type (after the scene was set it was necessary to set rotation type again, because unit-aware properties were overwritten when scene was set).

Changed Transforms module widget rotation angle spinbox step size to 0.1deg (0.1 deg is a quite visible difference). Further digits can be entered if more precision is needed.

Fixes #4365 (https://issues.slicer.org/view.php?id=4365)

Revision 26088  Directory Listing
Modified Wed Jun 14 00:40:22 2017 UTC (3 months, 1 week ago) by lassoan
BUG: Fixed crash on scene close

MRML widgets must not hold raw pointers to nodes, as node delete events may not be invoked during scene close for all nodes.

Revision 26085  Directory Listing
Modified Tue Jun 13 16:04:34 2017 UTC (3 months, 1 week ago) by lassoan
BUG: Fixed ResampleDTIVolume to work with composite transforms

The problem was that due to some reason this CLI module used .mat extension for writing transforms, which is not capable of handling composite transforms.
Changed it to use .h5, as that format can handle any combination of transforms.

Revision 26083  Directory Listing
Modified Mon Jun 12 02:13:58 2017 UTC (3 months, 2 weeks ago) by lassoan
BUG: Fixed scene view thumbnail display

Scene view thumbnails were not displayed in the scene view list (a question mark was displayed instead of the icon).
Fixed image file path URL generation by using QUrl instead of crafting the URL string manually.

related to #3199 (https://issues.slicer.org/view.php?id=3199)

Revision 26081  Directory Listing
Modified Sun Jun 11 12:18:57 2017 UTC (3 months, 2 weeks ago) by lassoan
BUG: Fixed background volume switch on Segment Editor module entering

As a side effect of hiding labelmap layer, the last propagated background volume got re-displayed.
Fixed by propagating only the labelmap layer.

Revision 26075  Directory Listing
Modified Sat Jun 10 01:09:36 2017 UTC (3 months, 2 weeks ago) by lassoan
STYLE: Added note on markups node max number of points

Related to bug report:
https://issues.slicer.org/view.php?id=4306

Revision 26073  Directory Listing
Modified Thu Jun 8 20:46:00 2017 UTC (3 months, 2 weeks ago) by lassoan
ENH: Made auto-rotate slice to camera normal more robust

Auto-rotate slice to camera normal only works if the reformat widget is displayed.
In Reformat module, auto-rotate is shown as a checkbox on "Normal to camera" button - very far from show/hide reformat widget, so when the user just clicks that checkbox it's not obvious why the feature does not work.

Solution: turn on slice reformat widget when user clicks on the checkbox on "Normal to camera" button in Reformat module.

Another small bug was that when the user clicks the "Normal to camera" button and checkbox is checked then the button becomes unpushed, but the checkbox is still checked, so it is not clear if auto-rotate is still active or not.

Solution: changed behavior so that when the user clicks the "Normal to camera button" and the checkbox was checked, then the button becomes unpushed and the checkbox becomes unchecked, too.

Revision 26072  Directory Listing
Modified Sun Jun 4 01:21:21 2017 UTC (3 months, 3 weeks ago) by lassoan
ENH: SampleData module loads all data sets from Midas

Also added showing of loading status on the status bar, as the log window is not always visible in lower resolution screens.

Revision 26071  Directory Listing
Modified Sat Jun 3 12:39:55 2017 UTC (3 months, 3 weeks ago) by lassoan
BUG: Changed sample data URLs

URL for sample data hosted on Slicer wiki is changed - update SampleData module accordingly.

Revision 26066  Directory Listing
Modified Thu Jun 1 16:32:28 2017 UTC (3 months, 3 weeks ago) by lassoan
ENH: Segmentation master representation is not changed during import

When a model or lablemap node was imported into segmentation node and the master representation
did not match the type of the imported node, the master representation of the segmentation was changed.
This behavior was not desirable, because it forced temporarily switching representation of all the nodes
in the existing segmentation to something else, resulting in some potential loss of details.

Changed behavior so that the imported node representation is changed during import (existing
segments in the segmentation node are not changed in any way).

Revision 26063  Directory Listing
Modified Thu Jun 1 14:53:50 2017 UTC (3 months, 3 weeks ago) by pinter
ENH: Simplified subject hierarchy node resolving process

Subject hierarchy node resolving happens when a second subject hierarchy node appears in the scene - usually when a scene is imported. Then merging of the new SH nodes into the first one happens, after which the new (and now empty) SH nodes are removed. It has been possible to observe items added when resolving using SubjectHierarchyItemResolvedEvent, but it was too complicated, as Add and Resolve basically mean the same operation, just in different states. Now SubjectHierarchyItemAddedEvent is invoked as usual when resolving, but it is now possible to get notified about resolving operations using SubjectHierarchyStartResolveEvent and SubjectHierarchyEndResolveEvent. This also allows processing after scene import without using a timer.

Revision 26062  Directory Listing
Modified Wed May 31 15:58:46 2017 UTC (3 months, 3 weeks ago) by lassoan
BUG: Removed memory leaks using GetNodesByClass from Python

GetNodesByClass creates a new collection that the caller has to take ownership of (the caller will have to delete).
Python automatically adds a reference, so we have to call UnRegister to remove the extra reference.

Revision 26061  Directory Listing
Modified Tue May 30 21:56:45 2017 UTC (3 months, 3 weeks ago) by pieper
BUG: #3776 warning dialog gave useless/misleading information

The fuzzy compare of image geometry looks at the difference
between two values, but the printing of the warning set the
precision based on the whole number including the digits
left of the decimal point.  The result was a message that showed
identical numbers and reported them as different (understandably
confusing).

https://www.na-mic.org/Bug/view.php?id=3776

From: Steve Pieper <pieper@isomics.com>

Revision 26059  Directory Listing
Modified Tue May 30 18:39:17 2017 UTC (3 months, 3 weeks ago) by lassoan
BUG: Removed all iteratorless traverse of shared collections

Collections have convenience functions for traversing it without the need for creating an iterator,
using InitTraversal() and GetNextItemAsObject(). These functions use an internal iterator stored in the collection.

Problem:

When a collection is traversed using the internal iterator by multiple functions at the same time, the behavior will be incorrect.

For collections that can be accessed by multiple objects, it is almost impossible to make sure that only one function will use
the internal iterator at a time. Therefore, shared collections must be traversed using external iterators.

For example, this error caused a bug in View Controllers module: it only showed the first slice view controller (while there were three). The problem was that View Controllers module iterated through the nodes using the internal iterator and internally a method was called that asked for a list of nodes by classname, which used the same internal iterator.

Solution:

- Replaced all instances of shared collection traversal with internal iterator.
- Made vtkMRMLScene's InitTraversal, GetNextNode, and GetNextNodeByClass methods deprecated (they are still functional,
  but log a warning when they are called).
- Added vtkMRMLScene::GetFirstNodeByClass convenience function and modified functions that used InitTraversal/GetNextNodeByClass
  or GetNthNodeByClass(0, ...) to use this function.

Revision 26052  Directory Listing
Modified Sat May 27 01:11:23 2017 UTC (3 months, 4 weeks ago) by lassoan
ENH: Added schema file support for defining table column properties

Data type, default value, long name, description, unit, and any number of custom properties can now be defined for each column in a vtkMRMLTableNode.

Long name, description, and unit are shown in table view.
Data type is used for creating numeric arrays when reading the table.csv
Default value is used for initializing values in new rows.

Properties are stored in a schema file, which is a CSV or TSV file with the composite file extension .schema.csv (or .schema.csv or .schema.txt) with the same base filename as the data table file.

Revision 26051  Directory Listing
Modified Fri May 26 18:51:46 2017 UTC (4 months ago) by pinter
BUG: Fixed various subject hierarchy issues

- When the subject hierarchy node was removed programmatically, then subject hierarchy was not rebuilt, and became unusable. It's because vtkCommand::Delete was not called when removing it from python, as a reference from the console was still around, so vtkMRMLScene::NodeRemovedEvent is observed instead. Also plugin logic explicitly rebuilds the new subject hierarchy node when the original one was removed
- Added checks and removed unnecessary calls to remove unnecessary warning messages

Revision 26049  Directory Listing
Modified Fri May 26 14:34:34 2017 UTC (4 months ago) by pinter
BUG: Fixed failing subject hierarchy generic tests

Revision 26047  Directory Listing
Modified Thu May 25 17:11:57 2017 UTC (4 months ago) by pieper
BUG: #4323 add close button to DICOM widgets

Without the hint, there was no way to close these windows
on certain OS/window managers (e.g. ubuntu 14.04, 16.04).

From: Steve Pieper <pieper@isomics.com>

Revision 26046  Directory Listing
Modified Thu May 25 15:31:37 2017 UTC (4 months ago) by lassoan
BUG: Fixed crash during application exit in SubjectHierarchy PluginHandler

On application exit, qSlicerSubjectHierarchyPluginHandler is deleted before
subject hierarchy node is deleted. Deletion of the node caused the callback command
to execute and call qSlicerSubjectHierarchyPluginHandler::onSubjectHierarchyNodeEvent,
which referred to the deleted pluginHandler.

Solution was to remove observers in the pluginHandler destructor.

Revision 26045  Directory Listing
Modified Thu May 25 15:31:34 2017 UTC (4 months ago) by lassoan
BUG: Fixed FreeSurfer overlay colormap table

Color names were overridden with default generated names (R=..., G=..., B=...).
Changed the color table name to match the overlay file it is read from.
Made overlay reading options in Add data dialog a bit more clear: added a "Apply to model:" label to the model node selector.

Revision 26044  Directory Listing
Modified Thu May 25 15:31:30 2017 UTC (4 months ago) by lassoan
BUG: Fixed infinite loop in qMRMLModelDisplayNodeWidget::updateWidgetFromMRML

Revision 26034  Directory Listing
Modified Wed May 24 13:18:25 2017 UTC (4 months ago) by lassoan
ENH: Scissors cut depth can be limited in slice views

Revision 26032  Directory Listing
Modified Tue May 23 17:55:56 2017 UTC (4 months ago) by pinter
BUG: Rebuild subject hierarchy if resolve step fails

If the saved scene is invalid for some reason (in the scene attached to the error report there were empty unresolved items in the unresolved items list, and as they did not have valid parents, resolving them failed), then the subject hierarchy node is removed, which triggers re-building the hierarchy from scratch. The resulting hierarchy will be flat (except for the model and annotation hierarchies that can be rebuilt in SH), but at least there will be a valid subject hierarchy

Revision 26026  Directory Listing
Modified Fri May 19 04:46:50 2017 UTC (4 months, 1 week ago) by lassoan
ENH: Added standard undo/redo shortcut to segment editor

Revision 26025  Directory Listing
Modified Thu May 18 19:43:38 2017 UTC (4 months, 1 week ago) by lassoan
BUG: Fixed ScreenCapture ffmpeg download

ffmpeg download site added a user agent check which prevented download with default settings.
Solution was to specify a user agent.
Also added the option of specifying multiple mirror sites.

Revision 26018  Directory Listing
Modified Thu May 18 02:18:46 2017 UTC (4 months, 1 week ago) by lassoan
ENH: Made segmentations model export more robust

In case there were errors in the subject hierarchy (SH), Segmentations module failed to export segments.
Segmentations module is more robust now, if there are SH errors then it will just not place
exported nodes in the same SH branch as the segmentation.

Revision 26016  Directory Listing
Modified Wed May 17 01:38:13 2017 UTC (4 months, 1 week ago) by pinter
BUG: Segment editor widget layout issue fixed

Most of the layout problems are solved. There are minor spaces between the widgets in certain rare cases, but there are no cramped widgets any more at all.

Revision 26015  Directory Listing
Modified Tue May 16 19:39:34 2017 UTC (4 months, 1 week ago) by lassoan
ENH: Improved segment editor shortcuts

Switch between last two effects using space bar (it can be used to quickly inactivate/reactivate scissors; switch between paint/erase; etc).
Added shortcut for choosing more than 10+ effects by clicking shift+number (Shift+1, Shift+2, ...).

Revision 26014  Directory Listing
Modified Tue May 16 08:53:16 2017 UTC (4 months, 1 week ago) by pinter
BUG: Further improvement of segment editor widget layout issue

Still not perfect, but at least the layout is not completely cramped after changing modules and back

Revision 26011  Directory Listing
Modified Mon May 15 15:46:24 2017 UTC (4 months, 1 week ago) by jcfr
ENH: Add support for MINC image IO

Issue #4085

This enables MINC Image IO via ITK. This currently supports MINC version 2
(HDF5-based).

Reviewed-by: Andriy Fedorov <fedorov@bwh.harvard.edu>
Reviewed-by: Andras Lasso <lasso@queensu.ca>
Reviewed-by: Johan Andruejol <johan.andruejol@kitware.com>
Reviewed-by: Gabriel A. Devenyi <gdevenyi@gmail.com>
Reviewed-by: Vladimir S. FONOV <vladimir.fonov@gmail.com>

Tested-by: Andras Lasso <lasso@queensu.ca>
Tested-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Matt McCormick <matt.mccormick@kitware.com>

Revision 26009  Directory Listing
Modified Wed May 10 17:24:19 2017 UTC (4 months, 2 weeks ago) by pinter
BUG: Attempt to fix Segment Editor layout issue

The effect options widget was truncated and vertically pressed in some cases after changing the active effect.

Revision 26005  Directory Listing
Modified Sat May 6 04:52:22 2017 UTC (4 months, 2 weeks ago) by jcfr
STYLE: qMRMLSegmentEditorWidget: Fix unused variable and reorder warnings

Revision 26004  Directory Listing
Modified Sat May 6 04:52:20 2017 UTC (4 months, 2 weeks ago) by jcfr
STYLE: SHDiffusionTensorVolumesPlugin: Fix unused variable warnings

Revision 26001  Directory Listing
Modified Sat May 6 03:53:44 2017 UTC (4 months, 2 weeks ago) by jcfr
ENH: Ensure node loaded by volume logic respect default nodes

To that effect, this commit introduces the new method "vtkMRMLScene::AddNewNodeByClass()".
It allows to:

 (1) easily create a node by className, optionally set its name
     and then add it to the scene.

 (2) ensure properties of loaded node are initialized considering
     default nodes.

Suggested-by: Andras Lasso <lasso@queensu.ca>
Reviewed-by: Andras Lasso <lasso@queensu.ca>
Thanks: Andras Lasso <lasso@queensu.ca>

Revision 26000  Directory Listing
Modified Sat May 6 03:53:41 2017 UTC (4 months, 2 weeks ago) by jcfr
BUG: Update Volume loading to consider LabelMap DisplayNode default properties

This commit enables customization of the LabelMapVolumeDisplayNode
attributes by ensuring the custom properties set on the corresponding
default node are effectively re-used.

Revision 25995  Directory Listing
Modified Mon May 1 22:42:35 2017 UTC (4 months, 3 weeks ago) by lassoan
ENH: Made reading of DeveloperMode settings more robust

DeveloperMode setting may be missing (if Slicer is not executed before).
If this setting is missing then it is now assumed to be false
(instead of failing with an error).

Revision 25994  Directory Listing
Modified Mon May 1 16:13:50 2017 UTC (4 months, 3 weeks ago) by pinter
BUG: Fixed terminology type modifier loading from segment descriptor JSON file

Revision 25990  Directory Listing
Modified Fri Apr 28 20:46:23 2017 UTC (4 months, 4 weeks ago) by johan.andruejol
BUG: Minor - Check for null node in markup widget setMRMLFiducialNode

Revision 25989  Directory Listing
Modified Fri Apr 28 20:37:51 2017 UTC (4 months, 4 weeks ago) by lassoan
ENH: Improved SegmentEditorFillBetweenSlicesEffect documentation

Revision 25981  Directory Listing
Modified Thu Apr 27 19:59:58 2017 UTC (4 months, 4 weeks ago) by johan.andruejol
BUG: Fix ConvertDeviceToXYZ() 1 pixel offset

The issue appeared when using an annotation. When the annotation point is
dragged at the bottom of a slice view, the annotation Z position would
jump 1 pixel higher.
For example in the axial view, the Z coordinate of the annotation would
jump from 0.0 to 1.0 (when no module is loaded).

Here is a small python code exerpt that can be used to showcase the bug:

def PrintP1(caller, event):
    p1 = [0, 0, 0]
    caller.GetPosition1(p1)
    print(p1)

ruler = slicer.mrmlScene.AddNode(slicer.vtkMRMLAnnotationRulerNode())
ruler.SetPosition1([0, 0, 0])
ruler.SetPosition2([10, 0, 0])
ruler.AddObserver(vtk.vtkCommand.ModifiedEvent, PrintP1)


Fixing the computation of Z in ConvertDeviceToXYZ() fixes this.

Revision 25975  Directory Listing
Modified Wed Apr 26 05:20:59 2017 UTC (5 months ago) by jcfr
ENH: vtkMRMLAnnotationROINodeTest1: Add TestGetTransformedPlanes

The expected values have been collected by displaying the plane
properties using a snippet similar to the following:

  for (int idx = 0; idx < planes->GetNumberOfPlanes(); ++idx)
    {
    planes->GetPlane(idx)->Print(std::cout);
    }

Suggested-by: Johan Andruejol <johan.andruejol@kitware.com>

Revision 25974  Directory Listing
Modified Wed Apr 26 05:20:57 2017 UTC (5 months ago) by jcfr
STYLE: vtkMRMLAnnotationROINodeTest1: Simplify and remove dead/commented code

Revision 25973  Directory Listing
Modified Wed Apr 26 05:20:55 2017 UTC (5 months ago) by jcfr
ENH: VolumeRendering: Support ROI clipping in arbitrary direction

This commit refactors and simplifies the code so that vtkMRMLAnnotationROINode::GetTransformedPlanes()
returns updates planes accounting for parent transform.

Co-authored-by: Ken Martin <ken.martin@kitware.com>

Revision 25972  Directory Listing
Modified Wed Apr 26 03:17:59 2017 UTC (5 months ago) by jcfr
ENH: Remove unused VolumeRenderingReplacements fixed point raycaster override

This specialized implementation was first introduced in r4673 (ENH: Integrated
VTK ray cast classes, started with modifications for incremental update) by
copying the VTK implementation of the FixedPoint volume caster and was
most likely introduced to better support volume rendering compositing
with polygonal data.

Based on the discussion of the Developer meeting from April 25th [1] and
considering that non of the classes found in VolumeRenderingReplacements
are instantiated when using either the CPU or GPU volume mapper currently
available in Slicer, this commit removes them.

[1] https://www.slicer.org/wiki/Developer_Meetings/20170425

They most likely became obsolete with one of these commits:

* r23887 (ENH: Remove unused VTK OpenGL 3D Texture based volume rendering classes)

* r23888 (ENH: Remove unused NCI volume rendering classes)

* r23889 (ENH: Remove unused NCI GPU MultiVolume rendering classes).

Also worth noting that since then, the VTK implementation has matured
and fixes can now easily be contributed upstream.

Revision 25971  Directory Listing
Modified Wed Apr 26 02:07:47 2017 UTC (5 months ago) by lassoan
BUG: Fixed data module subject hierarchy tab checkboxes

Event of show/hide MRML IDs was mixed up with show/hide transforms.
Also updated the checkbox names to match between all tabs.

Revision 25969  Directory Listing
Modified Wed Apr 26 01:30:35 2017 UTC (5 months ago) by lassoan
BUG: Fixed ScreenCapture module test

Revision 25968  Directory Listing
Modified Wed Apr 26 01:30:33 2017 UTC (5 months ago) by lassoan
BUG: Fixed SampleData downloadAbdominalCTVolume

Revision 25964  Directory Listing
Modified Tue Apr 25 19:24:16 2017 UTC (5 months ago) by pinter
STYLE: Removed CLI-style documentation for Data module

- The documentation stored in the XML file is mostly for CLIs, and it appears in the wiki as "Parameters: ...", while this module is not for processing
- Content is outdated and need to be updated, and it is more complex than what the XML structure allows
- New content on the wiki page: https://www.slicer.org/wiki/Documentation/Nightly/Modules/Data

Revision 25963  Directory Listing
Modified Tue Apr 25 19:11:53 2017 UTC (5 months ago) by pinter
STYLE: Changing order of contributors of Data module

The wiki page and so the author list is automatically generated, and none of the original contributors work on Slicer core any more, so if somebody wants to contact a developer, they find an active one

Revision 25961  Directory Listing
Modified Tue Apr 25 18:13:46 2017 UTC (5 months ago) by pinter
ENH: Integration of Subject hierarchy into the Data module

The name of the subject hierarchy is not indicative to a user at all, and they may have difficulties finding out what the name actually covers. In the same time there is the Data module with an indicative name, but which has limited uses, and is mostly used to build transform hierarchies and for development purposes. It seems to make sense to "merge" the two modules, so that the now stable and fast subject hierarchy can be used where it is easiest to find.
- Made the Data module widget tabbed, with "Subject hierarchy", "Transform hierarchy", and "All node" tabs. Transform hierarchy contains the MRML tree from the previous Data module, showing only the transformable nodes. Note that ModelHierarchy and Displayable modes were not migrated, as Model hierarchies are supported by subject hierarchy, and if display properties are to be set, then the Models module is needed anyway. All nodes contains a flat list of MRML nodes showing all types of nodes
- Subject hierarchy made a hidden module, and all content removed from its module widget (so that it does not need to be maintained in two places
- Data module icon replaced with the subject hierarchy icon, and Subject hierarchy replaced by Data in the favorite module toolbar
- Added a button to "Explore Loaded Data" in Welcome module, and also updated text

Revision 25939  Directory Listing
Modified Thu Apr 20 17:57:21 2017 UTC (5 months ago) by pinter
BUG: Fixed histogram for floating point volumes

The default behavior of ctkVTKHistogram is that it calculates the histogram to as many bins as many integers are in the scalar range. This results in flat or very choppy histograms for floating point volumes with low voxel values, and results in huge histograms in case of high intensity range. By setting the number of bins to a constant 1000, a reasonable (not too high, not too low) resolution histogram is created for every type of volume.

Revision 25936  Directory Listing
Modified Tue Apr 18 14:40:01 2017 UTC (5 months, 1 week ago) by pinter
ENH: Added option in SH to transform by reparent

If an item is drag&dropped onto a transform in subject hierarchy, then the transformable nodes under the dragged item will be transformed by the parent transform item. Actual reparenting does not happen, only setting of the transform. The behavior is the same as when the user uses the transform column for the dragged item (including the popup about hardening/replacing transform)

Revision 25935  Directory Listing
Modified Tue Apr 18 14:21:56 2017 UTC (5 months, 1 week ago) by pinter
STYLE: Added subject hierarchy description into Welcome module

As subject hierarchy is intended to be the module that is used most frequently to explore the loaded data (show/hide, etc), I added one row in the Display section table about it.

Revision 25934  Directory Listing
Modified Tue Apr 18 13:57:54 2017 UTC (5 months, 1 week ago) by pinter
ENH: Added editMenuActionVisible property to SH tree view

Revision 25931  Directory Listing
Modified Sat Apr 15 02:49:05 2017 UTC (5 months, 1 week ago) by lassoan
ENH: Added CTBrain sample data set

Revision 25928  Directory Listing
Modified Fri Apr 14 12:44:33 2017 UTC (5 months, 1 week ago) by lassoan
ENH: Improved segment editor widget 2D representation selection logic

Switch to use binary labelmap representation for 2D dispay only if this representation exists.
This is necessary to prevent switching representation when only ribbon and closed surface representation exists (for example, after DICOM-RT import).

Revision 25927  Directory Listing
Modified Fri Apr 14 02:39:32 2017 UTC (5 months, 1 week ago) by pinter
ENH: Added hint about context menus in subject hierarchy

Context menu was said to not be straightforward, and now with the two separate context menus it is even less. Tooltips have been added that pop up when entering subject hierarchy. If there is displayable data loaded, and the user enters subject hierarchy, a tooltip appears on the displayable item about the main context menu. On a second enter into the module, a tooltip appears for the visibility menu. The state of the shown hints is stored in application settings.

Revision 25926  Directory Listing
Modified Fri Apr 14 02:36:44 2017 UTC (5 months, 1 week ago) by pinter
STYLE: Fixed order of methods and separator in SH plugins

Revision 25925  Directory Listing
Modified Thu Apr 13 20:02:27 2017 UTC (5 months, 1 week ago) by pinter
ENH: Added segmentation visibility actions into SH visibility context menu

Also made showContextMenuActionsForItem and showVisibilityContextMenuActionsForItem implementation easier by not having to call hideAllContextMenuActions explicitly at the beginning of these functions, and fixed unnecessary error message when closing scene in Volumes SH plugin.

Revision 25924  Directory Listing
Modified Thu Apr 13 19:20:06 2017 UTC (5 months, 1 week ago) by pinter
BUG: Fixed subject hierarchy issues

- Crash when closing scene in certain cases (added checks for valid subject hierarchy node)
- Backwards-compatibility support for scenes that have the Level member instead of Level attribute

Revision 25922  Directory Listing
Modified Thu Apr 13 03:25:14 2017 UTC (5 months, 1 week ago) by lassoan
ENH: Added node selection signals to qMRMLSegmentEditorWidget

masterVolumeNodeChanged(vtkMRMLVolumeNode*)
segmentationNodeChanged(vtkMRMLSegmentationNode*)

Revision 25921  Directory Listing
Modified Wed Apr 12 20:54:16 2017 UTC (5 months, 1 week ago) by pinter
ENH: Added visibility context menu for subject hierarchy plugins

Context menu in subject hierarchy can be crowded, and visibility-related settings may be hard to find. As discussed before, a second context menu that is invoked by right-clicking the visibility (eye) icon was added to contain the visibility-related actions. Visibility actions added here:
- Labelmaps: Labelmap outline toggle
- Segments: Show only selected segment, show all segments
- Volume rendering (new plugin): Show volume rendering (this shows up for all volumes, including labelmaps)

Revision 25919  Directory Listing
Modified Wed Apr 12 16:18:48 2017 UTC (5 months, 1 week ago) by jcfr
ENH: Extracted methods from proceedWithReferencedLoadablesSelection

* simplified code

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25918  Directory Listing
Modified Wed Apr 12 16:18:46 2017 UTC (5 months, 1 week ago) by jcfr
ENH: Examine progress dialog max set to number of selected plugins

* decoupled checking of selected references (DICOMReferencesDialog)
  from proceedWithReferencedLoadablesSelection

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25917  Directory Listing
Modified Wed Apr 12 16:18:45 2017 UTC (5 months, 1 week ago) by jcfr
ENH: DICOMReferencesDialog inherits from QMessageBox instead of QDialog

* improved iteration over checkboxes
* direct access to loadable:checkbox dictionary
* improved size
* groupbox for organizing all references

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25916  Directory Listing
Modified Wed Apr 12 16:18:43 2017 UTC (5 months, 1 week ago) by jcfr
ENH: Extracted DICOMReferencesDialog for displaying referenced loadables

* user can selected referenced loadables that should be loaded besides of the actual series
* removed unused code

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25915  Directory Listing
Modified Wed Apr 12 13:26:53 2017 UTC (5 months, 1 week ago) by lassoan
BUG: Fixed scene corruption

Saved scenes were not possible to load because a missing space.

To fix a corrupted scene, add space before linePtsID.

For example:
ctrlPtsNumberingScheme="0"linePtsID="0 1"
=>
ctrlPtsNumberingScheme="0" linePtsID="0 1"

Revision 25914  Directory Listing
Modified Mon Apr 10 21:42:57 2017 UTC (5 months, 2 weeks ago) by pinter
ENH: Made easier to save DICOM tags back to subject hierarchy items

Now the save tags checkbox in DICOM export dialog is on by default, and it saves the edited tags after each edit (if the checkbox is on), not just on export. Thus if the user edits DICOM tags but cancels the dialog to do something before export, the tags are preserved and they don't have to type it in again.

Also added a check in volumes SH plugin in case Slicer is started in no-main-window mode

Revision 25913  Directory Listing
Modified Sun Apr 9 21:44:09 2017 UTC (5 months, 2 weeks ago) by lassoan
BUG: Fixed readOnly mode of qMRMLSegmentEditorWidget

Revision 25911  Directory Listing
Modified Fri Apr 7 23:34:19 2017 UTC (5 months, 2 weeks ago) by lassoan
BUG: Fixed loading of segment editor effects from extensions

Python module name was ignored and therefore only one effect was loaded from extensions
(the latest effect overwrote previous effects).

Revision 25910  Directory Listing
Modified Fri Apr 7 18:11:52 2017 UTC (5 months, 2 weeks ago) by lassoan
ENH: Added convenience functions for segmentation manipulation

Makes it simpler to add/remove segments, create/delete representations, etc.

Revision 25909  Directory Listing
Modified Fri Apr 7 14:21:38 2017 UTC (5 months, 2 weeks ago) by pieper
ENH: #4360 make dicom popups child of browser

By default a slicer.util.infoDisplay is a child of the
main window.  For dicom browser related dialogs we want
them tied to the browser for consistency with ctk popups
and to better support multiple monitors.

From: Steve Pieper <pieper@isomics.com>

Revision 25908  Directory Listing
Modified Fri Apr 7 14:09:38 2017 UTC (5 months, 2 weeks ago) by fedorov
BUG: fix loading of multiple referenced loadables

Load DICOM with referenced loadables popup always used the first checkbox value
and ignored checkboxes for the remaining loadables.

* in case there were three referenced loadables and second and third were unchecked,
 all loadables were still loaded because only the value of the first checkbox was used
* loadableCnt never got incremented while checking checkboxes

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25907  Directory Listing
Modified Thu Apr 6 16:42:27 2017 UTC (5 months, 2 weeks ago) by pieper
BUG: Changes the Remove Islands Morphology editor button

Now reference 'self' instead of an implied instance of
slicer.modules.EditorWidget. This allows
this function to be imported by other modules without error.

From: AndrewBeers <andrew_beers@alumni.brown.edu>

Revision 25906  Directory Listing
Modified Thu Apr 6 02:17:11 2017 UTC (5 months, 2 weeks ago) by lassoan
ENH: Improved segment editor widget API

Added signal for segment selection change.
Added option for specifying attributes for filtering segmentation and master volume nodes.

Revision 25905  Directory Listing
Modified Wed Apr 5 17:03:03 2017 UTC (5 months, 2 weeks ago) by pinter
BUG: Minor segmentation fixes

1. Added check in case segment is not found by ID in displayable manager
2. Segment editor plugin now adds the segmentation as a sibling and not as a child of the master volume (they are both 'series' under a study when exporting, so it makes sense to build the hierarchy like that)

Revision 25902  Directory Listing
Modified Tue Apr 4 05:14:04 2017 UTC (5 months, 3 weeks ago) by lassoan
BUG: Fixed file extensions

Revision 25901  Directory Listing
Modified Tue Apr 4 05:13:59 2017 UTC (5 months, 3 weeks ago) by lassoan
ENH: Display thumbnails in SampleData module

It makes the module nicer and the button easier to hit.

Revision 25900  Directory Listing
Modified Tue Apr 4 03:22:10 2017 UTC (5 months, 3 weeks ago) by lassoan
ENH: Enhanced segment editor widget layout

Hide effect options when no effect is selected.
Fixed issue of options frame being compressed sometimes.
Widgets are named more consistently.

Revision 25899  Directory Listing
Modified Tue Apr 4 03:22:05 2017 UTC (5 months, 3 weeks ago) by lassoan
ENH: Updated segment editor effect icons and help text

Effect icons now have transparent background. This makes it easier to create/find icons.
Help text of effects are updated to be single-line, but expandable to show more details.

Revision 25898  Directory Listing
Modified Mon Apr 3 16:10:28 2017 UTC (5 months, 3 weeks ago) by pinter
BUG: Fixed strange toolbar popup after DICOM export

After invoking DICOM export from the subject hierarchy context menu and closing the dialog (either by successful export or canceling the window), the Slicer toolbar context menu appeared in place of the subject hierarchy context menu. Its root cause remains to be identified, but the bug was fixed by changing the handling function from mouse release to mouse pressed. Note that mouse pressed was the original behavior, which was changed recently (rev25884).

Revision 25897  Directory Listing
Modified Mon Apr 3 15:28:55 2017 UTC (5 months, 3 weeks ago) by pinter
STYLE: Updated subject hierarchy tooltip and help text

Revision 25896  Directory Listing
Modified Mon Apr 3 15:23:15 2017 UTC (5 months, 3 weeks ago) by pinter
ENH: Removed explicit level member from subject hierarchy item

The reason for this is that level was somewhat confusing: all items for data nodes had series level by default, but it was not explicitly specified what it caused, and also the role of subseries level was unclear. Moreover as level was a member, it was expected to be non-empty, however in some cases it was not useful
Level is still available and used, but it's now a subject hierarchy item attribute, which is not mandatory. Convenience functions were preserved for level getting, setting, and checking, and added for creating patient, study, and folder items. So level argument was removed from functions where it was not useful, and the code is now a bit simpler

Revision 25895  Directory Listing
Modified Fri Mar 31 16:26:29 2017 UTC (5 months, 3 weeks ago) by pinter
BUG: Fixed randomizing order of dropped items in subject hierarchy

If multiple items were selected, and drag&dropped under a new parent, the order of the items under the new parent was randomized (to reproduce it was enough to load several MRHeads, drop them under a study in one move, then invoking DICOM export on the study - the items were in random order). Now it is fixed, and the order is preserved. Code complexity also decreased slightly.

Also style fix in terminology logic, and minor fix in DICOM export dialog UI

Revision 25891  Directory Listing
Modified Wed Mar 29 20:42:01 2017 UTC (5 months, 3 weeks ago) by pinter
BUG: Subject hierarchy tree view programmatic selection setting fixed

Revision 25889  Directory Listing
Modified Wed Mar 29 15:36:06 2017 UTC (5 months, 3 weeks ago) by pinter
BUG: Delete branch dialog in SH only appears if more than one item is deleted

Revision 25888  Directory Listing
Modified Wed Mar 29 15:34:13 2017 UTC (5 months, 3 weeks ago) by pinter
ENH: Importing exported DICOM back to database is made optional

When DICOM data was exported, the written files were imported back to the database every time. It is a lengthy operation, and as it is not needed in every case, it needed to be made optional. A checkbox has been added to the export dialog, the state of which is stored in application settings to keep the option across sessions. It is off by default to make exporting fast.

Also, fixes were made in the export of the whole scene.

Revision 25884  Directory Listing
Modified Tue Mar 28 16:20:06 2017 UTC (5 months, 4 weeks ago) by pinter
ENH: Improved subject hierarchy tree view controls

- Space bar toggles visibility of selected items
- Up/down arrow keys trigger selection actions (highlighting, plugin handler member updates - this was a bug)

Revision 25883  Directory Listing
Modified Tue Mar 28 16:11:06 2017 UTC (5 months, 4 weeks ago) by pieper
BUG: superscript 2 in string in units label can cause crash

Confirmed crash on Qt5.7 on both windows and mac builds.
Crash occurred when looking up model index for node
combo box of units settings panel.  The same code
worked in Qt4, but may have been causing undetected
memory issue.  Memory corruption is strongly implicated
in the Qt5 crash because addition of debug statements would
in some cases bypass the crash.

Co-authored-by: Andras Lasso <lasso@queensu.ca>
Co-authored-by: Csaba Pinter <csaba.pinter@queensu.ca>

From: Steve Pieper <pieper@isomics.com>

Revision 25877  Directory Listing
Modified Mon Mar 27 21:57:43 2017 UTC (5 months, 4 weeks ago) by pinter
ENH: Enabled tractography labelmap option in subject hierarchy plugin

Also fixed minor issues: node names are now unique when exporting segmentation to labelmap or models from subject hierarchy, and fixed Qt slot warning in volumes SH plugin

Revision 25876  Directory Listing
Modified Mon Mar 27 20:31:48 2017 UTC (5 months, 4 weeks ago) by pinter
ENH: Added labelmap and model export options to SH for segmentations

Revision 25875  Directory Listing
Modified Mon Mar 27 18:10:20 2017 UTC (5 months, 4 weeks ago) by lassoan
ENH: Display thumbnails in SampleData module

It makes the module nicer and the button easier to hit.

Revision 25874  Directory Listing
Modified Mon Mar 27 17:45:04 2017 UTC (5 months, 4 weeks ago) by pinter
ENH: Indicate master volume in Segmentations module and make selections

A label shows the master (reference) volume in the Segmentations module under the selected segmentation node, and the combobox of the reference volume for exporting to labelmap is populated

Revision 25873  Directory Listing
Modified Mon Mar 27 03:22:02 2017 UTC (5 months, 4 weeks ago) by lassoan
ENH: Added single snapshot option to ScreenCapture

If "single" toggle button is pressed then only a single image of the current state is captured (with filename auto-increment).

Revision 25872  Directory Listing
Modified Sat Mar 25 19:54:57 2017 UTC (6 months ago) by lassoan
ENH: Reduced segmentations widget size

Hide effect options and masking section if no effect is selected.
Paint options (sphere brush, color smudge, pixel mode) are laid out horizontally instead of vertically.

Revision 25871  Directory Listing
Modified Sat Mar 25 19:54:53 2017 UTC (6 months ago) by lassoan
COMP: Move projects to correct folder in solution explorer

vtkSegmentationCoreCxxTests and qSlicerModulesCoreCxxTests projects were moved to the correct folders in solution explorer
(now they are in the same folder as the projects that they test).

Revision 25870  Directory Listing
Modified Fri Mar 24 17:05:10 2017 UTC (6 months ago) by pinter
STYLE: Indentation related changes

1. vtkMRMLNode::Indent member seemed unused in the core, except from the also unused ROI list node, so the member was removed

2. In WriteXML functions, the increasing indentation was added between the XML attributes, which did not have major effect on the top level, but for example in the scene view section, where indentation was increased, it made the nodes look like this:

  <Selection
    id="vtkMRMLSelectionNodeSingleton"    name="Selection"    hideFromEditors="true"    selectable="true"    selected="false"    singletonTag="Singleton"

As the purpose of indentation is to add space in front of the _lines_, adding that space between the XML attributes seems unnecessary. With these changes, the same entry now looks like this:

  <Selection
    id="vtkMRMLSelectionNodeSingleton" name="Selection" hideFromEditors="true" selectable="true" selected="false"

History:

In the first implementation of `WriteXML()`, the name of the node (e.g vtkMRMLModelNode.cxx) was explicitly serialized and indented in the function by explicitly using `nIndent`.
See r40 (COMP: added vtkITK and MRML libs). Code like this was used:

    vtkIndent i1(nIndent);
    of << i1 << "<Model";

    of << " id='" << this->ID << "'";
    if (this->Name && strcmp(this->Name, ""))
    {
      of << " name='" << this->Name << "'";
    }
    [...]
    if (this->Color && strcmp(this->Color, ""))
    {
      of << " color='" << this->Color << "'";
    }

Then, this approach was reviewed in r133 (ENH: more transform functionality) by systematically calling the base class implementation of WriteXML() function.

Code above was then updated like this:

   Superclass::WriteXML(of, nIndent);
   vtkIndent indent(nIndent);

   if (this->Color && strcmp(this->Color, ""))
   {
     of << indent << " color='" << this->Color << "'";
   }

This commit simplifies the XML serialization and explicitly mark `indent` parameter as deprecated.

Revision 25869  Directory Listing
Modified Fri Mar 24 15:08:12 2017 UTC (6 months ago) by pinter
ENH: Terminology default contexts selection and validator link in messages

1. Last terminology and anatomic context selections are now saved in application settings, and are selected in case terminology navigator is opened for a new segment. Thus the default segment terminology is now empty (instead of Tissue/Tissue), so that new segment can be detected.
2. Link to the context validator web app is now included in the error message that is popped up when loading user terminology or anatomic context fails

Related to https://github.com/QIICR/QuantitativeReporting/issues/150

Revision 25867  Directory Listing
Modified Fri Mar 24 01:53:16 2017 UTC (6 months ago) by lassoan
ENH: Added option in ScreenCapture module for capturing all views

Revision 25866  Directory Listing
Modified Thu Mar 23 21:59:22 2017 UTC (6 months ago) by pinter
ENH: Improved and simplified volume and labelmap visibility from subject hierarchy

Instead of the apparently hard-to-grasp way volumes and labelmaps were shown and hidden from subject hierarchy, a new and simplified way was implemented. Now if a non-labelmap volume is shown or hidden, then it is simply shown in the background layer of all slice views, replacing any background volume shown previously. Labelmaps work the same way, except on the label layer. This, besides the simplified and more robust operation, has a few advantages: 1) It doesn't use the selection node any more, meaning that its inconsistencies (http://www.na-mic.org/Bug/view.php?id=3551) are now irrelevant from this use case, 2) It was reported that show/hide changed the position of the slice views, which is now preserved, 3) Complete synchronization of actual volume visibility and visibility icon states in subject hierarchy is now achieved

Revision 25865  Directory Listing
Modified Thu Mar 23 20:48:18 2017 UTC (6 months ago) by lassoan
ENH: Made screencapture rotation axis configurable

Revision 25863  Directory Listing
Modified Thu Mar 23 17:52:04 2017 UTC (6 months ago) by pinter
ENH: Added DTI volume subject hierarchy plugin

Context menu action for interactive seeding allows users to start tractography from subject hierarchy. A second action for lablemap seeding also is created, but not shown until CLI support for segmentations is added.

Revision 25862  Directory Listing
Modified Wed Mar 22 20:19:33 2017 UTC (6 months ago) by lassoan
ENH: Made segment editor effects list customizable

editorWidget.setEffectNameOrder defines the order of effects.
If editorWidget.unorderedEffectsVisible is set to False then only those effects will be shown
that are listed in editorWidget.setEffectNameOrder.

editorWidget = slicer.modules.segmenteditor.widgetRepresentation().self().editor
editorWidget.setEffectNameOrder(['Draw', 'Scissors', 'Islands'])
editorWidget.unorderedEffectsVisible = False

Revision 25861  Directory Listing
Modified Wed Mar 22 17:09:07 2017 UTC (6 months ago) by pinter
ENH: Added option to load custom anatomical contexts for terminologies

Schema information from the json files is now also used to determine the type of the loaded context. In case of an unrecognized or missing schema, loading fails and error is logged.
Json files updated based on changes in the dcmqi repository.

Fixes https://github.com/QIICR/QuantitativeReporting/issues/150

Revision 25860  Directory Listing
Modified Wed Mar 22 16:13:03 2017 UTC (6 months ago) by jcfr
STYLE: EditorExtensionTemplate: Fix docstring typo

Changed "be come" to "become".

From: Tammy DiPrima <tammy.diprima@stonybrook.edu>

Revision 25858  Directory Listing
Modified Tue Mar 21 18:33:49 2017 UTC (6 months ago) by pinter
STYLE: Removed unnecessary error messages that clutter the log

These error messages appeared when creating charts and tables when the SH item was created, because it tried to get their visibility, but there was no chart or table view node, because no layout containing either has been used.

Revision 25857  Directory Listing
Modified Tue Mar 21 18:26:45 2017 UTC (6 months ago) by lassoan
ENH: Added helper functions to vtkSlicerSegmentationsModuleLogic

CopyOrientedImageDataToVolumeNode: create volume node from oriented image data easily
ImportLabelmapToSegmentationNode: update existing segments based on a labelmap node

Revision 25856  Directory Listing
Modified Tue Mar 21 15:46:16 2017 UTC (6 months ago) by pinter
BUG: Fixed SH node clone bug

Some data role plugins rely on node attributes and/or place in branch to determine whether the data node can be claimed. In such cases, the SH item created by the SH plugin logic could be claimed by a more generic plugin (e.g. RTDose vs Volumes) when adding the cloned node to the scene, but before attributes were copied, or item was placed in branch. By requesting plugin search after these operations, the proper plugin claims the cloned data node

Revision 25855  Directory Listing
Modified Tue Mar 21 15:42:08 2017 UTC (6 months ago) by pieper
BUG: the sense of the test was inverted, leading to crash in Qt5

This code is supposed to create a new quantity ui when
a new one is discovered, but had a missing not operator
so quantities weren't added until they later found via the
selection node.  On Qt4 this was not a problem but did
cause a crash in Qt5.

From: Steve Pieper <pieper@isomics.com>

Revision 25854  Directory Listing
Modified Tue Mar 21 15:10:11 2017 UTC (6 months ago) by pinter
BUG: Fixed crash when setting root item to SH tree before showing it

Revision 25853  Directory Listing
Modified Tue Mar 21 14:44:03 2017 UTC (6 months ago) by pinter
BUG: Fixed scene views with subject hierarchy 2.0

Some explanation besides the subject hierarchy node and scene view node changes:
1. vtkMRMLScene.cxx:1140 and 1175:
1/A) the ReferencedIDChanges map contained an invalid entry in every case, namely it associated the last created node's ID with empty string.
1/B) In the case of loading a volume, the test scene created by vtkSlicerVolumesLogic::AddArchetypeVolume assigned ID with number 1 to the volume. Then, when adding it to the main MRML scene, the old ID with number 1 was found, and the ID change was stored always from 1 to the number of the last loaded volume. This is also an invalid ID change, as no ID was changed in the scene that stored this change. First approach was to clear node ID when removing from scene, but it caused tests failing in EMSegment (due to the specific way it creates sub-scenes), and it is expected to cause problems elsewhere too. So as an alternative solution, IDs are only added to ReferencedIDChanges, when a scene is being imported or a scene view restored. It seems to be reasonable, as these are the only two use cases where the IDs of other complete scenes need to be merged to the main Slicer scene.
2. vtkMRMLSegmentationNode.cxx: This is basically reverting commit rev25625 that introduced display node copying and creation in the data node's copy. In the case of restoring the scene view, it caused a problem like this: if the segmentation node was before its display node in the snapshot scene, a new display node was created when copying the segmentation node, and so after restoring, two display nodes were present instead of one. So the segmentation was not visible. I checked other data nodes and none of the ones I looked at copy display properties in the copy function of the data node. I suggest taking care of this at the higher level, where the data node's copy is called (for example as it is done in the clone node SH plugin)

Revision 25852  Directory Listing
Modified Mon Mar 20 19:34:08 2017 UTC (6 months ago) by ihnorton
BUG: hide DMRIInstall properly, avoid assert in debug build

Revision 25848  Directory Listing
Modified Mon Mar 20 17:00:29 2017 UTC (6 months ago) by ihnorton
ENH: use wildcard filter in Data module

This allows to match any part of the name rather than requiring to type
exact phrase. So "Tens" matches "vtkMRMLDiffusionTensorVolumeNode" whereas
currently it would not match.

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25844  Directory Listing
Modified Fri Mar 17 20:02:18 2017 UTC (6 months, 1 week ago) by pinter
BUG: Restored storable criteria in parse local data plugin

The parse local data plugin by design can only work with storable nodes, because it builds the hierarchy based on the file locations found in the storage nodes. As non-storable nodes have no storage nodes, those nodes are not usable by the plugin

Revision 25837  Directory Listing
Modified Tue Mar 14 04:10:43 2017 UTC (6 months, 1 week ago) by jcfr
COMP: qMRMLSegmentEditorWidget: Remove unused BINARY_LABELMAP_VOXEL_FULL const

Reviewed-by: Andras Lasso <lasso@queensu.ca>

Revision 25836  Directory Listing
Modified Tue Mar 14 04:07:11 2017 UTC (6 months, 1 week ago) by jcfr
COMP: vtkMRMLCropVolumeParametersNode: Fix -Wunused-variable

This commit fixes the following warning:

/path/to/Slicer/Modules/Loadable/CropVolume/MRML/vtkMRMLCropVolumeParametersNode.cxx:35:20: warning: unused variable 'ROIAlignmentTransformNodeReferenceMRMLAttributeName' [-Wunused-variable]
static const char* ROIAlignmentTransformNodeReferenceMRMLAttributeName = "ROIAlignmentTransformNodeID";
                   ^

From Andras: the unused ROIAlignmentTransformNodeReferenceMRMLAttributeName
can be removed (other node references have custom node attributes defined
for backward compatibility with old scenes when node references were not
supported yet).


Reviewed-by: Andras Lasso <lasso@queensu.ca>

Revision 25835  Directory Listing
Modified Tue Mar 14 03:18:40 2017 UTC (6 months, 1 week ago) by lassoan
ENH: Allow using all nodes in subject hierarchy

At some places it was assumed that subject hierarchy can only contain nodes derived from vtkMRMLStorableNode.

Revision 25833  Directory Listing
Modified Mon Mar 13 21:33:19 2017 UTC (6 months, 1 week ago) by pinter
STYLE: Clarification of messages in subject hierarchy folder plugin

Revision 25832  Directory Listing
Modified Mon Mar 13 14:00:32 2017 UTC (6 months, 1 week ago) by jcfr
COMP: qSlicerTerminologyNavigatorWidget: Fix -Wunused-parameter warnings

This commit fixes the following warnings:

/path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx:1601:63: warning: unused parameter 'name' [-Wunused-parameter]
void qSlicerTerminologyNavigatorWidget::onNameChanged(QString name)
                                                              ^
/path/to/Slicer/Modules/Loadable/Terminologies/Widgets/qSlicerTerminologyNavigatorWidget.cxx:1617:63: warning: unused parameter 'color' [-Wunused-parameter]
void qSlicerTerminologyNavigatorWidget::onColorChanged(QColor color)
                                                              ^

Revision 25831  Directory Listing
Modified Mon Mar 13 13:58:49 2017 UTC (6 months, 1 week ago) by jcfr
COMP: qSlicerSubjectHierarchyPluginLogic: Fix -Wnull-conversion

This commit fixes the following warning:

/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qSlicerSubjectHierarchyPluginLogic.cxx:355:102: warning: implicit conversion of NULL constant to 'vtkIdType' (aka 'long long')
      [-Wnull-conversion]
      qSlicerSubjectHierarchyPluginHandler::instance()->pluginsForAddingNodeToSubjectHierarchy(node, NULL);
                                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~
                                                                                                     0

Revision 25830  Directory Listing
Modified Mon Mar 13 13:58:48 2017 UTC (6 months, 1 week ago) by jcfr
COMP: qSlicerSubjectHierarchyPluginLogic: Fix -Wunused-variable

This commit fixes the following warning:

/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qMRMLSubjectHierarchyTreeView.cxx:849:42: warning: unused variable 'mostSuitablePluginByConfidenceNumbers' [-Wunused-variable]
  qSlicerSubjectHierarchyAbstractPlugin* mostSuitablePluginByConfidenceNumbers =
                                         ^
/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qSlicerSubjectHierarchyPluginLogic.cxx:296:32: warning: unused variable 'shNode' [-Wunused-variable]
  vtkMRMLSubjectHierarchyNode* shNode = vtkMRMLSubjectHierarchyNode::GetSubjectHierarchyNode(scene);
                               ^

Reviewed-by: Csaba Pinter <csaba.pinter@queensu.ca>

Revision 25829  Directory Listing
Modified Mon Mar 13 13:00:11 2017 UTC (6 months, 1 week ago) by jcfr
STYLE: Fix style of ITK classes using KWStyle

This commit introduced the style Utilities/KWStyle/ITK.kws.xml based of
the official ITK Style.

Style was checked using the following command:

  for file in $(find . | ack-grep "\/itk.+(h|cpp|txx|cxx)$"); do
    KWStyle -gcc -xml ./Utilities/KWStyle/ITK.kws.xml $file;
  done

KWStyle was built from source: https://github.com/Kitware/KWStyle

The following errors remain:

  ./Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkAnisotropicSimilarity3DTransform.h:109: error: Internal variable (itk::Rigid3DTransform<TScalarType>::SetMatrix) doesn't match regular expression (m_[A-Z])
  ./Modules/CLI/ResampleDTIVolume/Testing/itkTestMainExtended.h:17: error: namespace not defined

Revision 25827  Directory Listing
Modified Mon Mar 13 13:00:00 2017 UTC (6 months, 1 week ago) by jcfr
STYLE: Remove double underscore in header guards (.txx & __itk*_txx form)

Used the following command:

find . \( -iname *.txx -and -type f \) -exec perl -pi -w -e 's/__itk(.*)_txx/itk$1_txx/g;' {} \;

Fixes many, but not all, clang -Wreserved-id-macro warnings.

Adapted from scripts created by Sean McBride <sean@rogue-research.com> to
update ITK and VTK code base.

Revision 25826  Directory Listing
Modified Mon Mar 13 12:59:55 2017 UTC (6 months, 1 week ago) by jcfr
STYLE: Remove double underscore in header guards (.h & __itk*_h form)

Used the following command:

find . \( -iname *.h -and -type f \) -exec perl -pi -w -e 's/__itk(.*)_h/itk$1_h/g;' {} \;

Fixes many, but not all, clang -Wreserved-id-macro warnings.

Adapted from scripts created by Sean McBride <sean@rogue-research.com> to
update ITK and VTK code base.

Revision 25825  Directory Listing
Modified Mon Mar 13 04:05:06 2017 UTC (6 months, 1 week ago) by jcfr
COMP: N4ITKBiasFieldCorrection: Fix -Wunused-variable

This commit fixes the following warning:

/path/to/Modules/CLI/N4ITKBiasFieldCorrection/N4ITKBiasFieldCorrection.cxx:172:24: warning: unused variable 'maskImageIndex' [-Wunused-variable]
  ImageType::IndexType maskImageIndex =
                       ^

Revision 25824  Directory Listing
Modified Mon Mar 13 04:05:04 2017 UTC (6 months, 1 week ago) by jcfr
BUG: vtkMRMLAnnotationNode: Fix -Wfor-loop-analysis

This commit fixes the following warning:

/path/to/Slicer/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationNode.cxx:530:20: warning: variables 'id' and 'n' used in loop condition not modified in loop body [-Wfor-loop-analysis]
  for (int i = id; id < n-1; i++ )
                   ^~   ~

Revision 25817  Directory Listing
Modified Sun Mar 12 19:44:19 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: qMRMLModelDisplayNodeWidget.cxx: Fix -Wsometimes-uninitialized

/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:483:7: warning: variable 'newMin' is used uninitialized whenever 'if' condition is false
      [-Wsometimes-uninitialized]
  if (precision != 0.0)
      ^~~~~~~~~~~~~~~~
/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:499:43: note: uninitialized use occurs here
  d->DisplayedScalarRangeWidget->setRange(newMin, newMax);
                                          ^~~~~~
/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:483:3: note: remove the 'if' if its condition is always true
  if (precision != 0.0)
  ^~~~~~~~~~~~~~~~~~~~~
/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:480:16: note: initialize the variable 'newMin' to silence this warning
  double newMin;
               ^
                = 0.0
/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:483:7: warning: variable 'newMax' is used uninitialized whenever 'if' condition is false
      [-Wsometimes-uninitialized]
  if (precision != 0.0)
      ^~~~~~~~~~~~~~~~
/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:499:51: note: uninitialized use occurs here
  d->DisplayedScalarRangeWidget->setRange(newMin, newMax);
                                                  ^~~~~~
/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:483:3: note: remove the 'if' if its condition is always true
  if (precision != 0.0)
  ^~~~~~~~~~~~~~~~~~~~~
/path/to/Slicer/Modules/Loadable/Models/Widgets/qMRMLModelDisplayNodeWidget.cxx:481:16: note: initialize the variable 'newMax' to silence this warning
  double newMax;
               ^
                = 0.0

Revision 25816  Directory Listing
Modified Sun Mar 12 19:44:17 2017 UTC (6 months, 2 weeks ago) by jcfr
BUG: vtkMRMLMarkupsNode::DeleteText(): Fix -Wfor-loop-analysis

/path/to/Slicer/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsNode.cxx:320:20: warning: variables 'id' and 'n' used in loop condition not modified in loop body [-Wfor-loop-analysis]
  for (int i = id; id < n-1; i++ )
                   ^~   ~

Revision 25814  Directory Listing
Modified Sun Mar 12 19:44:14 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: vtkMRMLMarkupsDisplayNode: Fix -Wpointer-bool-conversion

Revision 25813  Directory Listing
Modified Sun Mar 12 19:44:12 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: vtkAnnotationROIRepresentation: Fix -Wpointer-bool-conversion

Revision 25812  Directory Listing
Modified Sun Mar 12 19:44:10 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: vtkMRMLAnnotation(Point|Line)DisplayNode: Fix -Wpointer-bool-conversion

Revision 25806  Directory Listing
Modified Sun Mar 12 19:43:58 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: vtkSlicerCropVolumeLogic::CropInterpolated: Fix -Wmissing-braces

suggest braces around initialization of subobject [-Wmissing-braces]
  double outputDirectionColRow[3][3] = { 0 };
                                         ^

Revision 25805  Directory Listing
Modified Sun Mar 12 19:43:56 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: CLI/ExtractSkeleton/SkelGraph: Fix -Wmismatched-new-delete warning

Revision 25803  Directory Listing
Modified Sun Mar 12 19:43:51 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: vtkSlicerSceneViewsModuleLogic: Fix unused constant warning

This commit removes unused constant obsoleted by r23160 (ENH: html
facelift for SceneViews)

Revision 25800  Directory Listing
Modified Sun Mar 12 19:43:46 2017 UTC (6 months, 2 weeks ago) by jcfr
STYLE: Specify "this->" when invoking instance function.

Revision 25799  Directory Listing
Modified Sun Mar 12 19:43:43 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: Fix unused variable warnings

Revision 25797  Directory Listing
Modified Sat Mar 11 14:35:24 2017 UTC (6 months, 2 weeks ago) by lassoan
BUG: Fixed SegmentationsModuleTest1 test error

Revision 25793  Directory Listing
Modified Sat Mar 11 07:10:07 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: vtkSlicerSubjectHierarchyModuleLogic: Fix conversion-null warning

/home/jcfr/Projects/Slicer/Modules/Loadable/SubjectHierarchy/Logic/vtkSlicerSubjectHierarchyModuleLogic.cxx:129:12: warning: converting to non-pointer type ‘vtkIdType {aka long long int}’ from NULL [-Wconversion-null]
     return NULL;
            ^

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25792  Directory Listing
Modified Sat Mar 11 07:10:05 2017 UTC (6 months, 2 weeks ago) by jcfr
BUG: vtkSlicerAnnotationModuleLogic: Fix incorrect call to JumpAllSlices

This issue was discovered while fixing the following warning:

/path/to/Slicer/Modules/Loadable/Annotations/Logic/vtkSlicerAnnotationModuleLogic.cxx:2613:72: warning: passing NULL to non-pointer argument 2 of ‘static void vtkMRMLSliceNode::JumpAllSlices(vtkMRMLScene*, double, double, double, int, int, vtkMRMLSliceNode*)’ [-Wconversion-null]
     vtkMRMLSliceNode::JumpAllSlices(this->GetMRMLScene(), NULL, r, a, s);
                                                                        ^

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25791  Directory Listing
Modified Sat Mar 11 07:10:03 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: qMRMLModelDisplayNodeWidget.ui: Fix "already in use name" warning

/path/to/Slicer/Modules/Loadable/Models/Widgets/Resources/UI/qMRMLModelDisplayNodeWidget.ui: Warning: The name 'DisplayedScalarRangeLabel' (QLabel) is already in use, defaulting to 'DisplayedScalarRangeLabel1'.

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25790  Directory Listing
Modified Sat Mar 11 07:10:01 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: qSlicerSubjectHierarchyPluginHandler: Fix reorder warning

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25789  Directory Listing
Modified Sat Mar 11 07:09:59 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: qSlicerSubjectHierarchyFolderPlugin: Fix conversion-null warning

/path/to/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qSlicerSubjectHierarchyFolderPlugin.cxx:477:12: warning: converting ‘false’ to pointer type ‘vtkMRMLHierarchyNode*’ [-Wconversion-null]
     return false;
            ^

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25788  Directory Listing
Modified Sat Mar 11 07:09:57 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: vtkImageGrowCutSegment: Fix unused variable warnings

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25787  Directory Listing
Modified Sat Mar 11 07:09:55 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: qSlicerSegmentEditorPaintEffect_p.h: Fix reorder warning

/path/to/Projects/Slicer/Modules/Loadable/Segmentations/EditorEffects/qSlicerSegmentEditorPaintEffect_p.h:152:16: warning:   ‘qMRMLWidget* qSlicerSegmentEditorPaintEffectPrivate::ActiveViewWidget’ [-Wreorder]
   qMRMLWidget* ActiveViewWidget;
                ^

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25786  Directory Listing
Modified Sat Mar 11 07:09:54 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: qSlicerSegmentEditorPaintEffect: Fix unused-variable warning

/path/to/Slicer/Modules/Loadable/Segmentations/EditorEffects/qSlicerSegmentEditorPaintEffect.cxx:573:25: warning: unused variable ‘modifierLabelmap’ [-Wunused-variable]
   vtkOrientedImageData* modifierLabelmap = q->modifierLabelmap();
                         ^

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25785  Directory Listing
Modified Sat Mar 11 07:09:52 2017 UTC (6 months, 2 weeks ago) by jcfr
COMP: qMRMLSegmentEditorWidget: Fix sign-compare warning

/path/to/Slicer/Modules/Loadable/Segmentations/Widgets/qMRMLSegmentEditorWidget.cxx: In member function ‘void qMRMLSegmentEditorWidget::onSelectSegmentShortcut()’:
/path/to/Projects/Slicer/Modules/Loadable/Segmentations/Widgets/qMRMLSegmentEditorWidget.cxx:2505:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int segmentIndex = 0; segmentIndex < segmentIDs.size(); segmentIndex++)
                                           ^

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25783  Directory Listing
Modified Sat Mar 11 07:09:48 2017 UTC (6 months, 2 weeks ago) by jcfr
BUG: Teach 'slicer_add_python_unittest' to add module search paths

This commit allows scripted module test within extension to successfully
load dependent modules.

Fixes http://www.na-mic.org/Bug/view.php?id=4242

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25777  Directory Listing
Modified Fri Mar 10 16:46:19 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Changed invalid subject hierarchy item ID to 0 for easier checking

Revision 25774  Directory Listing
Modified Thu Mar 9 21:23:18 2017 UTC (6 months, 2 weeks ago) by pinter
BUG: Fixed issues around subject hierarchy DICOM UID references

Revision 25771  Directory Listing
Modified Wed Mar 8 20:30:39 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Allow requesting subject hierarchy owner plugin search from VTK environment

It is useful if an identifier attribute is added to the data node or the item after creation, and the developer wants a custom plugin to claim it

Revision 25768  Directory Listing
Modified Wed Mar 8 18:21:48 2017 UTC (6 months, 2 weeks ago) by pinter
BUG: Only show dialog about DICOM load warnings if the one with highest confidence logged it

Re #4347

Revision 25767  Directory Listing
Modified Wed Mar 8 15:31:53 2017 UTC (6 months, 2 weeks ago) by pinter
BUG: Fixed failing subject hierarchy generic and logic test

Revision 25762  Directory Listing
Modified Wed Mar 8 02:57:03 2017 UTC (6 months, 2 weeks ago) by lassoan
BUG: Fixed CropVolume automatic output volume creation

If input volume is non-linearly transformed then the output volume cannot be created under the same transform.
Fixed by setting the automatically created output volume's parent transform to NULL in these cases.

Revision 25761  Directory Listing
Modified Tue Mar 7 20:58:40 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Additional various minor features and bugfixes for subject hierarchy 2.0

-----------------------------------------------
Details:

BUG: Added check to prevent crash when volume show/hide fails in SH

BUG: Fixed packaging error

ENH: Moved subject hierarchy node class registration to the scene

It allows using subject hierarchy in logic tests without instantiating a dummy subject hierarchy logic class.

ENH: Added level filter option to subject hierarchy tree and combobox

ENH: Added convenience methods to subject hierarchy node

Added convenience methods in subject hierarchy node for removing the children of an item (without removing the item itself), and for getting the number of children for an item

ENH: Improved segment editor subject hierarchy plugin

New segmentation node is created if the currently selected one is not empty; Segmentation node is renamed based on the master volume; Segmentation is placed under master volume in subject hierarchy

BUG: Fixed various minor issues, addressed TODOs

Revision 25760  Directory Listing
Modified Tue Mar 7 20:55:28 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Add backward compatibility support for old scenes containing SH

New node type vtkMRMLSubjectHierarchyLegacyNode is introduced, into which the subject hierarchy nodes from old MRML scenes are loaded, so that their information can be accessed and the hierarchy reconstructed. The new subject hierarchy nodes write a subject hierarchy version node attribute into the MRML scene on exporting. Most functions of the old subject hierarchy node were removed in the legacy node, and nly those methods are kept in this node from the old one that may be necessary to extract or use information loaded into this not and are not propagated into the new hierarchy (such as UIDs). Also, nested association support is also removed (because it never became completely stable), so if a scene is loaded where a data node is associated to the subject hierarchy node using nested association, then that node will not be properly represented in the hierarchy.

Revision 25759  Directory Listing
Modified Tue Mar 7 20:54:16 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Various minor features and bugfixes for subject hierarchy 2.0

-----------------------------------------------
Details:

BUG: Update subject hierarchy item info label when item is changed

Also added missing observations for items that are created when importing the scene

ENH: Improved usability for registration subject hierarchy plugin

A Cancel action appears when right-clicking the 'from' volume that allows canceling first selection, and also explains what to do to continue with registration

ENH: Changed subject hierarchy scene separator characters to support URLs

When serializing a URL, the character ':', which is the same as one of the separators, would confuse the deserializing function

BUG: Fixed issues in subject hierarchy display visibility

The symptom was that after display visibility was set, the item was not selected, thus there was a flickering of the data node inspector. The underlying cause was that subject hierarchy node modified event was invoked from the set visibility function that updated the whole tree.
Updating the whole tree now does not happen if the node is modified. Instead, the modified event is used to indicate to the scene that the content of the node was changed in some way. Thus, subject hierarchy node modified event is invoked in case of any subject hierarchy item event.
Also the parent items' icon was not updated when the visibility of the children changed. The previously existing mechanism was reinstated in SetDisplayVisibilityForBranch.

BUG: Fixed scripted subject hierarchy plugins on Mac/Linux

ENH: Added subject hierarchy node function to get number of items

ENH: Disable showing root item by default

ENH: Subject hierarchy folder plugin edit properties works

If a folder node corresponds to a model or annotation hierarchy node, Edit properties switches to Models or Annotations, depending on the hierarchy node

Revision 25758  Directory Listing
Modified Tue Mar 7 20:52:17 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Added annotations subject hierarchy plugin

Revision 25757  Directory Listing
Modified Tue Mar 7 20:51:07 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Added subject hierarchy CLI and segmentations tests

Revision 25756  Directory Listing
Modified Tue Mar 7 20:49:59 2017 UTC (6 months, 2 weeks ago) by pinter
BUG: Fixed crash when reparenting segment under non-segmentation item

Revision 25755  Directory Listing
Modified Tue Mar 7 20:49:23 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Added subject hierarchy combo box

Revision 25753  Directory Listing
Modified Tue Mar 7 20:47:53 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Add support for model hierarchies in subject hierarchy

Handled cases:

Scene changes
-------------

1. Hierarchy node added
  -> Add folder item
     ( folderPlugin::addNodeToSubjectHierarchy )

2. New parent is set to a hierarchy node
  (Modified event for both old and new parents)
  newParent.vtkMRMLHierarchyNode::ChildNodeAddedEvent(hierarchyNode)
  -> Set parent of item for hierarchy node to item for new parent
     ( folderPlugin::onMRMLHierarchyNodeChildNodeAdded )

3. Scene import ends
  -> Add each hierarchy node to subject hierarchy and resolve hierarchy on each added item
    ( addSupportedDataNodesToSubjectHierarchy,
      folderPlugin::addNodeToSubjectHierarchy,
      resolveHierarchyForItem )

4. Data node is associated to a hierarchy node
  dataNode.vtkMRMLNode::HierarchyModifiedEvent
  (Should only happen if building hierarchy programmaticaly from scratch)
     Remove hierarchy node's item from subject hierarchy
     ( folderPlugin::onDataNodeAssociatedToHierarchyNode )

Subject hierarchy changes
-------------------------

1. Item is reparented under an item with node hierarchy
  1a. New parent has associated hierarchy node
    -> Set parent item's hierarchy node as parent of reparented item's hierarchy node
       ( folderPlugin::reparentItemInsideSubjectHierarchy )
  1b. Otherwise
    -> Set scene as parent of reparented item's hierarchy node
       ( folderPlugin::reparentItemInsideSubjectHierarchy )

Revision 25752  Directory Listing
Modified Tue Mar 7 20:47:00 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Implemented MRML scene save/import for subject hierarchy 2.0

-----------------------------------------------
Details:

STYLE: Removed commented-out items

Potentially useful code was left there commented with TODO comments. After implementing most subject hierarchy features and deciding they will not be needed, they were removed

ENH: DICOM export works

ENH: Updated subject hierarchy python tests

BUG: Fix various issues with segment handling in subject hierarchy

ENH: Merge subject hierarchies and resolve IDs after scene import

ENH: Subject hierarchy scene write added, MRML can be considered final

Revision 25751  Directory Listing
Modified Tue Mar 7 20:44:02 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Added long needed basic features made possible by new subject hierarchy design

- Re-ordering and expanded state are saved in the items, and restored on update
- Root item handling
- Subject hierarchy python scripted plugins
- Various bugfixes related to the above features and subject hierarchy core

-----------------------------------------------
Details:

BUG: Fixed subject hierarchy tree root item handling

ENH: Re-select items after drag&drop in subject hierarchy

BUG: Fixed subject hierarchy Register plugin

BUG: Fixed subject hierarchy reordering

It failed when an item was moved up not down

BUG: Fixed issues related to deleting subject hierarchy items

Also fixed the feature in DICOM plugin for converting folders into patients and studies

BUG: Fixed segmentation reparenting and visibility icon updates in SH

BUG: Fixed show/hide in subject hierarchy

ENH: Simplified creating subject hierarchy items

Instead of the Swiss army knife function that could be used to create subject hierarchy items for both data nodes and hierarchies (folder, study, etc.) there are two separate methods for CreateItem. One for creating the pure hierarchy items (folder etc.) and the other for the ones corresponding to data nodes. The latter is for internal use and should not be called.

Also fixed basic DICOM loading

ENH: Deploy scripted plugin in SubjectHierarchyPlugins folder

Previous commit deployed them in individual folders, but for consistency and simplicity, a common folder is better. It is achieved by having the __init__ script import all plugin python files dynamically

ENH: Added python scripted subject hierarchy plugins

For SegmentEditor (that replaces the core SegmentPlugin) and SegmentStatistics. Both are mostly sample plugins, to demonstrate how to write scripted plugins, and as a proof of concept for multiple scripted plugins built.
The reason why SegmentEditorSubjectHierarchyPlugins subfolder was chosen for source and install path: 1. If the plugin is added with the module file, it is attempted to be recognized as a module and will throw error 2. If a common SubjectHierarchyPlugins folder is created in each module having a scripted plugin, the __init__ files are not merged, but the last one overwrites the previous ones, and only one plugin is exposed.

ENH: Added subject hierarchy item info in SH module widget

It contains a label that displays the item's self print string.
Level and owner plugin info was removed from the tooltip, as the info box shows that, and it's not needed for normal usage (mostly for debugging)

BUG: Root item restored after complete subject hierarchy update

ENH: Subject hierarchy item expanded state handling added

BUG: Prevent crash when closing Slicer

BUG: Allow dropping subject hierarchy items on empty area

In which case it is reparented under the scene

ENH: Added item reordering support

Also fixed model update when item is reparented programmatically

Revision 25750  Directory Listing
Modified Tue Mar 7 20:37:27 2017 UTC (6 months, 2 weeks ago) by pinter
BUG: Initial bugfixes in subject hierarchy 2.0

-----------------------------------------------
Details:

BUG: Fixed item drag&drop in subject hierarchy tree

Implemented PrintSelf for subject hierarchy node

BUG: Enable python wrapping of SH functions by changing the ID type

The typedef that mapped vtkIdType to SubjectHierarchyItemID was not propagated to python, so the functions that had such an argument were not wrapped. Now vtkIdType is used directly instead.

Qt functions having vtkIdType arguments still cannot be called from python. Error similar to the one below occurs:
"ValueError: Called setRootItem(vtkIdType itemID) with wrong arguments: (0,)"

BUG: Plugin ownership, selection, context menu, and reparenting related fixes

BUG: Scene closing related fix and other small fixes

BUG: Basic fixes in refactored subject hierarchy

Revision 25749  Directory Listing
Modified Tue Mar 7 20:32:06 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Created single-node subject hierarchy mechanism, updated modules to build using it

-----------------------------------------------
Details:

ENH: Updated remaining classes. Build succeeds

ENH: Update subject hierarchy plugins and fix build errors

ENH: Subject hierarchy core builds alright

ENH: Updated SH tree view

Also moved model classes back to the module because they use SH specific functions (logic, etc.)

ENH: Updated SH proxy model and progress with new tree view

ENH: Automatic subject hierarchy creation and event processing

ENH: Subject hierarchy logic and plugin handler updated

to use new node and items

ENH: Added new subject hierarchy model WIP

New qMRMLSubjectHierarchyModel class added that will use the new subject hierarchy node for the data model. Removed AutoCreateSubjectHierarchy option from application settings, as it won't be needed with the new model in place. Subject hierarchy abstract plugin updated for new subject hierarchy node and items.

Remaining tasks: Subject hierarchy logic, all plugin classes, tree view, CLI support, extensions using SH, new SH features (model hierarchy support, reordering, expand state preservation, filtering in tree view by name)

ENH: Re-wrote vtkMRMLSubjectHierarchyNode to contain the whole tree WIP

The new subject hierarchy node contains the whole tree instead of representing an item in the tree. The advantages:
- No node duplication for the data nodes, only one extra node is in the scene. This means that SH can be turned on by default, so the extra step of enabling it will not be necessary
- No nested associations to support multiple types of hierarchies (mainly model hierarchy). Subject hierarchy will be able to co-exist with other hierarchies more easily, and those hierarchies can be imported into SH, so for example atlases can be used from SH
- Option to re-order nodes in the tree
- No subject hierarchy postfix in node names, thus decreased complexity and chance for error

Revision 25748  Directory Listing
Modified Tue Mar 7 20:23:14 2017 UTC (6 months, 2 weeks ago) by pinter
ENH: Removed unused OwnerPluginChanged event from SH

The event gave the chance to the old and new subject hierarchy plugin of a node to take steps when switching between owner plugins, but no plugin used it. Removing to decrease clutter before refactoring

Revision 25747  Directory Listing
Modified Mon Mar 6 15:49:03 2017 UTC (6 months, 2 weeks ago) by lassoan
ENH: Set segment editor length spinbox step size based on volume spacing

Step size in millimeter value selectors for margin effect and smoothing effect is set based on output volume spacing.
This makes it easier to set values for volumes with very small or very large spacing.

Revision 25746  Directory Listing
Modified Mon Mar 6 15:49:00 2017 UTC (6 months, 2 weeks ago) by lassoan
ENH: Improved segment order in split to islands effect result

Updated Segment editor / Islands effect / Split to segments so that the new segments are
inserted into the segmentation right after the segment that was split.

Revision 25745  Directory Listing
Modified Mon Mar 6 15:48:56 2017 UTC (6 months, 2 weeks ago) by lassoan
BUG: Fixed segmentation undo/redo to preserve segment order

Revision 25743  Directory Listing
Modified Fri Mar 3 06:21:28 2017 UTC (6 months, 3 weeks ago) by lassoan
ENH: Added test for SegmentStatistics, fixed CSV export

Revision 25742  Directory Listing
Modified Wed Mar 1 20:25:41 2017 UTC (6 months, 3 weeks ago) by pinter
ENH: Added option to load terminology json files from GUI

The loaded json file is copied to the settings directory, from where it is automatically loaded at startup

Revision 25740  Directory Listing
Modified Wed Mar 1 18:59:49 2017 UTC (6 months, 3 weeks ago) by lassoan
BUG: Fixed duplicate items in DICOM plugin advisor

The same extensions and data types were reported several times.

Revision 25738  Directory Listing
Modified Wed Mar 1 18:59:43 2017 UTC (6 months, 3 weeks ago) by lassoan
COMP: Fixed build warning

Revision 25737  Directory Listing
Modified Wed Mar 1 18:59:40 2017 UTC (6 months, 3 weeks ago) by lassoan
BUG: Fixed Island effect split method

Island effect split method was failing on linux and mac because vtkITKIslandMath filter does not work with long input scalar type on linux and mac

Revision 25735  Directory Listing
Modified Wed Mar 1 16:58:44 2017 UTC (6 months, 3 weeks ago) by pinter
BUG: Removed Apply button from draw effect

The Apply button did not work after closing scene. It could have been fixed by keeping track of the slice view on which the user drew last and then call apply on that pipeline, but we decided to remove the Apply button instead, and force the user to use the much simpler mouse right button and Enter key shortcuts

Revision 25734  Directory Listing
Modified Tue Feb 28 17:42:01 2017 UTC (6 months, 3 weeks ago) by pieper
ENH: #4347 add confirmation dialog loading dicom with warnings

Only display the dialog in non-advanced mode since the warnings
are already visible to the user in advanced mode.

From: Steve Pieper <pieper@isomics.com>

Revision 25730  Directory Listing
Modified Sun Feb 26 21:47:15 2017 UTC (6 months, 4 weeks ago) by lassoan
ENH: Improved segment editor GUI

* Show effect name in toolbar by default: it makes effects easier to recognize (especially on HiDPI screens). Style can be changed by calling setEffectButtonStyle method.
* Auto-complete effect is split to two effects: grow from seeds, fill between slices (based on feedback of several users).
* Scissors effect uses radio buttons

Revision 25729  Directory Listing
Modified Sun Feb 26 15:10:16 2017 UTC (6 months, 4 weeks ago) by lassoan
ENH: Removed false positive error message

Setting an empty labelmap in a segment is a valid operation, no need to report it as an error.
Now logged at debug level instead.

Revision 25725  Directory Listing
Modified Fri Feb 24 15:33:37 2017 UTC (7 months ago) by pinter
BUG: Proper cleanup when exiting in case layout is destroyed before module

Update of fix in rev25723

Revision 25723  Directory Listing
Modified Thu Feb 23 22:34:46 2017 UTC (7 months ago) by pinter
BUG: Fixed crash when restarting Slicer after using paint effect in Segment Editor

Revision 25721  Directory Listing
Modified Thu Feb 23 15:56:14 2017 UTC (7 months ago) by lassoan
ENH: Added endoscope orientation computation into Endoscopy module

It is now possible to show a tool (not just a fiducial point) or reslice the volume using
VolumeResliceDriver at the endoscope tip position.

Revision 25717  Directory Listing
Modified Tue Feb 21 23:33:53 2017 UTC (7 months ago) by lassoan
ENH: Made segment labelmap export available from Python

Revision 25716  Directory Listing
Modified Tue Feb 21 22:27:01 2017 UTC (7 months ago) by johan.andruejol
BUG: Remove duplicate event in vtkMRMLTransformDisplayableManager 2D and 3D

vtkMRMLDisplayableNode::TransformModifiedEvent is the same event as the
vtkMRMLTransformableNode::TransformModifiedEvent.

Revision 25715  Directory Listing
Modified Tue Feb 21 16:38:22 2017 UTC (7 months ago) by lassoan
ENH: Moved shortcut and lightbox helper functions into segment editor widget

installKeyboardShortcuts, uninstallKeyboardShortcuts, turnOffLightboxes helper functions were previously implemented in SegmentEditor module,
but they are very commonly needed, therefore it is better to make it available in the segment editor widget where other modules can access them.

Also slightly changed the effect selector shortcuts: keys 1, 2, ...0 selects one of the first ten effects. If the selected effect is already
active then the select gets deactivated. This is useful to be able to quickly disable and re-enable an effect, for example, when there is a need
to rotate a 3D view while using the scissors effect.

Revision 25714  Directory Listing
Modified Tue Feb 21 16:35:49 2017 UTC (7 months ago) by lassoan
ENH: Removed unused whitespace in segment editor effect list

Revision 25712  Directory Listing
Modified Sun Feb 19 03:47:44 2017 UTC (7 months ago) by lassoan
ENH: Segment Editor paint brush size can be fixed in screen coordinates

Similarly to Blender's sculpting tools, Segment Editor's paint effect brush size is now by default defined in screen coordinates.
This way when the user zooms in the view, the brush absolute size decreases.

Also added Shift+MouseWheel shortcut to change brush size.

Revision 25709  Directory Listing
Modified Thu Feb 16 13:58:14 2017 UTC (7 months, 1 week ago) by jcfr
BUG: DataProbe: Facilitate integration in custom view

Facilitate integration of DataProbe in custom view by
explicitly checking with the parent frame has the
expected attributes.

It prevent the processEvents from throwing errors because
there exists not _text_ attribute on the parent.

The change checks for the attribute _text_ and executes
the code only when the attribute exists.

This change is backward compatible.

Tested-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Joshy Cyriac <j.cyriac@gmail.com>

Revision 25708  Directory Listing
Modified Wed Feb 15 05:40:50 2017 UTC (7 months, 1 week ago) by lassoan
ENH: Removed unnecessary warning log in crop volume module

Revision 25707  Directory Listing
Modified Wed Feb 15 00:29:35 2017 UTC (7 months, 1 week ago) by lassoan
ENH: Added more input node checks to crop volume module

Now check and auto-fix is available for parameter node, input volume node, and input ROI node.

Revision 25705  Directory Listing
Modified Sun Feb 12 16:17:09 2017 UTC (7 months, 1 week ago) by lassoan
ENH: Allow finer volume rendering offset adjustment

When MRI, US, or other volume with small scalar range is selected then volume rendering offset slider jumps in too big steps.

Fixed by taking into account both the volume's and the transfer function's range when computing slider resolution and range.

Revision 25704  Directory Listing
Modified Sat Feb 11 20:37:52 2017 UTC (7 months, 1 week ago) by jcfr
BUG: fix DICOMDiffusionPlugin issues

- confidence is too high: non-DWI GE scans can have these tags set, no way to discriminate.
- set loadable.selected so that matches will actually be loadable
- check the first three volumes because some (Siemens) scans won't have some tags for b0 volume.

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25702  Directory Listing
Modified Fri Feb 10 23:32:54 2017 UTC (7 months, 1 week ago) by pieper
ENH: fix typo in Auto-complete help text

From: Steve Pieper <pieper@isomics.com>

Revision 25699  Directory Listing
Modified Wed Feb 8 18:30:24 2017 UTC (7 months, 2 weeks ago) by jcfr
ENH: UI for transform interaction

From: Johan Andruejol <johan.andruejol@kitware.com>

Revision 25698  Directory Listing
Modified Wed Feb 8 18:30:22 2017 UTC (7 months, 2 weeks ago) by jcfr
ENH: Interaction for transform node

The transform will automatically be centered around whatever objects
it transforms at the moment when the TransformUpdateEditorBoundsEvent is
invoked. This is more intuitive to the user as it looks as if the object under
the transform itself is moved/scaled/translated.
When no object is present, the transform is just scaled to facilitate
interaction with it.

Testing is added to ensure that:
 - The widget holds correctly the objects it will transform. Furthermore this
test is perfomed with models to extend the coverage as transform interaction
can theoritically deal with any vtkMRMLDisplayableNode.
 - Testing for interacting with transforms with parents
 - Serialization and deserialization of the scene

The transform interaction is only valid linear transforms

From: Johan Andruejol <johan.andruejol@kitware.com>

Revision 25697  Directory Listing
Modified Wed Feb 8 18:30:18 2017 UTC (7 months, 2 weeks ago) by jcfr
BUG: Fix sample data method downloadAbdominalCTVolume

From: Johan Andruejol <johan.andruejol@kitware.com>

Revision 25696  Directory Listing
Modified Wed Feb 8 18:30:16 2017 UTC (7 months, 2 weeks ago) by jcfr
ENH: Add GetNodeBounds to return untransformed bounds of node

Also add a vtkSlicerTransformLogic method that get the bounds of a list of
nodes.

From: Johan Andruejol <johan.andruejol@kitware.com>

Revision 25695  Directory Listing
Modified Wed Feb 8 18:30:10 2017 UTC (7 months, 2 weeks ago) by jcfr
ENH: Add static method to get all nodes transformed by a tranform node

From: Johan Andruejol <johan.andruejol@kitware.com>

Revision 25693  Directory Listing
Modified Wed Feb 8 04:55:06 2017 UTC (7 months, 2 weeks ago) by lassoan
ENH: Improved Crop Volume module

While assisting many users in learning segmenting using Segment Editor, it turned out that Crop Volume module is an essential pre-processing tool for segmentation. Either for reducing size of large volumes (cropping/downsampling) or allowing better segmentation of structures that are comparable to the voxel size (cropping/upsampling).

Crop Volume had many limitations, all of them fixed in this pull request:
* Cropping of transformed or non-axis aligned volumes and ROIs was very limited (input volume was not allowed to be transformed, non-linear transforms were not allowed) - now interpolated cropping allows linear transforms of any volumes or ROIs, input volume can even be non-linearly transformed
* No output volume was selectable (this was unlike all other modules in Slicer and it often lead to creating several unneeded output volumes when experimenting with cropping parameters) => now output volume can be specified (if not specified then it is created automatically)
* If inconsistency was found (e.g., misaligned ROI and input volume for voxel-based cropping) then a popup was displayed and users' node selections were reverted, which often disrupted user's workflow (for example, it was not possible to switch input volume and then switch to corresponding ROI because after switching input volume there was a temporary inconsistency that the module wanted to resolve immediately) => now when there is any inconsistency, an error message is displayed and Apply button is disabled; the user can either resolve inconsistencies by selecting different nodes, changing transforms, or clicking the Fix button to automatically resolve all inconsistencies by changing/aligning transforms
* It was tedious to initialize ROI to include the entire volume (e.g., when the goal was to decrease resolution or crop only on one side) => now a ROI auto-fit button is available
* Meaning of "Input spacing scaling constant" parameter was not clear (is it an absolute spacing value or a factor relative to current spacing; what value increases/decreases the resolution) and it was often difficult to predict how large the cropped output volume will be without actually performing the cropping. => now in the Volume information section users can immediately see what the size and resolution of the cropped volume will be
* Cropping of large volumes required lots of memory (voxel-based cropping created extra unnecessary temporary vtkImageData objects; interpolated cropping created an unnecessary reference volume, instead of just specifying output volume geometry using CLI arguments) => no unnecessary images are created now
* Spacing was not computed correctly for volumes where the order of axes were permuted (for example in MRHead sample) => axes between input and output volumes are now correctly matched

Revision 25691  Directory Listing
Modified Tue Feb 7 00:32:58 2017 UTC (7 months, 2 weeks ago) by lassoan
BUG: Fixed typo introduced in last commit

Revision 25690  Directory Listing
Modified Mon Feb 6 21:45:07 2017 UTC (7 months, 2 weeks ago) by lassoan
BUG: Prevent ITK from crashing after reading TPS transform

ITK crashes if the loaded transform contains TPS transform, as it
requires manual initialization (calling of ComputeWMatrix).

This error was reported in 2011 (http://public.kitware.com/pipermail/insight-users/2011-September/042419.html)
but no action was taken by the ITK community. BRAINS toolkit applies a workaround to call ComputeWMatrix manually.
Therefore, we apply a similar workaround here.

Also changed default transform file extension to .h5 to allow passing composite transforms.

Revision 25686  Directory Listing
Modified Mon Feb 6 21:44:56 2017 UTC (7 months, 2 weeks ago) by lassoan
ENH: Added vtkSlicerVolumesLogic::CloneVolumeGeneric cloning any volume

The old vtkSlicerVolumesLogic::CloneVolume method (that only supported cloning of scalar volumes)
is now obsolete but kept it for backward compatibility.

Revision 25683  Directory Listing
Modified Mon Jan 30 18:44:06 2017 UTC (7 months, 3 weeks ago) by pinter
BUG: Fixed intermittent memory issue in terminologies

When loading a terminology context from segment descriptor, the Json array that holds recommended color of the last segment was sometimes deleted from memory, and parsing those values became undeterministic (invalid value or crash).
With the color array deep copied using the correct Json document object as allocator, the issue is fixed.

Revision 25680  Directory Listing
Modified Sat Jan 28 14:21:43 2017 UTC (7 months, 3 weeks ago) by pinter
COMP: Attempt to fix clang build error in rapidjson

Revision 25677  Directory Listing
Modified Fri Jan 27 17:19:44 2017 UTC (7 months, 3 weeks ago) by pinter
BUG: Fixed terminology segment descriptor double loading bug

The context became empty when loading the same descriptor file twice

Revision 25676  Directory Listing
Modified Fri Jan 27 15:57:44 2017 UTC (7 months, 4 weeks ago) by pinter
BUG: Fixed memory management issue in terminologies

that occurred when loading from segment descriptor file. Hopefully this also fixes the clang build error.
More fix needed to enable loading descriptor file more than once without error (but I decided to commit early to see if it builds on Mac now)

Revision 25673  Directory Listing
Modified Fri Jan 27 00:01:20 2017 UTC (7 months, 4 weeks ago) by pinter
BUG: Fixed loading of segmentation descriptors into terminologies

Regression was due to switch to RapidJson. The way objects are created is quite different from how JsonCpp does it.

Revision 25672  Directory Listing
Modified Thu Jan 26 23:43:09 2017 UTC (7 months, 4 weeks ago) by lassoan
BUG: Fixed picking of markups in 3D view

Hidden markups may prevent picking of visible markups. A similar fix has been integrated for slice views
(https://github.com/Slicer/Slicer/pull/179/files) but 3D views were missed.

Revision 25671  Directory Listing
Modified Thu Jan 26 15:29:43 2017 UTC (7 months, 4 weeks ago) by pinter
BUG: Fixed crash when selecting terminology context

Fixes #4331

Revision 25670  Directory Listing
Modified Wed Jan 25 21:28:10 2017 UTC (7 months, 4 weeks ago) by lassoan
ENH: Made DICOM loading more robust

Exceptions thrown from DICOM plugin load are caught in the DICOM widget and reported properly
(before the fix any error in a DICOM plugin during loading made the progress bar to hang indefinitely).

Revision 25667  Directory Listing
Modified Tue Jan 24 22:23:17 2017 UTC (8 months ago) by agirault
STYLE: Update ModelsModule contributors & acknowledgement

Revision 25665  Directory Listing
Modified Tue Jan 24 22:23:13 2017 UTC (8 months ago) by agirault
ENH: Improve MRML Model tests

Revision 25664  Directory Listing
Modified Tue Jan 24 22:23:11 2017 UTC (8 months ago) by agirault
ENH: Add Thresholding for vtkMRMLModelDisplayNode

Revision 25663  Directory Listing
Modified Tue Jan 24 22:23:09 2017 UTC (8 months ago) by agirault
ENH: Consolidate AutoScalarRange & ScalarRangeFlag

AutoScalarRange - in vtkMRMLDisplayNode -  would define if the
ModelDisplayNode would reset its ScalarRange to map the range
of the mesh active scalar or not (manually set by the user).

ScalarRangeFlag - in vtkMRMLDisplayNode - would define if the
ModelDisplayableManager would map scalar range based on the
active scalar if UseDataScalarRange (same that AutoScalarOn),
would use the DataType range if UseDataTypeScalarRange, would
use the color node lookup table range if UseColorNodeScalarRange,
or would use the display node scalar range (aka its OWN range
defined by AutoScalarRange value) if UseDisplayNodeScalarRange.

To consolidate those two class members which show redundancies,
they are replaced by a unique ScalarRangeFlag which can take the
following values:
* UseManualScalarRange (new, equivalent to AutoScalarRangeOff)
* UseDataScalarRange (as previously, equivalent to AutoScalarRangeOn)
* UseColorNodeScalarRange (as previously)
* UseDataTypeScalarRange (as previously)
Note the removal of `UseDisplayNodeScalarRange`.

For backward compatibility, the AutoScalarRange API is conserved
and wraps Set/GetScalarRangeFlag.

The range update based on this ScalarRangeFlag is then made in
vtkMRMLModelDisplayNode::UpdateMeshPipeline instead of
vtkMRMLModelDisplayableManager::SetModelDisplayProperty, which
simplifies greatly the code in the displayable manager by only
calling `mapper->SetScalarRange(modelDisplayNode->GetScalarRange())`,
and allows that call in vtkMRMLModelSliceDisplayableManager to
now return the correct range based on that option.

vtkMRMLModelSliceDisplayableManager is also updated to instantiate
the vtkMapper in a similar way than it is made in the 3D displayable
manager for visualization consistency (deep copy of the lut, etc...)

Revision 25660  Directory Listing
Modified Tue Jan 24 22:23:02 2017 UTC (8 months ago) by agirault
ENH: Add volumetric mesh support in vtkMRMLModelNode

See: https://www.na-mic.org/Wiki/index.php/2017_Winter_Project_Week/Support_for_volumetric_meshes

Update vtkMRMLModelNode to store a vtkPointSet instead of a
vtkPolyData. vtkPointSet can be a base class for vtkPolyData
(surface mesh) as well as vtkUnstructuredGrid (volumetric mesh).

The safest way to know if the mesh is unstructuredGrid is to
check if `vtkMRMLModelNode::GetUnstructuredGrid()` is not NULL,
but since it requires to update the pipeline, vtkMRMLModelNode
also has a member variable called `MeshTypeHint`.

For backward compatibility, keep the public polydata-based API
and wrap around the mesh-based API in vtkMRMLModelNode and
vtkMRMLModelDisplayNode.

Update vtkMRMLModelDisplayNode, vtkMRMLModelDisplayableManager,
vtkMRMLModelSliceDisplayableManager, and qMRMLModelDisplayNodeWidget
to use the mesh-based API by default.

Revision 25659  Directory Listing
Modified Tue Jan 24 19:36:15 2017 UTC (8 months ago) by lassoan
BUG: Fixed multiple Extension Wizard errors

* ExtensionWizard often failed to create an extension (due to not being able to detect repository)
* Metadata editing result of a new extension was not saved
* __init__.py file was offered to be loaded as a module

Revision 25658  Directory Listing
Modified Tue Jan 24 16:41:57 2017 UTC (8 months ago) by jcfr
BUG: LabelStatistics: Fix uninitialized variable error

if there is no ```self.colorNode``` defined (it is None) in
```LabelStatisticsLogic```, the columnIndex variable is never initialized

From: Kevin Mader <kmader@users.noreply.github.com>

Revision 25656  Directory Listing
Modified Tue Jan 24 05:52:19 2017 UTC (8 months ago) by jcfr
STYLE: SliceViewAnnotations: Fix typo in variable name

scalarBarEnalbeCheckBox had enable spelled incorrectly (it
was spelled correctly in the underlying panel)

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Kevin Mader <kmader@users.noreply.github.com>

Revision 25653  Directory Listing
Modified Tue Jan 24 02:40:50 2017 UTC (8 months ago) by jcfr
STYLE: Fix unused variable warnings

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25650  Directory Listing
Modified Mon Jan 23 21:01:01 2017 UTC (8 months ago) by agirault
ENH: Improve UpdateDisplayNodeFromVolumeNode

When using this method, one would think that if the displayNode already
has a volume property node and a region of interest node, no other node
will be created. This change makes the method behave that way and gets
rid of the method overload.

Co-Authored-by: Julien Finet <julien.finet@kitware.com>

Revision 25648  Directory Listing
Modified Mon Jan 23 15:56:59 2017 UTC (8 months ago) by pinter
BUG: Fixed terminology widget usability issues

- Added support for changing selection with keyboard (up/down)
- Fixed type table enabled state after being empty due to search term
- Generated name can be empty, so previous name is longer shown in case of invalid selection (such as when changing category and type is not yet selected)

Revision 25645  Directory Listing
Modified Sat Jan 21 18:34:41 2017 UTC (8 months ago) by lassoan
COMP: Fixed vtkSlicerCLIModuleLogic build error on linux

Revision 25644  Directory Listing
Modified Fri Jan 20 04:18:47 2017 UTC (8 months ago) by lassoan
ENH: Use RapidJSON instead of JsonCPP in Terminologies module logic

RapidJSON is magnitudes faster than JsonCPP (https://github.com/miloyip/nativejson-benchmark).
This is important, because when terminologies (rather large json documents) are parsed/searched/modified then each operation may take hundreds of milliseconds
with JsonCPP. Multiple calls easily accumulate to user-perceivable delays (magnitude of seconds). By keep using JsonCPP we would constantly have to
optimize number of logic calls to make sure only json access is minimized. Also, JsonCPP was unbearably slow in debug mode in Windows (simple operations took
tens of seconds).

To minimize development time and optimize speed we switch to RapidJSON instead. RapidJSON's advantages compared to jsoncpp (https://github.com/miloyip/nativejson-benchmark):
* Magnitudes faster, also, its API facilitates writing efficient application code
* CMake-ified
* Header-only (no need to install DLLs, ...)
* More conform to json standard
* Library is much smaller (31k vs 243k)

Revision 25641  Directory Listing
Modified Wed Jan 18 13:40:39 2017 UTC (8 months ago) by lassoan
ENH: Add further rules to DICOM patcher module

Added a rule to change DCMTK's private storage SOP class UID to CT storage,
because files with unknown (private) class UID are rejected by ITK's GDCM DICOM reader.

It is now possible to force patient name and IDs to be the same for all files in a directory
(disabled by default).

Revision 25640  Directory Listing
Modified Wed Jan 18 13:37:31 2017 UTC (8 months ago) by lassoan
BUG: Fixed potential DICOM extension recommendation in DICOMWidgets.py

extensionsToOffer.add method does not exist, need to use append instead

Revision 25638  Directory Listing
Modified Thu Jan 12 20:24:24 2017 UTC (8 months, 1 week ago) by lassoan
BUG: Fixed display of labelmaps exported from segmentation

Labelmaps exported from segmentation had an opaque black background.
Color table was fixed to have fully transparent background.

Revision 25637  Directory Listing
Modified Thu Jan 12 20:24:21 2017 UTC (8 months, 1 week ago) by lassoan
ENH: Updated SegmentEditorAutoCompleteEffect documentation

Revision 25635  Directory Listing
Modified Thu Jan 12 18:53:53 2017 UTC (8 months, 1 week ago) by pinter
BUG: Fixed performance issue when show/hide segment

Terminology tooltip was unnecessarily updated, which slowed down show/hide.

Revision 25634  Directory Listing
Modified Thu Jan 12 17:28:09 2017 UTC (8 months, 1 week ago) by pinter
ENH: Added a function to easily load lists of series by UID
without having to manually create a dicomWidget object. Also changing the loadPatientByUID object to use the new function.

Integrated https://github.com/Slicer/Slicer/pull/643
From: Kevin Mader <https://github.com/kmader>

Revision 25633  Directory Listing
Modified Fri Jan 6 17:28:59 2017 UTC (8 months, 2 weeks ago) by fedorov
ENH: simplify the code handling DICOM db directory

Also use os.makedirs() in place of os.mkdir()

Revision 25632  Directory Listing
Modified Fri Jan 6 17:28:55 2017 UTC (8 months, 2 weeks ago) by fedorov
BUG: fix runtime error related to creation of DICOM database directory

In some situations, user settings may point to a temporary directory with multiple
nesting levels, which cannot be created by os.mkdir().

To solve the issue, when exception occurs, fall back to creating the DICOM DB
directory in the default location.

Also fix a typo for the name of the DICOM DB location in developer mode.

Revision 25630  Directory Listing
Modified Thu Jan 5 15:32:28 2017 UTC (8 months, 2 weeks ago) by lassoan
ENH: Disable full connectivity in segment editor island effect

It is usually more intuitive if islands are considered to be disconnected when only corners are touching.

Revision 25629  Directory Listing
Modified Sat Dec 31 02:48:55 2016 UTC (8 months, 3 weeks ago) by lassoan
ENH: Consolidated island editor effects

Islands effect can now keep largest, remove small islands, split them to segments; or add/remove/keep selected segment (at click position).

Revision 25628  Directory Listing
Modified Thu Dec 29 18:11:48 2016 UTC (8 months, 3 weeks ago) by lassoan
ENH: Improved performance of paint and erase effect

Painting is faster now (especially when there are several segments and the master volume is relatively large).

Revision 25627  Directory Listing
Modified Thu Dec 29 18:11:40 2016 UTC (8 months, 3 weeks ago) by lassoan
ENH: Flood filling performs recoloring instead

Revision 25621  Directory Listing
Modified Thu Dec 22 21:19:56 2016 UTC (9 months ago) by lassoan
BUG: Fixed error message in segment editor threshold effect deactivation

Revision 25619  Directory Listing
Modified Wed Dec 21 17:48:48 2016 UTC (9 months ago) by lassoan
ENH: Added option to hide segments from segments table

Revision 25611  Directory Listing
Modified Thu Dec 15 02:32:59 2016 UTC (9 months, 1 week ago) by lassoan
ENH: DICOM Browser implementation as window, dialog, dock

- window mode:
  - DICOM Browser lost behind mainWindow user can just
    click on DCM icon for bringing it to the front
- DICOMWidget:
  - added setter/getter for widget type
- new mixin class: SizePositionSettingsMixin
  - saving/restoring dialog size and position
  - used for DICOM Browser and DICOMHeaderPopup
- taking care of z window ordering

Revision 25610  Directory Listing
Modified Wed Dec 14 18:17:58 2016 UTC (9 months, 1 week ago) by pinter
ENH: Default segment names and terminologies; changed terminology selector layout

By default segments get consecutive colors from the generic anatomy color table, Tissue/Tissue terminology entry, and the same name as before (Segment_N). They now store whether name and color are automatically generated, and the auto-generated values only override these values if they were not manually changed.
Terminology selector layout has been changed, and name field added on the bottom.

Revision 25609  Directory Listing
Modified Wed Dec 14 02:46:22 2016 UTC (9 months, 1 week ago) by lassoan
ENH: Added DICOMPatcher module for fixing up DICOM files before importing

Revision 25602  Directory Listing
Modified Thu Dec 8 22:37:51 2016 UTC (9 months, 2 weeks ago) by jcfr
STYLE: qSlicerSegmentEditorScissorsEffect: Fix "unused-variable" warning

This commit fixes this warning:

/path/to/Slicer/Modules/Loadable/Segmentations/EditorEffects/qSlicerSegmentEditorScissorsEffect.cxx:376:16: warning: unused variable ‘position’ [-Wunused-variable]
         double position[3] = { 0 };
                ^

Revision 25601  Directory Listing
Modified Thu Dec 8 22:37:49 2016 UTC (9 months, 2 weeks ago) by jcfr
STYLE: qSlicerSegmentEditorPaintEffect: Fix "pointer-arith" warning

This commit fixes this warning:

/path/to/Slicer/Modules/Loadable/Segmentations/EditorEffects/qSlicerSegmentEditorPaintEffect.cxx:614:78: warning: NULL used in arithmetic [-Wpointer-arith]
   if (this->BrushToWorldOriginTransformer->GetNumberOfInputConnections(0) == NULL || q->integerParameter("BrushPixelMode"))

Revision 25600  Directory Listing
Modified Thu Dec 8 22:37:48 2016 UTC (9 months, 2 weeks ago) by jcfr
STYLE: qSlicerSegmentEditorAbstractEffect: Fix "reorder" warnings

This commit fixes warnings like this one:

qSlicerSegmentEditorAbstractEffect.h:377:61: warning: ‘qSlicerSegmentEditorAbstractEffect::d_ptr’ will be initialized after [-Wreorder]
   QScopedPointer<qSlicerSegmentEditorAbstractEffectPrivate> d_ptr;
                                                             ^

Revision 25598  Directory Listing
Modified Thu Dec 8 22:22:11 2016 UTC (9 months, 2 weeks ago) by jcfr
STYLE: SegmentEditorPaintEffect: Minor simplification to ease code reading

Revision 25597  Directory Listing
Modified Thu Dec 8 21:24:28 2016 UTC (9 months, 2 weeks ago) by jcfr
STYLE: vtkSegmentation: Fix unused "targetRepresentationName" warning

Warning fixed is:

  /path/to/Slicer/Libs/vtkSegmentationCore/vtkSegmentation.cxx:957:63: warning: unused parameter ‘targetRepresentationName’ [-Wunused-parameter]
  bool vtkSegmentation::CreateRepresentation(const std::string& targetRepresentationName,
                                                               ^
Fixes #4305

Suggested-by: Csaba Pinter <csaba.pinter@queensu.ca>

Revision 25591  Directory Listing
Modified Wed Dec 7 19:45:14 2016 UTC (9 months, 2 weeks ago) by lassoan
ENH: Added ViewGroup property to view nodes

ViewGroup is used for restricting scope of:
* linked slice view property changes (is slices are linked, a property change will only change views in the same group)
* crosshair jump to slice (if crosshair is moved with shift+mousemove and slice jump is enabled, only those slices will be moved that are in the same group as the view where the mouse was)
* slice intersection display (slice intersections will only shown of those slices that are in the same group)

Implementation:
* Added new ViewGroup member to abstract view node (string, empty by default)
* In default layouts "Three over three" and "Four over four" separated top/bottom rows (view IDs changed to Red+, Yellow+, Green+, 1+; unique node IDs were necessary because on layout change view group is not updated, so we cannot share view nodes between layouts the same group ID for all views)
* Updated vtkMRMLSliceNode::JumpAllSlices to only jump those slices that have matching viewgroup
* Updated vtkMRMLSliceLinkLogic::OnMRMLNodeModified(vtkMRMLNode* node) to make aware of groups
* Updated slice displayable manager to only show slice intersections in the same group (and mapped in layout)
* Updated 2D/3D displayable managers to only jump those slices on crosshair update (shift+mousemove) that are in the same group
* Updated GUI:
** Added View group view/edit to View Controllers module (Advanced section).
** Added viewGroup property to simple markups widget (that can restrict slice jumping to a specific view group)
* Added crosshair jump slice speed test to PerformanceTests module

Revision 25589  Directory Listing
Modified Tue Dec 6 22:49:45 2016 UTC (9 months, 2 weeks ago) by lassoan
BUG: Fixed SegmentEditor module after core changes

Segment color storage is moved to segmentation object from display node.
SegmentEditor had to be updated accordingly.

Revision 25588  Directory Listing
Modified Tue Dec 6 15:31:07 2016 UTC (9 months, 2 weeks ago) by pinter
ENH: Make recommendedColorFromTerminology method accessible from python

Revision 25587  Directory Listing
Modified Tue Dec 6 13:47:41 2016 UTC (9 months, 2 weeks ago) by pinter
BUG: Fixed failing qSlicerTerminologiesModuleGenericTest

Revision 25586  Directory Listing
Modified Mon Dec 5 18:41:40 2016 UTC (9 months, 2 weeks ago) by pinter
ENH: Add fractional labelmap conversion rules to segmentations

From: Kyle Sunderland <1krs1@queensu.ca>

Revision 25582  Directory Listing
Modified Fri Dec 2 20:08:18 2016 UTC (9 months, 3 weeks ago) by pinter
BUG: Fixed bug related to segment color update

Segment color did not update, if segmentation was loaded from the scene, and color was being changed twice or more.

Revision 25581  Directory Listing
Modified Fri Dec 2 16:20:15 2016 UTC (9 months, 3 weeks ago) by pinter
ENH: Color member in vtkSegment is now used as main color information

vtkSegment::Color (renamed from DefaultColor) holds the displayed color information instead of the Color member in SegmentDisplayProperties in segmentation display node.
Also Color member in SegmentDisplayProperties is now renamed to OverrideColor, and it is only used if different color is needed to be shown in different views, otherwise it is kept unset (default SEGMENT_COLOR_NO_OVERRIDE values)

Revision 25580  Directory Listing
Modified Mon Nov 28 21:42:47 2016 UTC (9 months, 3 weeks ago) by pinter
ENH: Create color table for labelmap when exporting segmentation

When the binary labelmap from a segmentation was exported to a labelmap node, the colors were not propagated. Now a color table node is created (or just updated if it existed and it was user type) for the labelmap, and so the labels have the same colors as the segments they came from.

Revision 25578  Directory Listing
Modified Sat Nov 26 19:21:14 2016 UTC (9 months, 4 weeks ago) by pieper
STYLE: update DICOMExtensions

fixed hard tabs

From: Andrey Fedorov <andrey.fedorov@gmail.com>

Revision 25577  Directory Listing
Modified Sat Nov 26 19:21:12 2016 UTC (9 months, 4 weeks ago) by pieper
ENH: update DICOMExtensions

Added new entries for QuantitativeReporting, which supports Parametric Maps and
certain types of Structured Reports, in addition to DICOM.

Also "prettified" JSON formatting.

From: Andrey Fedorov <andrey.fedorov@gmail.com>

Revision 25576  Directory Listing
Modified Sat Nov 26 04:17:54 2016 UTC (9 months, 4 weeks ago) by pinter
BUG: Fixed hang when loading DICOM SEG with incomplete terminology

Revision 25575  Directory Listing
Modified Thu Nov 24 19:49:02 2016 UTC (10 months ago) by pinter
BUG: Fixed terminology serialization in segment tags

The "|" separator character was used both for separating tags and terminology entry codes. Terminology entry codes now use "~" instead, so the tags are loaded from file correctly

Revision 25574  Directory Listing
Modified Thu Nov 24 17:39:44 2016 UTC (10 months ago) by pinter
ENH: Added capability to load anatomical context from DICOM SEG descriptor

Needed for adding terminology-related anatomical region information from DICOM SEG loading. The DICOM plugin that employs this feature is currently located at https://github.com/QIICR/Reporting/blob/master/Py/DICOMSegmentationPlugin.py

Revision 25573  Directory Listing
Modified Wed Nov 23 22:01:40 2016 UTC (10 months ago) by pinter
ENH: More UI elements disabled in read-only segment editor widget

Revision 25570  Directory Listing
Modified Tue Nov 22 18:42:14 2016 UTC (10 months ago) by pinter
ENH: Making qSlicerTerminologyNavigatorWidget::deserializeTerminologyEntry accessible from python

Revision 25569  Directory Listing
Modified Tue Nov 22 17:10:13 2016 UTC (10 months ago) by pinter
ENH: Added read-only option to segments table view and segment editor widget

If read-only is enabled in segments table view, then double-click and edit key press now do not trigger editing (selection and show/hide are still possible). Segment editor widget disables the Add and Remove segment buttons, as well as Create surface, and sets read-only flag to the table if read-only is set to true

Re https://github.com/QIICR/Reporting/issues/90

Revision 25568  Directory Listing
Modified Tue Nov 22 17:06:29 2016 UTC (10 months ago) by pinter
BUG: Fixed category-only selection issue in Terminologies

Crash occurred if only category was selected without a type, then clicked again on the selector button. Crash is now fixed, and also the Select button is only active if the selection is invalid (it doesn't make sense to allow the user to select only a category without a type)

Fixes https://github.com/QIICR/Reporting/issues/98

Revision 25567  Directory Listing
Modified Tue Nov 22 14:55:31 2016 UTC (10 months ago) by pieper
ENH: #4146 add advisor for dicom extensions

After an import to the dicom database the contents
are checked against a pre-configured file that suggests
possible extensions.

See:

http://www.na-mic.org/Bug/view.php?id=4146

https://github.com/QIICR/Reporting/pull/71#

ENH: improve message about dicom extensions

Now the datatype is described in a human readable form.

From: Steve Pieper <pieper@isomics.com>

Revision 25566  Directory Listing
Modified Tue Nov 22 06:03:37 2016 UTC (10 months ago) by lassoan
BUG: Segment editor create default segmentation fixed

After scene close new default segmentation node or existing segmentation node is correctly created/selected.

Revision 25564  Directory Listing
Modified Tue Nov 22 02:22:18 2016 UTC (10 months ago) by fedorov
BUG: remove deprecated DICOM SEG export from Editor

This functionality depended on now deprecated and non-existing functionality in
the Reporting module. The updated version of the Reporting module uses dcmqi,
https://github.com/QIICR/dcmqi, for DICOM SEG conversion, which in turn has an
interface different from what is used in this implementation.

DICOM SEG export will be provided in the updated Reporting extension, which is
reusing Segment Editor components for editing. It is possible that this export
functionality will be available in the main application in the future.

Revision 25563  Directory Listing
Modified Mon Nov 21 21:58:04 2016 UTC (10 months ago) by pinter
ENH: Added capability to load terminology from DICOM SEG descriptor

Needed for adding terminology information from DICOM SEG loading. The DICOM plugin that employs this feature is currently located at https://github.com/QIICR/Reporting/blob/master/Py/DICOMSegmentationPlugin.py

Revision 25562  Directory Listing
Modified Mon Nov 21 19:16:47 2016 UTC (10 months ago) by lassoan
ENH: Add mirror and normals auto-orient to Surface Toolbox

Author: Beatriz Paniagua <beatriz.paniagua@kitware.com>

Revision 25561  Directory Listing
Modified Mon Nov 21 01:20:57 2016 UTC (10 months ago) by lassoan
COMP: Fixed build error

  CMake Error at Modules/Loadable/CMakeLists.txt:37 (add_subdirectory):

    The binary directory

  

      C:/D/E/Slicer-0-build/Slicer-build/Modules/Loadable/SubjectHierarchy

  

    is already used to build a source directory.  It cannot be used to build

    source directory

  

      C:/D/E/Slicer-0/Modules/Loadable/SubjectHierarchy 

Revision 25560  Directory Listing
Modified Sun Nov 20 11:49:59 2016 UTC (10 months ago) by lassoan
COMP: Fixed build error

34>c:\d\n\slicer-1-build\slicer-build\modules\loadable\markups\subjecthierarchyplugins\../../../../../../Slicer-1/Modules/Loadable/Markups/SubjectHierarchyPlugins/qSlicerSubjectHierarchyMarkupsPlugin.h(27): fatal error C1083: Cannot open include file: 'qSlicerSubjectHierarchyAbstractPlugin.h': No such file or directory (C:\D\N\Slicer-1-build\Slicer-build\Modules\Loadable\Markups\SubjectHierarchyPlugins\moc_qSlicerSubjectHierarchyMarkupsPlugin.cxx) [C:\D\N\Slicer-1-build\Slicer-build\Modules\Loadable\Markups\SubjectHierarchyPlugins\qSlicerMarkupsSubjectHierarchyPlugins.vcxproj] [C:\D\N\Slicer-1-build\Slicer.vcxproj]

Revision 25559  Directory Listing
Modified Sun Nov 20 08:00:28 2016 UTC (10 months ago) by jcfr
COMP: Fix Markups build error ensuring SH headers are available

This commit fixes a build error caused by a change in the build order
of the loadable module and introduced by r25551 (ENH: Allow display
transform glyphs at markup positions).

Before r25551:

[...]
Colors
SubjectHierarchy
Transforms
Annotations
Data
DoubleArrays
Markups
[...]


After r25551:

[...]
Colors
Annotations
Markups
Transforms
SubjectHierarchy
Data
DoubleArrays
[...]

Build error fixed by this commit:

/path/to/Slicer/Modules/Loadable/Markups/SubjectHierarchyPlugins/qSlicerSubjectHierarchyMarkupsPlugin.cxx:28:50: fatal error: qSlicerSubjectHierarchyPluginHandler.h: No such file or directory
compilation terminated.

Revision 25558  Directory Listing
Modified Sun Nov 20 08:00:26 2016 UTC (10 months ago) by jcfr
STYLE: vtkSlicerTransformLogic: Fix unused variable warning

Revision 25557  Directory Listing
Modified Sat Nov 19 20:11:54 2016 UTC (10 months ago) by pinter
ENH: Terminology now uses code to identify entry

Instead of only using CodeMeaning, terminology logic now uses CodingSchemeDesignator and CodeValue to identify an entry. As a side effect, redundant members were removed and lookup became faster. Segments only contain one tag with the whole serialized terminology entry instead of 8 tags, and it does not contain recommended color any more. Terminology JSON files were changed so that capitalization is consistent across terminology dictionary files

Revision 25555  Directory Listing
Modified Sat Nov 19 12:55:40 2016 UTC (10 months ago) by lassoan
COMP: Fixed build error caused by transform logic relocation

Revision 25551  Directory Listing
Modified Fri Nov 18 18:44:48 2016 UTC (10 months ago) by lassoan
ENH: Allow display transform glyphs at markup positions

It is now possible to show where a markup point is transformed to using transform visualization.
Select "Glyph" visualization mode, open "Advanced" section and set "Source points".
Glyphs are updated in real-time as markups are moved, so this can be also used for probing the transformation
by drag-and-dropping markups in 2D and 3D views.

Transform logic needed access to Markups node, therefore module logic was moved to Modules/Loadable/Transforms/Logic.

Revision 25545  Directory Listing
Modified Thu Nov 17 17:28:24 2016 UTC (10 months, 1 week ago) by pieper
ENH: Refactored DICOMHeaderPopup and inheriting from ctkDICOMObjectListWidget

- removed unused imports and specified ctk imports explicit

ENH: Fixed typos, parentheses, semicolons, string formatting, settings:

- simplified promptForDatabaseDirectory
- removed unused variables

BUG: fixed  loadButton availability in various situations

- taking into account if series are selected, advanced mode is active and if in
   advanced mode loadables are checked

ENH: Refactoring and using of DICOMSendDialog for sending DICOM

- Once a patient, studie, series is selected, it can be send via storescu

ENH: centering DICOMSend progressbar on mainWindow

STYLE: add newline at end of file

From: Steve Pieper <pieper@isomics.com>

Revision 25544  Directory Listing
Modified Thu Nov 17 17:03:06 2016 UTC (10 months, 1 week ago) by pieper
ENH: Refactored DICOMPluginSelector including inheritance from qt.QWidget

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25543  Directory Listing
Modified Thu Nov 17 17:03:04 2016 UTC (10 months, 1 week ago) by pieper
ENH: Refactored DICOMPluginSelector including inheritance from qt.QWidget

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25542  Directory Listing
Modified Thu Nov 17 17:03:01 2016 UTC (10 months, 1 week ago) by pieper
ENH: Refactored DICOMHeaderWidget

- even when it is not used right now, seriesTable selection signal should invoke event on DICOMHeaderWidget if visible

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25541  Directory Listing
Modified Thu Nov 17 17:02:59 2016 UTC (10 months, 1 week ago) by pieper
ENH: Refactoring DICOMLoadableTable

- extracted methods
- simplified code

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25540  Directory Listing
Modified Thu Nov 17 17:02:57 2016 UTC (10 months, 1 week ago) by pieper
ENH: Cleaning Up code, inheriting DICOMLoadableTable from QTableWidget

- stretching width of DICOMLoadableTable
- fixed bug in isFileListInCheckedLoadables
- formatted code
- using local progress bar to prevent several processes accessing the same progressbar

From: Christian Herz <christianherz1985@googlemail.com>

Revision 25539  Directory Listing
Modified Thu Nov 17 14:27:31 2016 UTC (10 months, 1 week ago) by pinter
BUG: Fixed terminology color change bug

Fixes https://github.com/QIICR/Reporting/issues/76
Also fixed other minor bugs, such as tooltip update, layout warning message

Revision 25532  Directory Listing
Modified Sat Nov 12 22:45:57 2016 UTC (10 months, 1 week ago) by lassoan
ENH: Made it easier to open SegmentEditor module

Added to top-level and default favorite modules.

Revision 25530  Directory Listing
Modified Sat Nov 12 08:46:01 2016 UTC (10 months, 1 week ago) by jcfr
COMP: RSS: Update getZeroLayerAtIteration() to return value. Fix #4291

Suggested-by: S. EDAH-TALLY <chir.set@free.fr>
Reported-by: S. EDAH-TALLY <chir.set@free.fr>

Revision 25520  Directory Listing
Modified Thu Nov 10 21:26:33 2016 UTC (10 months, 2 weeks ago) by lassoan
ENH: Added segment statistics module

There is no need for exporting to labelmaps and/or models to get statistics.
This module can give labelmap, grayscale, and surface statistics directly from segmentation nodes.

Revision 25519  Directory Listing
Modified Thu Nov 10 21:25:05 2016 UTC (10 months, 2 weeks ago) by lassoan
ENH: Added tables logic method for finding layout with table

Revision 25518  Directory Listing
Modified Thu Nov 10 21:25:01 2016 UTC (10 months, 2 weeks ago) by lassoan
BUG: Fixed bug in ExportSegmentsToLabelmapNode

Problem was when exporting to a non-transformed reference from a transformed segmentation (labelmap was not created in the reference node's location in the transform tree)

Revision 25517  Directory Listing
Modified Wed Nov 9 17:00:28 2016 UTC (10 months, 2 weeks ago) by lassoan
BUG: Fixed crash when setting active markups to NULL

How to reproduce:
slicer.modules.markups.logic().SetActiveListID(None) => crash

Solution:
If active list in markups module is set to none then:
1. If markups placement class was selected: then deactivate placement and reset active markups node ID
2. If non-markups placement class was selected (ROI, Ruler) then don't do anything

Revision 25509  Directory Listing
Modified Tue Nov 8 01:02:41 2016 UTC (10 months, 2 weeks ago) by jcfr
STYLE: SampleData: Acknowledge "Osirix DICOM image library"

Suggested-by: Sonia Pujol <spujol@bwh.harvard.edu>

Revision 25507  Directory Listing
Modified Mon Nov 7 21:06:06 2016 UTC (10 months, 2 weeks ago) by lassoan
BUG: Fixed segmentations import/export button states

Node selector "None" text was not updated correctly when user switched between import/export.

Revision 25505  Directory Listing
Modified Mon Nov 7 18:59:21 2016 UTC (10 months, 2 weeks ago) by jcfr
STYLE: SampleData: Improve name of Panoramix dataset. Fixes #4294

Suggested-by: Sonia Pujol <spujol@bwh.harvard.edu>

Revision 25502  Directory Listing
Modified Sat Nov 5 23:33:34 2016 UTC (10 months, 2 weeks ago) by lassoan
BUG: Fixed vtkSlicerSegmentationsModuleLogic::GetSegmentationNodeForSegment

A regression was introduced a couple of days ago, this commit fixes it.

Revision 25500  Directory Listing
Modified Fri Nov 4 12:00:07 2016 UTC (10 months, 2 weeks ago) by lassoan
ENH: Set auto-update enabled by default in auto-complete effect

Revision 25497  Directory Listing
Modified Wed Nov 2 19:06:32 2016 UTC (10 months, 3 weeks ago) by lassoan
ENH: Reduce memory need of scissors effect

The stencil size (along camera normal direction) is limited to the segmentation size.

Revision 25495  Directory Listing
Modified Wed Nov 2 19:06:26 2016 UTC (10 months, 3 weeks ago) by lassoan
BUG: Fixed segmentation default color intialization

Revision 25494  Directory Listing
Modified Wed Nov 2 19:06:21 2016 UTC (10 months, 3 weeks ago) by lassoan
ENH: Allow setting custom order for segments

Previously segments were alphabetically ordered based on segment ID, which often resulted in unexpected ordering and it was not possible to change segment order.

Revision 25492  Directory Listing
Modified Mon Oct 31 22:27:14 2016 UTC (10 months, 3 weeks ago) by lassoan
ENH: Simplified segment export/import user interface

Import/export (between segmentation and labelmap/model) and copy/move (between segmentations) are separated into two sections.

Import/export of all segments is now available using a single click (for both labelmaps and models).

Revision 25491  Directory Listing
Modified Mon Oct 31 22:27:09 2016 UTC (10 months, 3 weeks ago) by lassoan
ENH: Allow exporting segments to transformed labelmap node

This allows using any node in the scene as reference node for segment->labelmap export.

Revision 25489  Directory Listing
Modified Sat Oct 29 01:25:32 2016 UTC (10 months, 3 weeks ago) by jcfr
STYLE: TerminologyNavigatorWidget: Fix unused variable warnings

Revision 25488  Directory Listing
Modified Sat Oct 29 01:25:30 2016 UTC (10 months, 3 weeks ago) by jcfr
COMP: TerminologyNavigatorWidget: Fix Gcc compilation error

This commit fixes a compilation error introduced in r25487 (BUG: Added
missing null-pointer checks to terminology widget)

Revision 25487  Directory Listing
Modified Fri Oct 28 23:03:07 2016 UTC (10 months, 3 weeks ago) by lassoan
BUG: Added missing null-pointer checks to terminology widget

Caused qt designer to crash on startup.

Revision 25484  Directory Listing
Modified Fri Oct 28 16:36:25 2016 UTC (10 months, 3 weeks ago) by jcfr
BUG: DiffusionTensor3DExtended should not use itkTypeMacro

DiffusionTensor3DExtended is not derived from itkLightObject so
it should not use itkTypeMacro.

From: Francois Budin <francois.budin@gmail.com>

Revision 25483  Directory Listing
Modified Fri Oct 28 03:55:49 2016 UTC (10 months, 4 weeks ago) by jcfr
ENH: Restore non-DTI part of NeurosurgicalPlanningTutorialMarkupsSelfTest

Restore the non-DTI parts of the
NeuroSurgicalPlanningTutorialMarkupsSelfTest that were removed
in r25419 (COMP: remove vtkTeem/DMRI-related tests.)

Because it is a useful test of a variety of functionality.

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25482  Directory Listing
Modified Fri Oct 28 01:33:38 2016 UTC (10 months, 4 weeks ago) by jcfr
ENH: Updating DCMTK to 3.6.1_2016.10.12

Diff for DCMTK:
https://github.com/InsightSoftwareConsortium/DCMTK/compare/271f1e9731cfb29d9451b484ff50a39e32e2c90a...efe1a177eac040b6d41aae0db7714cd970e12bc5

A new version of ITK is required to compile Slicer with DCMTK updated:
https://github.com/Slicer/ITK/compare/16df9b689856cd4a8dd22a2cef92f5ee7222da0c...1168eba261e6a3c71c0372cc4cd833dd2d8fd693

A new version of CTK is required:
https://github.com/commontk/CTK/compare/afe8505a8286a701900fca1c97a4ad8876bbbe1a...d2b30cd1d525bd7f3856503373760921ea82dfde

A new version of BRAINSTools is required:
https://github.com/BRAINSia/BRAINSTools/compare/47dc8e66860be2bb074d17de18129978cb1ca93a...a5cfa21addf98d86da72f216d93e08913fa396d7

From: Francois Budin <francois.budin@gmail.com>

Revision 25480  Directory Listing
Modified Wed Oct 26 16:20:58 2016 UTC (10 months, 4 weeks ago) by lassoan
BUG: Disable view node add/delete in camera module

View nodes are created by the layout manager automatically. Users should not manipulate them.

Fixed qMRMLDisplayNodeComboBox to not crash on scene close when there are orphan view nodes.

Revision 25478  Directory Listing
Modified Wed Oct 26 16:20:51 2016 UTC (10 months, 4 weeks ago) by lassoan
COMP: Fixed build warning

Revision 25477  Directory Listing
Modified Tue Oct 25 03:01:02 2016 UTC (11 months ago) by lassoan
ENH: Enable setting larger GPU memory than 4GB

Fixes http://www.na-mic.org/Bug/view.php?id=4286

Revision 25476  Directory Listing
Modified Mon Oct 24 04:27:19 2016 UTC (11 months ago) by lassoan
ENH: Reduced memory use of auto-complete effect

clippedMasterImageData is only needed for growcut, don't create it if a different method is used

Revision 25475  Directory Listing
Modified Mon Oct 24 04:27:16 2016 UTC (11 months ago) by lassoan
BUG: Fixed segmentation general 3D visibility option

Segmentation general 3D visibility option was ignored.

Revision 25474  Directory Listing
Modified Mon Oct 24 04:27:12 2016 UTC (11 months ago) by lassoan
ENH: Fixed full-row selection in qMRMLSegmentsTableView

Revision 25473  Directory Listing
Modified Sun Oct 23 11:59:35 2016 UTC (11 months ago) by lassoan
ENH: Preserve segment display properties during auto-complete effect updates

Revision 25472  Directory Listing
Modified Fri Oct 21 18:43:48 2016 UTC (11 months ago) by lassoan
BUG: Fixed memory leak in auto-complete effect

Revision 25471  Directory Listing
Modified Fri Oct 21 18:31:16 2016 UTC (11 months ago) by lassoan
ENH: Added more segment editor shortcuts

1-6 = switch effects
q w = switch active label
z y = undo redo

Revision 25470  Directory Listing
Modified Fri Oct 21 18:31:12 2016 UTC (11 months ago) by lassoan
ENH: Removed verbose logging from auto-complete effect

Revision 25469  Directory Listing
Modified Fri Oct 21 15:03:42 2016 UTC (11 months ago) by lassoan
ENH: Improved auto-complete effect

* Fixed fast growcut update jitter. Regions that were set to a certain label sometimes changed to another on update.
* Improved auto-complete effect auto-update performance. Multiple updates are prevented by delayed update.

Revision 25468  Directory Listing
Modified Fri Oct 21 01:18:12 2016 UTC (11 months ago) by lassoan
ENH: Added larger GPU memory options

Also translated Mo, Go to English.

Revision 25467  Directory Listing
Modified Fri Oct 21 01:18:08 2016 UTC (11 months ago) by lassoan
ENH: Improved segmentation auto-complete opacity setting GUI

Revision 25466  Directory Listing
Modified Fri Oct 21 01:18:05 2016 UTC (11 months ago) by lassoan
ENH: Use segmentation Opacity attribute only for 2D

Users most often want to tune 2D opacities (fill and outline together), while
keeping 3D opacities at 1.0 (transparency often does not help in 3D and since depth peeling does not work in
the current OpenGL1 backend, semi-transparent results are not even correct).

By using Opacity property for 2D only (fill and outline) we can show/hide segments in slice viewers without impacting 3D visibility.
It's also very convenient that slice view controller adjust this Opacity property.

Revision 25463  Directory Listing
Modified Thu Oct 20 03:13:22 2016 UTC (11 months ago) by lassoan
ENH: Improved auto-complete effect preview opacity options

Revision 25462  Directory Listing
Modified Thu Oct 20 03:01:59 2016 UTC (11 months ago) by lassoan
ENH: Added auto-update to auto-complete segmentation tool

Revision 25456  Directory Listing
Modified Tue Oct 18 14:51:41 2016 UTC (11 months, 1 week ago) by lassoan
ENH: Reduce memory usage of IdentifyIsland effect

Islands are now clipped to their effective extent to reduce memory usage.

Revision 25455  Directory Listing
Modified Tue Oct 18 14:51:37 2016 UTC (11 months, 1 week ago) by lassoan
ENH: Add easy access to node selector in qSlicerSimpleMarkupsWidget

Revision 25454  Directory Listing
Modified Tue Oct 18 05:27:31 2016 UTC (11 months, 1 week ago) by lassoan
ENH: Made fast growcut in segmentations module more robust

Switching between inputs and closing scene does not cause problems anymore.

Revision 25453  Directory Listing
Modified Tue Oct 18 04:43:43 2016 UTC (11 months, 1 week ago) by lassoan
ENH: Cleaned up fast growcut algorithm implementation in segmentations logic

Revision 25452  Directory Listing
Modified Sat Oct 15 16:36:30 2016 UTC (11 months, 1 week ago) by pinter
BUG: Fixed py_nomainwindow_SegmentationsModuleTest1

The test failed because the merged labelmap used to use the segments' color index tag to set the labels of the binary labelmaps written in the merged labelmap. With the recent removal of this tag, the merged labelmap simply writes the segments in the order of the containing segment map

Revision 25451  Directory Listing
Modified Sat Oct 15 15:08:29 2016 UTC (11 months, 1 week ago) by lassoan
ENH: Quick update of growcut preview

Now growcut is just updated, not recomputed from scratch when making adjustments to the seeds.

Revision 25450  Directory Listing
Modified Sat Oct 15 15:08:25 2016 UTC (11 months, 1 week ago) by lassoan
ENH: Made segment display node update more robust

Don't emit modified event when just updating internal cache to avoid reentrant updates in displayable managers.

Revision 25448  Directory Listing
Modified Sat Oct 15 01:59:43 2016 UTC (11 months, 1 week ago) by lassoan
ENH: Create auto-complete effect from growcut and slice interpolation

The effect also has preview feature, so seeds or single-slice segmentation can be edited before result is finalized.

Revision 25447  Directory Listing
Modified Fri Oct 14 19:24:11 2016 UTC (11 months, 1 week ago) by pinter
ENH: Added Terminologies module for handling standard terminologies

Default terminology dictionaries are loaded on Slicer startup and can be used from Segmentations and Segment Editor to assign terminology entries to segments that appear in tooltips (later will take part in DICOMSeg export). Terminologies module also contains a qSlicerTerminologyNavigatorWidget that allows exploring terminologies.

-------------------------------------------------
ENH: Use CTK color picker in terminology selector

BUG: Fixed known bugs in terminology selector

BUG: Fixed minor bugs; Added custom color selection

ENH: Terminology selector dialog is used for segment color in segments table

Opacity delegate reverted back to qMRMLItemDelegate, as the slider shows up properly now (need to check on standard resolution screens)

ENH: Added terminology dialog, selector button, and delegate

The delegate needs to be set to the segment table (and other widgets that will use terminology) to be able to show and change terminology information. The delegate's editor is the new selector button that only shows the recommended color, but when clicked, shows the new selector dialog. The dialog is a simple wrapper dialog class for the navigator widget with select and cancel buttons.

ENH: Added anatomic region handling to terminology logic and navigator widget

ENH: Added terminology navigator widget and Json parsing logic

ENH: Load default terminology into Terminologies logic

Added two json files for the full SnoMed and its subset for the SlicerGeneralAnatomy entries. The SlicerGeneralAnatomy dictionary is loaded by default when calling the LoadDefaultTerminology function

ENH: Added Terminology module skeleton

Revision 25445  Directory Listing
Modified Thu Oct 13 17:52:55 2016 UTC (11 months, 1 week ago) by lassoan
BUG: Fixed IdentifyIslandEffect on transformed segments

When IdentifyIslandEffect was applied on a transformed segment, the result was incorrectly transformed.
The reason was that vtkMRMLSlicerSegmentationsModuleLogic::ImportLabelmapToSegmentationNode(vtkOrientedImageData*, ...)
assumed the labelmap was in the world coordinate system.
A better assumption is that the labelmap to be imported is in the same coordinate system as the segmentation node.
Described the current behavior in the method's documentation.

Revision 25430  Directory Listing
Modified Wed Oct 12 09:40:28 2016 UTC (11 months, 1 week ago) by jcfr
ENH: SlicerWelcome: Automatically update Wiki URL to reference expected pages

If the running version of Slicer is a release package, the links will be
updated to point to the corresponding namespaced wiki pages. Otherwise, they
will be updated to point to "Nightly" documentation.

Revision 25429  Directory Listing
Modified Wed Oct 12 09:40:27 2016 UTC (11 months, 1 week ago) by jcfr
STYLE: SlicerWelcome: Update links

* Update link to Slicer Registration Case Library
* Update link to Acknowledgments
* Add link to Segment Editor (instead of Editor)
* Add link to Markups module

Revision 25427  Directory Listing
Modified Wed Oct 12 04:57:58 2016 UTC (11 months, 1 week ago) by jcfr
ENH: DMRIInstall module: Tweak UI

* Change help text into HTML and use a ctkTextFittedBrowser to display it

* Associated icon with the "Open Extension Manager" button

* Other minor code layout tweaks

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25425  Directory Listing
Modified Wed Oct 12 04:57:54 2016 UTC (11 months, 1 week ago) by jcfr
ENH: Add helper module to suggest installation of SlicerDMRI extension

This commit adds a scripted module named "DMRIInstall".

After the user open the module, a button to open the extension manager
along side a label with the following text will be visible:

  Please use the Extension Manager to install the "SlicerDMRI" extension for diffusion-related tools including:
      Diffusion Tensor Estimation
      Tractography Display
      Tractography Seeding
      Fiber Tract Measurement

From: Isaiah Norton <isaiah.norton@gmail.com>

Revision 25419  Directory Listing
Modified Fri Oct 7 18:23:11 2016 UTC (11 months, 2 weeks ago) by jcfr
COMP: remove vtkTeem/DMRI-related tests.

Tractography-related parts of vtkTeem were removed in commit
r25408 so tests using that functionality will be moved to SlicerDMRI:

  https://github.com/SlicerDMRI/SlicerDMRI

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25415  Directory Listing
Modified Wed Oct 5 22:32:30 2016 UTC (11 months, 2 weeks ago) by lassoan
ENH: Changed default segment editor threshold max to image max

As susggested by Steve Pieper: I usually find people use the default when they want skin and bones vs air and cutting off the top of the range could lead to a lot of noisy holes in the segmentation (that take a long time to process as surfaces).

Revision 25414  Directory Listing
Modified Wed Oct 5 21:32:56 2016 UTC (11 months, 2 weeks ago) by jcfr
ENH: Revert previous commit "Added Terminology module skeleton"

The commit was accidentally integrated into the trunk.

Revision 25413  Directory Listing
Modified Wed Oct 5 21:21:59 2016 UTC (11 months, 2 weeks ago) by fedorov
ENH: Added Terminology module skeleton

Revision 25411  Directory Listing
Modified Tue Oct 4 21:26:27 2016 UTC (11 months, 3 weeks ago) by lassoan
ENH: Added contour interpolation

Available in smoothing effect, smoothing method: Interpolation.

Using algorithm:
ND morphological contour interpolation
http://insight-journal.org/browse/publication/977

Revision 25407  Directory Listing
Modified Tue Oct 4 16:56:24 2016 UTC (11 months, 3 weeks ago) by lassoan
BUG: Fixed scissors effect feedback line display on OpenGL2 backend

Also improved the display:
* freehand mode has now a thin preview line segment that closes the outline
* line is thicker (2 pixels)

Revision 25405  Directory Listing
Modified Tue Oct 4 00:57:02 2016 UTC (11 months, 3 weeks ago) by lassoan
ENH: Generalized 2D rectangle segmentation effect to 3D scissor effect

It is now possible to cut away a part of segment by tracing an outline in a 3D or 2D view.

Also fixed cursor display (shown in 3D view, not shown in view controller widgets).

Revision 25403  Directory Listing
Modified Thu Sep 29 20:36:15 2016 UTC (11 months, 3 weeks ago) by lassoan
BUG: Fixed cropping issue when combining segments with different geometry

Revision 25402  Directory Listing
Modified Thu Sep 29 12:17:30 2016 UTC (11 months, 3 weeks ago) by lassoan
ENH: Improved ScreenCapture ffmpeg path hints

Revision 25401  Directory Listing
Modified Wed Sep 28 16:26:41 2016 UTC (11 months, 3 weeks ago) by lassoan
ENH: Implemented ffmpeg auto-detect/download for ScreenCapture

Auto-download only works on Windows.
Auto-detect only checks at /usr/local/bin/ffmpeg.

Revision 25399  Directory Listing
Modified Wed Sep 28 01:52:23 2016 UTC (11 months, 3 weeks ago) by lassoan
ENH: Improved segment editor usability

* Segment renames are consistently included in undo/redo history
* Increased default size of undo stack to 10
* Current effect remains active if segments are added or removed
* Segment selection is maintained when selecting a non-per-segment effect
* Select to next segment when removing a segment (instead of select first)

Revision 25398  Directory Listing
Modified Tue Sep 27 02:19:17 2016 UTC (11 months, 4 weeks ago) by lassoan
BUG: Fixed markups displayable managers for batch update

Revision 25397  Directory Listing
Modified Tue Sep 27 01:45:16 2016 UTC (11 months, 4 weeks ago) by pinter
BUG: Fix appearance of segmentation representation list view on high resolution displays

Revision 25396  Directory Listing
Modified Mon Sep 26 19:18:40 2016 UTC (11 months, 4 weeks ago) by lassoan
BUG: Fixed markups module GUI on batch update

When markups are added between start/end modify calls then vtkMRMLMarkupsNode::MarkupAddedEvent is called only once,
with NULL calldata. In this case we need to do a full update of the GUI, not just add a new line.

Revision 25393  Directory Listing
Modified Mon Sep 26 02:53:44 2016 UTC (11 months, 4 weeks ago) by lassoan
BUG: Improved robustness of segmentations in sequences

Segment selections are properly updated now when browsing a segmentation sequence.
Crash in segmentation displayable manager solved (when number of segments was different in segmentations in the same sequence).

Revision 25391  Directory Listing
Modified Fri Sep 23 20:09:13 2016 UTC (12 months ago) by lassoan
ENH: Removed redundant segmentID storage in segmentation displayable managers

Revision 25390  Directory Listing
Modified Fri Sep 23 04:49:00 2016 UTC (12 months ago) by lassoan
BUG: Fixed display of transformed segmentations

Segment boundary computation (that has been added recently to improve performance) was not correct and it caused some parts of segmentations
not displayed when the segmentation node was transformed.

Revision 25389  Directory Listing
Modified Thu Sep 22 21:15:02 2016 UTC (12 months ago) by lassoan
ENH: Made vtkMRMLStorageNode::GetFileNameWithoutExtension more convenient

It strips known file extensions, which simplifies its usage (no need for three separate steps of
getting the filename, getting known extension, and then removing the known extension).

Also cleaned up a workaround that was introduced to quickly fix this issue:
http://www.na-mic.org/Bug/view.php?id=3991

Revision 25388  Directory Listing
Modified Thu Sep 22 21:14:58 2016 UTC (12 months ago) by lassoan
ENH: Allow changing segmentation object inside segmentation node

Important for using segmentations in sequence nodes.

Revision 25385  Directory Listing
Modified Thu Sep 22 21:14:42 2016 UTC (12 months ago) by lassoan
ENH: Minor performance improvement in qSlicerTransformsModuleWidget

Revision 25382  Directory Listing
Modified Tue Sep 20 22:10:24 2016 UTC (12 months ago) by lassoan
BUG: Fixed Segment editor to not create unintended segmentation nodes

fixes http://na-mic.org/Mantis/view.php?id=4259

Revision 25379  Directory Listing
Modified Tue Sep 20 21:31:37 2016 UTC (12 months ago) by pinter
ENH: Added data probe support for segmentations

Now any displayable manager can supply information to the data probe if the GetDataProbeInfoStringForPosition virtual method is overridden.

Also poly data fill for segmentation 2D display was fixed. It was disabled due to being unstable, see https://app.assembla.com/spaces/slicerrt/tickets/809-segmentation-polydata-2d-fill-visualization-not-stable
The error was a very obscure one: it turns out the first argument of vtkCellArray::GetCell is not the index, but a special locator position, which fact should be emphasized in the documentation at least.

Revision 25373  Directory Listing
Modified Tue Sep 20 17:20:37 2016 UTC (12 months ago) by jcfr
ENH: LabelStatistics: Refactor table export logic to allow direct use

This commit refactors the code so that exporting the table does not
systematically display the table.

From: Christian Herz <christianherz1985@gmail.com>

Revision 25370  Directory Listing
Modified Tue Sep 20 00:55:40 2016 UTC (12 months ago) by lassoan
ENH: Added null-pointer checks to segmentation widgets

Also improved API documentation and event observations.

Revision 25369  Directory Listing
Modified Mon Sep 19 21:03:18 2016 UTC (12 months ago) by pinter
BUG: Changed segmentation combobox behaviour in slice controller

The segmentation combobox in the slice view controllers showed any hidden segmentation that was selected (thus the eye icon seemed not to be updated). This is now turned off, so changing selection itself does not change segmentation visibility. Also the None item in the combobox is now removed, as it was related to the above function.

Failing segmentation test has also been fixed.

Revision 25367  Directory Listing
Modified Fri Sep 16 19:59:47 2016 UTC (12 months, 1 week ago) by pinter
ENH: Added segment selector combobox to slice view controller

A fourth row is added to slice view controller which is only visible if a segmentation node is present in the scene. It behaves differently than the other rows in the sense that it does not assign the selected node to a role that is specific to the slice view, but allows changing display properties of a segmentation that are global (visibility, opacity, segment visibility, outline/fill). Selecting a segmentation shows it if hidden.

ENH: Added multi-selection option to segment selector widget

ENH: Removed legacy labelmap support

Segmentation node is no longer subclass of labelmap volume node. Temporary color table is removed (color index tag remained, consecutive values are assigned). Utility function ShiftImageDataExtentToZeroStart moved to volume node from segmentation node, may come in handy

Revision 25366  Directory Listing
Modified Thu Sep 15 20:19:16 2016 UTC (12 months, 1 week ago) by lassoan
ENH: Use range slider to define rotation range in ScreenCapture

Revision 25364  Directory Listing
Modified Wed Sep 14 16:58:31 2016 UTC (12 months, 1 week ago) by lassoan
ENH: Optimized ScreenCapture video formats

Revision 25361  Directory Listing
Modified Wed Sep 14 04:03:37 2016 UTC (12 months, 1 week ago) by lassoan
BUG: Fixed SampleData and SelfTests module startup

There was an error that prevented SampleData and SelfTests modules start when developer mode was disabled.

Revision 25357  Directory Listing
Modified Wed Sep 14 01:09:50 2016 UTC (12 months, 1 week ago) by lassoan
ENH: Make it simpler to add doc link to Python scripted modules

Link to module documentation can be added to the help text by a single line of code:
self.parent.helpText += self.getDefaultModuleDocumentationLink()

Updated existing modules to take advantage of this new method.
Also updated a few additional modules to use the common scripted module template
to get access to this new getDefaultModuleDocumentationLink method.

Revision 25356  Directory Listing
Modified Tue Sep 13 22:06:54 2016 UTC (12 months, 1 week ago) by pieper
BUG: #1822 is no longer reproducible on current VTK version

Tested on today's mac release build.

See discussion at http://na-mic.org/Bug/view.php?id=1822

From: Steve Pieper <pieper@isomics.com>

Revision 25354  Directory Listing
Modified Tue Sep 13 18:44:07 2016 UTC (12 months, 1 week ago) by pinter
BUG: Fixed undeterministic behaviour of segment SH removal

When the subject hierarchy node of a segment was removed, then it depended on the order of the onNodeAboutToBeRemoved function calls whether removal of the virtual segmentation branch containing the segment subject hierarchy nodes was successful. This change fixes this problem by using a similar logic as in data module logic that is responsible for removing the associated display and storage nodes for a removed node.

Revision 25350  Directory Listing
Modified Mon Sep 12 21:22:33 2016 UTC (12 months, 1 week ago) by lassoan
ENH: Improved ScreenCapture module

Added presets for easy switching between H264, MPEG4, Animated GIF options.
Added button for opening generated file.

Revision 25347  Directory Listing
Modified Sat Sep 10 18:59:55 2016 UTC (12 months, 2 weeks ago) by lassoan
BUG: Fixed labelmap import into segmentation node

Invalid entry appeared (was a regression introduced in latest performance optimizations).

Revision 25345  Directory Listing
Modified Fri Sep 9 19:11:38 2016 UTC (12 months, 2 weeks ago) by lassoan
BUG: Fixed screenshot node saving file extension

Fixes http://www.na-mic.org/Bug/view.php?id=4250

Revision 25343  Directory Listing
Modified Fri Sep 9 19:11:29 2016 UTC (12 months, 2 weeks ago) by lassoan
ENH: Improved speed of labelmap to segmentation conversion

Revision 25339  Directory Listing
Modified Fri Sep 9 15:02:31 2016 UTC (12 months, 2 weeks ago) by pinter
ENH: Added context menu to segments table for showing only selected segments

Multi-select also works.
The commit also includes minor stylistic changes.

Revision 25338  Directory Listing
Modified Thu Sep 8 21:05:03 2016 UTC (12 months, 2 weeks ago) by pinter
ENH: Improved segmentation display options

Segmentation display settings now in a reusable widget qMRMLSegmentationDisplayNodeWidget. Displayed representations, slice intersection thickness, and views moved into Advanced section. Special display options (slice outline, slice fill and 3D visibility and opacity) for the whole segmentation also added there. Instead of the special display settings on long-click in the segments table they now can be set using similar checkboxes/sliders as for the whole segmentation. These set the settings for the segment that is selected in the segments table.

Revision 25330  Directory Listing
Modified Thu Sep 1 20:51:23 2016 UTC (12 months, 3 weeks ago) by lassoan
ENH: Implemented missing AddEnabled, NoneEnabled logic for CLI GUI

Revision 25328  Directory Listing
Modified Thu Sep 1 04:16:59 2016 UTC (12 months, 3 weeks ago) by lassoan
STYLE: Replaced (someStdString == std::string("")) by (someStdString.empty())

They are functionally equivalent, but .empty() is shorter and simpler.

Revision 25327  Directory Listing
Modified Thu Sep 1 04:03:30 2016 UTC (12 months, 3 weeks ago) by lassoan
ENH: Fixed false warnings during CLI execution

This warning was logged many times when a CLI module that had markups input/output was executed:

Warning: In C:\D\N\Slicer-1\Modules\Loadable\Markups\MRML\vtkMRMLMarkupsNode.cxx, line 1142
vtkMRMLMarkupsFiducialNode (000001682BBBE400): SetNthMarkupLabelFromStorage: no storage node to do the conversion!

It was because the GetNthMarkup*ForStorage and SetNthMarkup*FromStorage methods called the storage node, which
does not always exist.

As only the storage node calls GetNthMarkup*ForStorage and SetNthMarkup*FromStorage and
the necessary ConvertStringToStorageFormat and ConvertStringFromStorageFormat methods are already in storage node,
it is simpler to just call these converter methods directly in the storage node.

Revision 25326  Directory Listing
Modified Wed Aug 31 15:30:03 2016 UTC (12 months, 3 weeks ago) by lassoan
BUG: Fixed initialization of segmentation SH nodes

If a scene was saved without subject hierarchy (SH) nodes and then loaded into a Slicer app where automatic SH node creation is enabled,
SH nodes are now properly created for all segments.

Removed unnecessary warnings during scene load.

Revision 25324  Directory Listing
Modified Wed Aug 31 15:29:56 2016 UTC (12 months, 3 weeks ago) by lassoan
ENH: Removed warning on scene close in qSlicerSubjectHierarchyModuleWidget

Revision 25323  Directory Listing
Modified Wed Aug 31 15:29:51 2016 UTC (12 months, 3 weeks ago) by lassoan
ENH: Improved node saving and loading

This commit contains two changes, which might have been delivered as two separate commits, but they have been implemented at the same time
and modify the same files, therefore splitting them would be not easy.

1. Storable node can decide what is the most appropriate storage node, based on the requested file name and storable node content.

Implemented by adding vtkMRMLStorableNode::AddDefaultStorageNode, which creates most appropriate storage node class and adds it to the scene
(similarly to vtkMRMLDisplayableNode::CreateDisplayNodes()). Also added vtkMRMLStorableNode::GetDefaultStorageNodeClassName(), which allows
creating the right type of storage node depending on target filename and storable node content.

Now there is no more need for the model storage node "special case" in vtkSlicerApplicationLogic::ProcessReadNodeData.

Now current scene's CreateNodeInstance method can be used for storage node creation. The scene may contain customized default storage nodes
(e.g., storage node that uses a customized file extension or compression option), which are now taken into account.
For example, changing default model node saving extension can be achieved by this:

msn=slicer.vtkMRMLModelStorageNode()
msn.SetDefaultWriteFileExtension('stl')
slicer.mrmlScene.AddDefaultNode(msn)

Default nodes can be created from information stored in the application settings, so this allows
specifying default file saving format in the application settings (this is how default view options are configured already).

Having a method for creating and adding storage node as needed also simplifies vtkSlicerFiducialsLogic::AddFiducialList,
vtkMRMLColorNode::ReadXMLAttributes, vtkMRMLSceneViewNode::ReadXMLAttributes, vtkMRMLApplicationLogic::SaveSceneToSlicerDataBundleDirectory, etc.

2. Improved composite file extension support (.nii.gz, .seg.nrrd, ...)

Suitable file reader list in "Add data dialog" is populated using the most specific matched extension's reader.
For example, .nrrd is more specific than .*; .seg.nrrd is more specific than .nrrd. This allows correct deafult
selection. This allowed removing workarounds and special cases added for composite image file extensions (such as .nii.gz)
and .* wildcard. It also allows proper default selection for segmentation nodes (.seg.nrrd).
In the future, it could be used for removing workarounds added for guessing labelmaps, annotation ROI nodes, etc
(labelmap volumes could use .label.nrrd, annotation nodes could use something.roi.csv something.fid.csv, ... instead of
using ambiguous and/or non-standard file extensions such as .acsv or .fcsv).

Made file extension matching more robust: instead of using heuristics, such as assuming .gz means a composite file extension
and collecting all possible extension from all storage nodes; now extensions are verified/matched/removed by the specific
storage node that is responsible for reading/writing the node.

Revision 25322  Directory Listing
Modified Wed Aug 31 15:29:42 2016 UTC (12 months, 3 weeks ago) by lassoan
BUG: Fixed segmentation GetModifiedSinceRead logic

Instead of trying to figure out modification by checking timestamps, update storage modified time whenever contents is changed
(content modified events are already observed anyway).

Also moved registration of Segmentation nodes into vtkMRMLScene - as it is done for all other MRML nodes stored in Libs/MRML/Core.

Revision 25321  Directory Listing
Modified Wed Aug 31 15:29:32 2016 UTC (12 months, 3 weeks ago) by lassoan
ENH: Allow overriding deafult write file extension in storage nodes

Instead of hardcoding DefaultWriteFileExtension string, it is now stored in a member variable.

Revision 25320  Directory Listing
Modified Wed Aug 31 14:32:16 2016 UTC (12 months, 3 weeks ago) by pinter
BUG: Fixed 2D visualization issue with fractional labelmaps

When only the fill option was enabled without the outline, then the fill was "dilated", i.e. the 50% threshold was not applied. This now has been fixed.

Revision 25319  Directory Listing
Modified Tue Aug 30 15:11:46 2016 UTC (12 months, 3 weeks ago) by pinter
ENH: Add members to enable switching between fractional labelmap display types

When needed later, accessors can be added to change these members to switch from the default thresholded contour visualization to the continuous opacity one for 2D segmentation fractional labelmap display

Revision 25317  Directory Listing
Modified Mon Aug 29 18:29:01 2016 UTC (12 months, 3 weeks ago) by lassoan
BUG: Fixed selection of output files in CLI module GUI

It was only possible to select an existing file as output file.
Also, supported file extensions were ignored.

Revision 25316  Directory Listing
Modified Fri Aug 26 19:53:23 2016 UTC (12 months, 4 weeks ago) by pinter
STYLE: Added wiki page link to Segment Editor

Also changed a debug message to be less confusing.

Revision 25315  Directory Listing
Modified Fri Aug 26 19:44:15 2016 UTC (12 months, 4 weeks ago) by pinter
ENH: Fractional labelmap display in Segmentations

This commit modifies the displayable manager in Segmentations to allow an image data containing a range of scalar values to be visualized/interpolated, allowing fractional labelmaps to be displayed correctly.

From: Kyle Sunderland <1krs1@queensu.ca>

Revision 25312  Directory Listing
Modified Thu Aug 25 21:53:48 2016 UTC (13 months ago) by lassoan
BUG: Fixed crash on exit

qSlicerLabelMapVolumeDisplayWidgetPrivate::VolumeNode pointer has become invalid during scene close and caused crash.

In general, widgets should never use simple pointers to refer to MRML nodes, as nodes may be deleted any time and the widget may not get notified about it while the scene is closing.

Revision 25309  Directory Listing
Modified Wed Aug 24 14:46:30 2016 UTC (13 months ago) by lassoan
ENH: Improved Segment Editor effects layout

Logical, margin, smoothing effects has been updated.

Revision 25306  Directory Listing
Modified Wed Aug 24 03:06:32 2016 UTC (13 months ago) by lassoan
ENH: Reduced false alarm warnings in segmentation tests

Revision 25304  Directory Listing
Modified Tue Aug 23 21:46:50 2016 UTC (13 months ago) by lassoan
ENH: Finished implementing undo/redo for Segment Editor

Undo/redo is now enabled by default.

Fixed modification event management for segmentation nodes. Displayable managers now observe segmentation node changes (there is no need for direct display refresh trigger from segmentation node).
Fixed restoring of segment colors from .seg.nrrd files.

Improved segment editor update speed:
1. Only those representations will be re-generated where the master representation actually changed (e.g., if an empty part of a segment is "cleared" as a result of an editing operation, it no longer triggers a refresh on dependent representations)
2. During saving undo state, those representations that has not changed compared to the last saved state are only shallow-copied from the previous saved state.

Revision 25302  Directory Listing
Modified Sat Aug 20 12:59:36 2016 UTC (13 months ago) by lassoan
ENH: Implemented undo/redo in Segment Editor

The implementation is not yet optimized for speed and memory consumption (all segments are copied, not just those that are modified; states are stored uncompressed),
so undo/redo is disabled by default (can be enabled in modules that have an embedded editor by calling editorWidget.setUndoEnabled(True)).

Revision 25301  Directory Listing
Modified Sat Aug 20 12:59:30 2016 UTC (13 months ago) by lassoan
BUG: Fixed Segment Editor joint smoothing when not all segments are visible

When not all segments were selected for smoothing then indexes of segments were mixed up.

Revision 25300  Directory Listing
Modified Wed Aug 17 20:00:12 2016 UTC (13 months, 1 week ago) by johan.andruejol
COMP: Link against CLI library in Testing of PETStandardUptakeValueComputation

Revision 25299  Directory Listing
Modified Wed Aug 17 20:00:05 2016 UTC (13 months, 1 week ago) by johan.andruejol
COMP: Link against CLI library in Testing of GrayscaleModelMaker

Revision 25297  Directory Listing
Modified Wed Aug 17 18:02:12 2016 UTC (13 months, 1 week ago) by lassoan
ENH: Added "joint" option to segment editor smoothing effect

Uses the same approach as model maker (creates a combined mesh, smoothes that, then extracts each segment's mesh) and then converts the result back to binary image.

Also fixed restoring of segment editor effect parameters from saved scene.

Revision 25291  Directory Listing
Modified Tue Aug 16 18:01:20 2016 UTC (13 months, 1 week ago) by jcfr
STYLE: Remove unused loadable ModelMirror and ModelTransform logics

Suggested-by: Csaba Pinter <csaba.pinter@queensu.ca>

Revision 25290  Directory Listing
Modified Tue Aug 16 16:41:52 2016 UTC (13 months, 1 week ago) by lassoan
BUG: Fixed problems in segmentation master repr switch

Store master representation in std::string instead of char*. It makes code simpler and safer (NULL-pointer check for char* was missing at many places).
Don't reset or change master representation in vtkSegmentation. When switching or changes is useful for user's convenience, it is done in GUI and logic classes.
Fixed bugs of deleting closed surface representation in Segment Editor module when that was the master representation.
Made temporary master representation observation disabling more robust (now the previous state is restored instead of always enabling after it was temporarily disabled).
Changed a few warning messages to debug message (it may be normal to have empty segments).

Revision 25284  Directory Listing
Modified Fri Aug 12 18:37:13 2016 UTC (13 months, 1 week ago) by lassoan
ENH: Made ScreenCapture video export more robust

Now both image width and height is forced to be an even number

Revision 25283  Directory Listing
Modified Fri Aug 12 16:26:00 2016 UTC (13 months, 1 week ago) by lassoan
ENH: SegmentEditorMarginEffect improve too small margin message

Revision 25282  Directory Listing
Modified Fri Aug 12 16:25:58 2016 UTC (13 months, 1 week ago) by lassoan
ENH: Remove some warnings from qSlicerMarkupsPlaceWidget

Only log warnings when a requested operation cannot be completed.

Revision 25281  Directory Listing
Modified Fri Aug 12 16:25:55 2016 UTC (13 months, 1 week ago) by lassoan
BUG: Fixed memory leak in Segmentation Editor

When Segmentation node was created in Segmentation Editor, an extra reference was kept to it.

Revision 25280  Directory Listing
Modified Thu Aug 11 14:21:01 2016 UTC (13 months, 2 weeks ago) by pinter
BUG: Fixed failing SubjectHierarchyCorePluginsSelfTest

Revision 25279  Directory Listing
Modified Thu Aug 11 12:13:40 2016 UTC (13 months, 2 weeks ago) by lassoan
BUG: Fixed typo in SurfaceToolbox

Revision 25278  Directory Listing
Modified Thu Aug 11 12:10:28 2016 UTC (13 months, 2 weeks ago) by lassoan
ENH: Allow bypassing masking in segmentation editor logical effect

Revision 25277  Directory Listing
Modified Wed Aug 10 21:19:17 2016 UTC (13 months, 2 weeks ago) by pinter
ENH: Moved node cloning to SH logic from clone plugin

Thus it can be used from VTK context. Also made stylistic change in qSlicerSegmentEditorAbstractEffect.cxx

Revision 25275  Directory Listing
Modified Wed Aug 10 19:37:04 2016 UTC (13 months, 2 weeks ago) by lassoan
ENH: Improved SurfaceToolbox parameter settings (tooltips, value ranges)

Revision 25274  Directory Listing
Modified Wed Aug 10 19:37:02 2016 UTC (13 months, 2 weeks ago) by lassoan
ENH: Disable unavailable buttons when segmentation node is not selected

Revision 25273  Directory Listing
Modified Wed Aug 10 19:36:59 2016 UTC (13 months, 2 weeks ago) by lassoan
BUG: Fixed painting into transformed segmentation

Segmentation parent transform was not taken into account correctly.

Revision 25272  Directory Listing
Modified Wed Aug 10 19:36:57 2016 UTC (13 months, 2 weeks ago) by lassoan
ENH: Changed segmentation identify island effect minimum size to 1000

A new segment is created for each identified island, so it makes sense to get only the big ones.
The original segment (containing all islands) is preserved, so there is no risk of losing information.

Revision 25271  Directory Listing
Modified Wed Aug 10 19:36:54 2016 UTC (13 months, 2 weeks ago) by lassoan
ENH: Save segment conversion parameter dialog position

Revision 25268  Directory Listing
Modified Tue Aug 9 19:16:58 2016 UTC (13 months, 2 weeks ago) by lassoan
ENH: Allow importing/exporting multiple segments at once

Revision 25263  Directory Listing
Modified Thu Aug 4 15:39:53 2016 UTC (13 months, 3 weeks ago) by lassoan
ENH: Added Sequences replay capability to ScreenCapture module

Revision 25260  Directory Listing
Modified Wed Aug 3 15:23:06 2016 UTC (13 months, 3 weeks ago) by msmolens
ENH: move some D*I-related modules to new category

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25257  Directory Listing
Modified Sat Jul 30 12:52:54 2016 UTC (13 months, 3 weeks ago) by lassoan
ENH: Added Quicktime video export to ScreenCapture module

Revision 25254  Directory Listing
Modified Fri Jul 29 16:55:02 2016 UTC (13 months, 3 weeks ago) by pieper
BUG: use correct setter for tensor value

Issue was:

AttributeError: 'vtkCommonCorePython.vtkFloatArray' object has no attribute 'SetTupleValue'
Traceback (most recent call last):
  File "/Users/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/lib/Slicer-4.5/qt-scripted-modules/DataProbe.py", line 260, in processEvent
    self.layerValues[layer].setText(self.generateIJKPixelValueDescription(ijk, layerLogic))
  File "/Users/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/lib/Slicer-4.5/qt-scripted-modules/DataProbe.py", line 314, in generateIJKPixelValueDescription
    return "<b>%s</b>" % self.getPixelString(volumeNode,ijk) if volumeNode else ""
  File "/Users/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/lib/Slicer-4.5/qt-scripted-modules/DataProbe.py", line 170, in getPixelString
    value = self.calculateTensorScalars(tensor, operation=operation)
  File "/Users/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/lib/Slicer-4.5/qt-scripted-modules/DataProbe.py", line 553, in __call__
    self.tensor_data.SetTupleValue(0, tensor)
AttributeError: 'vtkCommonCorePython.vtkFloatArray' object has no attribute 'SetTupleValue'

From: Steve Pieper <pieper@isomics.com>

Revision 25253  Directory Listing
Modified Fri Jul 29 16:47:19 2016 UTC (13 months, 3 weeks ago) by pieper
ENH: Make it faster/easier to work with long fiducial lists

Put Start/EndModify calls around removing a list of markups from the current node (speed up is significant when deleting 100 fiducials from a list of 272 fiducials)

Automatically select the last loaded fiducial node when entering the Markups module if there are nodes loaded and none are selected.

Adjust the right click context menu in the table:
Use one line per markup, consolidating the label (use index if no label) and the coordinate (half the rows in the menu).
Put the operations first in the menu in case so many are selected that part of the menu ends up off screen.

Issue #4239

From: Nicole Aucoin <nicole@bwh.harvard.edu>

Revision 25251  Directory Listing
Modified Thu Jul 28 22:54:47 2016 UTC (13 months, 4 weeks ago) by jcfr
ENH: Update CreateDICOMSeries.xml doc link

From: Isaiah <isaiah.norton@gmail.com>

Revision 25247  Directory Listing
Modified Wed Jul 27 01:46:19 2016 UTC (13 months, 4 weeks ago) by lassoan
BUG: Fixed py_nomainwindow_qSlicerEditorModuleGenericTest error

Problem:

test_widgetRepresentation (qSlicerEditorModuleGenericTest.qSlicerEditorModuleGenericTest) ... Traceback (most recent call last):
  File "C:/D/N/Slicer-0-build/Slicer-build/lib/Slicer-4.5/qt-scripted-modules/Editor.py", line 197, in setup
    self.createSegmentEditorMessage()
  File "C:/D/N/Slicer-0-build/Slicer-build/lib/Slicer-4.5/qt-scripted-modules/Editor.py", line 299, in createSegmentEditorMessage
    self.segmentEditorLabel.setSizePolicy( qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Preferred) )
ValueError: Could not find matching overload for given arguments:
(7, 5)
 The following slots are available:
QSizePolicy() -> QSizePolicy
QSizePolicy(QSizePolicy other) -> QSizePolicy
QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type) -> QSizePolicy
QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) -> QSizePolicy

Solution: qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Preferred)
fails on some systems, therefore now we set the policies using separate method calls.

Revision 25246  Directory Listing
Modified Tue Jul 26 02:20:46 2016 UTC (14 months ago) by lassoan
ENH: Added vtkMatrix4x4 string conversion methods (#554)

Contributed by Matthew S Holden (PerkLab, Queen's)

Revision 25245  Directory Listing
Modified Mon Jul 25 18:51:29 2016 UTC (14 months ago) by pinter
ENH: Added convenience function to segmentations logic to get arbitrary representation

The method GetSegmentRepresentation is very useful in processing modules that need to use certain types of representations of a segmentation.
The python test was changed not to show the main window so it is faster.
Unused code removed from SegmentationsModuleTest1

Revision 25244  Directory Listing
Modified Mon Jul 25 12:44:23 2016 UTC (14 months ago) by lassoan
ENH: Added screen video capture module (Utilities/ScreenCapture)

Revision 25243  Directory Listing
Modified Thu Jul 21 16:51:57 2016 UTC (14 months ago) by lassoan
ENH: Allow modules to detect when the user clicks on a markup fiducial

Many times a module need to know when the user selects an existing markup. Often the markup position has to be locked but we still want to be able to detect when the user clicked on it.

Added.improved events:
PointStartInteractionEvent: invoked when mouse button is pressed over a markup point.
PointEndInteractionEvent: invoked when mouse button is released over a markup point. Fixed so that it contains the markup point index.
PointClickedEvent: invoked when mouse button is pressed and released over a markup point, without moving the mouse pointer.

VTK allowed locking a seed but then no interaction is possible. VTK handle and seed widgets were improved (see https://github.com/Slicer/VTK/commit/0f8ed32e0b7018d776271dbf5f27968b716a9e10) to allow locking of position but still able to select.

Slicer markups module behavior was changed so that if a markup point is locked then it can still be selected (but not moved). If the entire markup node is locked then markup points cannot be selected or moved (same behavior as before).

How to test the new/enhanced events:

---

@vtk.calldata_type(vtk.VTK_INT)
def markupCallback1(caller, eventId, callData):
  print("PointStartInteractionEvent: {0}".format(callData))

@vtk.calldata_type(vtk.VTK_INT)
def markupCallback2(caller, eventId, callData):
  print("PointEndInteractionEvent: {0}".format(callData))

@vtk.calldata_type(vtk.VTK_INT)
def markupCallback3(caller, eventId, callData):
  print("PointClickedEvent: {0}".format(callData))

markupsNode = getNode('F')
observerTag1 = markupsNode.AddObserver(slicer.vtkMRMLMarkupsNode.PointStartInteractionEvent, markupCallback1)
observerTag2 = markupsNode.AddObserver(slicer.vtkMRMLMarkupsNode.PointEndInteractionEvent, markupCallback2)
observerTag3 = markupsNode.AddObserver(slicer.vtkMRMLMarkupsNode.PointClickedEvent, markupCallback3)

---

Markups module may be improved in the future to use this new event, for example select the markup in the markup list if it is selected in a 2D or 3D view. Also, selection state of markups could be changed when the user clicks on a markup (there could be single-select and multi-select modes).

Revision 25240  Directory Listing
Modified Tue Jul 19 14:31:00 2016 UTC (14 months, 1 week ago) by pinter
STYLE: Use Q_FUNC_INFO in subject hierarchy Qt classes

Instead of manually curated class/function info in log messages

Revision 25239  Directory Listing
Modified Tue Jul 19 13:02:17 2016 UTC (14 months, 1 week ago) by msmolens
BUG: Fix OpenGL errors/segfault when entering volume rendering module

The following workflow triggered OpenGL errors (when using the VTK OpenGL
backend) followed by a segfault (when using the VTK OpenGL2 backend):

1. Set 3D-only layout, restart app
2. Load volume
3. Enter the volume rendering module

For the OpenGL2 backend, the top of the stack trace is similar to the following:

 	vtkOpenGL-7.1.dll!vtkShaderProgram::IsUniformUsed(const char * cname) Line 847	C++
 	vtkOpenGL-7.1.dll!vtkOpenGLPolyDataMapper2D::SetMapperShaderParameters(vtkOpenGLHelper & cellBO, vtkViewport * viewport, vtkActor2D * actor) Line 409	C++
 	vtkOpenGL-7.1.dll!vtkOpenGLPolyDataMapper2D::UpdateShaders(vtkOpenGLHelper & cellBO, vtkViewport * viewport, vtkActor2D * actor) Line 325	C++
 	vtkOpenGL-7.1.dll!vtkOpenGLPolyDataMapper2D::RenderOverlay(vtkViewport * viewport, vtkActor2D * actor) Line 874	C++
 	vtkRendering-7.1.dll!vtkActor2D::RenderOverlay(vtkViewport * viewport) Line 125	C++
 	vtkRendering-7.1.dll!vtkRenderer::PickGeometry() Line 1810	C++
 	vtkOpenGL-7.1.dll!vtkOpenGLRenderer::DevicePickRender() Line 602	C++
 	vtkRendering-7.1.dll!vtkRenderer::PickRender(vtkPropCollection * props) Line 1735	C++
 	vtkRendering-7.1.dll!vtkRenderer::PickProp(double selectionX1, double selectionY1, double selectionX2, double selectionY2) Line 1559	C++
 	vtkRendering-7.1.dll!vtkRenderer::PickProp(double selectionX, double selectionY) Line 432	C++
 	vtkRendering-7.1.dll!vtkViewport::PickPropFrom(double selectionX, double selectionY, vtkPropCollection * pickfrom) Line 721	C++
 	vtkRendering-7.1.dll!vtkPropPicker::PickProp(double selectionX, double selectionY, vtkRenderer * renderer) Line 87	C++
 	vtkRendering-7.1.dll!vtkPropPicker::PickProp(double selectionX, double selectionY, vtkRenderer * renderer, vtkPropCollection * pickfrom) Line 63	C++
 	vtkRendering-7.1.dll!vtkPropPicker::Pick(double selectionX, double selectionY, double __formal, vtkRenderer * renderer) Line 49	C++
 	vtkSlicerAnnotationsModuleVTKWidgets.dll!vtkAnnotationROIRepresentation2D::ComputeInteractionState(int X, int Y, int __formal) Line 644	C++
 	vtkInteraction-7.1.dll!vtkAbstractWidget::SetEnabled(int enabling) Line 155	C++
 	vtkRendering-7.1.dll!vtkInteractorObserver::On() Line 73	C++
 	vtkSlicerAnnotationsModuleMRMLDisplayableManager.dll!vtkMRMLAnnotationROIDisplayableManager::CreateWidget(vtkMRMLAnnotationNode * node) Line 192	C++
 	vtkSlicerAnnotationsModuleMRMLDisplayableManager.dll!vtkMRMLAnnotationDisplayableManager::AddAnnotation(vtkMRMLAnnotationNode * annotationNode) Line 2166	C++
 	vtkSlicerAnnotationsModuleMRMLDisplayableManager.dll!vtkMRMLAnnotationDisplayableManager::OnMRMLSceneNodeAdded(vtkMRMLNode * node) Line 464	C++
 	MRMLLogic.dll!vtkMRMLAbstractLogic::ProcessMRMLSceneEvents(vtkObject * caller, unsigned long event, void * callData) Line 476	C++
 	MRMLLogic.dll!vtkMRMLAbstractLogic::MRMLSceneCallback(vtkObject * caller, unsigned long eid, void * clientData, void * callData) Line 173	C++
 	vtkCommon-7.1.dll!vtkCallbackCommand::Execute(vtkObject * caller, unsigned long event, void * callData) Line 43	C++
 	MRMLCore.dll!vtkEventBroker::InvokeObservation(vtkObservation * observation, unsigned long eid, void * callData) Line 842	C++
 	MRMLCore.dll!vtkEventBroker::ProcessEvent(vtkObservation * observation, vtkObject * caller, unsigned long eid, void * callData) Line 687	C++
 	MRMLCore.dll!vtkEventBroker::Callback(vtkObject * caller, unsigned long eid, void * clientData, void * callData) Line 914	C++
 	vtkCommon-7.1.dll!vtkCallbackCommand::Execute(vtkObject * caller, unsigned long event, void * callData) Line 43	C++
 	vtkCommon-7.1.dll!vtkSubjectHelper::InvokeEvent(unsigned long event, void * callData, vtkObject * self) Line 619	C++
 	vtkCommon-7.1.dll!vtkObject::InvokeEvent(unsigned long event, void * callData) Line 785	C++
 	MRMLCore.dll!vtkMRMLScene::AddNode(vtkMRMLNode * n) Line 1241	C++
 	vtkSlicerAnnotationsModuleMRML.dll!vtkMRMLAnnotationNode::Initialize(vtkMRMLScene * mrmlScene) Line 668	C++
 	vtkSlicerAnnotationsModuleMRML.dll!vtkMRMLAnnotationControlPointsNode::Initialize(vtkMRMLScene * mrmlScene) Line 702	C++
 	vtkSlicerAnnotationsModuleMRML.dll!vtkMRMLAnnotationLinesNode::Initialize(vtkMRMLScene * mrmlScene) Line 570	C++
 	vtkSlicerAnnotationsModuleMRML.dll!vtkMRMLAnnotationROINode::Initialize(vtkMRMLScene * mrmlScene) Line 47	C++
 	vtkSlicerVolumeRenderingModuleLogic.dll!vtkSlicerVolumeRenderingLogic::UpdateDisplayNodeFromVolumeNode(vtkMRMLVolumeRenderingDisplayNode * displayNode, vtkMRMLVolumeNode * volumeNode, vtkMRMLVolumePropertyNode * * propNode, vtkMRMLAnnotationROINode * * roiNode) Line 939	C++
 	qSlicerVolumeRenderingModuleWidgets.dll!qSlicerVolumeRenderingModuleWidgetPrivate::createVolumeRenderingDisplayNode(vtkMRMLVolumeNode * volumeNode) Line 249	C++
 	qSlicerVolumeRenderingModuleWidgets.dll!qSlicerVolumeRenderingModuleWidget::onCurrentMRMLVolumeNodeChanged(vtkMRMLNode * node) Line 346	C++
	...

The errors/segfault occur when hardware picking is performed before the render
window has created an OpenGL context. Usually render windows create a context on
their first render, but that doesn't happen in this case because the slice views
aren't visible; see [1].

This commit fixes the problem by forcing an initial render when creating a slice
view. This ensures that the render window has a context, which in turn prevents
the OpenGL errors/segfault in the above workflow, and possibly others.

[1] https://github.com/commontk/CTK/blob/bacd360/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp#L229-L233.

Revision 25238  Directory Listing
Modified Tue Jul 19 12:43:46 2016 UTC (14 months, 1 week ago) by pinter
STYLE: Update obsolete CMake macro for generating modules

slicerMacroBuildQtModule is obsolete, so slicerMacroBuildLoadableModule is now used instead in the modules where it was still found.

Revision 25237  Directory Listing
Modified Mon Jul 18 14:17:00 2016 UTC (14 months, 1 week ago) by msmolens
BUG: Fix OpenGL errors in py_RSNA2012ProstateDemo test

Debug builds showed OpenGL errors while running the py_RSNA2012ProstateDemo
test.

The problem is that vtkMRMLAnnotationDisplayableManager could directly call
vtkRenderer::Render() in some cases, but only vtkRenderWindow should call that
method. The errors occur when OpenGL functions are called before an OpenGL
context has been initialized. When the VTK OpenGL2 backend is enabled, running
the py_RSNA2012ProstateDemo test leads to a crash.

See the documentation for vtkRenderer::Render():
https://github.com/Kitware/VTK/blob/5f52c1a91a9e9fbfc1efe0d14b3c11b548c7acb1/Rendering/Core/vtkRenderer.h#L231-L236

This commit replaces the direct call to vtkRenderer::Render() with a call to the
displayable manager's RequestRender() method. This queues a render request to be
handled by the framework at an appropriate time.

Revision 25234  Directory Listing
Modified Mon Jul 11 18:13:22 2016 UTC (14 months, 2 weeks ago) by pinter
ENH: Added Segment Editor message in Editor and feature in SH

Message about Segment Editor has been added to the Editor module as agreed with Ron. Segment subject hierarchy plugin extended with Segment Editor option

Revision 25222  Directory Listing
Modified Fri Jul 8 17:53:33 2016 UTC (14 months, 2 weeks ago) by msmolens
COMP: Update usage of WRAP_EXCLUDE for Python

VTK has changed semantics of WRAP_EXCLUDE so that files with that property are
no longer ignored by Python wrapping. To explicitly exclude files from Python
wrapping, it's now necessary to set WRAP_EXCLUDE_PYTHON.

This fixes a build error like the following:

    '/path/to/Slicer/Modules/Loadable/VolumeRendering/VolumeRenderingReplacements/VolumeRenderingReplacementsObjectFactory.h',
    needed by 'Modules/Loadable/VolumeRendering/VolumeRenderingReplacements/VolumeRenderingReplacementsObjectFactoryPython.cxx',
    missing and no known rule to make it

See https://github.com/Kitware/VTK/commit/e6f75b9.

Revision 25221  Directory Listing
Modified Fri Jul 8 17:53:31 2016 UTC (14 months, 2 weeks ago) by msmolens
COMP: Update usage of deprecated SetUpdateExtent methods

VTK has deprecated SetUpdateExtent methods on vtkAlgorithm, such as
SetUpdateExtent() and SetUpdateExtentToWholeExtent(). Update code that uses the
deprecated methods.

See https://github.com/Kitware/VTK/commit/f020ebb.

Co-authored-by: Adam Rankin <arankin@robarts.ca>
Co-authored-by: Max Smolens <max.smolens@kitware.com>

Revision 25209  Directory Listing
Modified Fri Jul 8 00:11:10 2016 UTC (14 months, 2 weeks ago) by pinter
BUG: Fixed py_SegmentationModuleTest1

Uses NRRD for CT and vtm/vtp (which is the default file format for polydata-master segmentations) for structures instead of DICOM(-RT)
Closes #4228

Revision 25206  Directory Listing
Modified Wed Jul 6 01:29:30 2016 UTC (14 months, 2 weeks ago) by jcfr
ENH: Add new segmentations infrastructure

This commit integrates the segmentations infrastructure that has been
incubated in the SlicerRT project. It is a new paradigm for handling
segmentations, see slides [1] to understand the underlying concepts.

[1] https://www.slicer.org/slicerWiki/index.php/File:20160526_Segmentations.pptx

More specifically, it adds:

* vtkSegmentationCore library (only depends on VTK)

* Segmentations loadable module including:
  - EditorEffects
  - Logic
  - MRML
  - MRML displayable manager
  - Widgets

* Segment editor scripted module

Co-authored-by:
  Andras Lasso <lasso@queensu.ca>
  Adam Rankin <arankin@robarts.ca> (initial implementation round for segmentation MRML and containers)
  Kyle Sunderland <1krs1@queensu.ca> (developed vtkPlanarContourToClosedSurfaceConversionRule)
  Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>  (build infrastructure and compilation warning fixes)

From: Csaba Pinter <csaba.pinter@queensu.ca>

Revision 25205  Directory Listing
Modified Mon Jul 4 21:53:51 2016 UTC (14 months, 3 weeks ago) by jcfr
STYLE: Facilitate re-use of vtkImageFillROI relocating to Base/Logic

Anticipating the re-use of the class by other C++ module, this commit
moves the class to Base/Logic.

From: Csaba Pinter <csaba.pinter@queensu.ca>

Revision 25200  Directory Listing
Modified Tue Jun 21 18:03:00 2016 UTC (15 months ago) by alexy
ENH: 4217. Added presets for DTI scalar volumes (like FA etc.). Did it for both Volumes and VolumeRendering modules.

Revision 25187  Directory Listing
Modified Mon Jun 13 16:57:22 2016 UTC (15 months, 1 week ago) by msmolens
COMP: Remove usage of #include <vtksys/stl/*>

VTK no longer requires this compatibility layer and instead directly includes
the STL headers. In preparation for upgrading the version of VTK that Slicer
uses, directly include the STL headers in Slicer as well.

See https://github.com/Kitware/VTK/commit/eaf0f6a.

From: Max Smolens <max.smolens@kitware.com>

Revision 25178  Directory Listing
Modified Fri Jun 10 05:20:23 2016 UTC (15 months, 2 weeks ago) by jcfr
BUG: Fix logging warning message when slicer.vtkPVScalarBarActor doesn't exist

This commit fixes a bug with logging a warning message. Because 'slicer.logging'
doesn't exist, the call to 'slicer.logging.warning()' failed with an error like:

      File "/path/to/Slicer-build/lib/Slicer-4.5/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 25, in __init__
	slicer.logging.warning("SliceAnnotations: Disable features relying on vtkPVScalarBarActor")
    AttributeError: 'module' object has no attribute 'logging'

Now the code calls 'logging.warning()'.

This warning was added in r24058. As described in that commit, the warning can
be triggered by starting Slicer with '--disable-builtin-loadable-modules'.

From: Max Smolens <max.smolens@kitware.com>

Revision 25171  Directory Listing
Modified Wed Jun 8 20:08:41 2016 UTC (15 months, 2 weeks ago) by jcfr
ENH: Add support for managing slice orientation presets

This commit generalizes the concept of slice orientation known as
Axial, Sagittal and Coronal so that it is possible to add, rename and
delete new ones.

Default presets (Axial, Sagittal and Coronal) are associated to a default
slice node in the application logic.

Handle orientation as 3x3 because maintaining sliceOrigin information
in matrices that are orientation presets is not relevant.

Notes:

(1) Mark Get/SetOrientationReference as protected: These methods are only
    used internally and could ultimately be removed by refactoring
    "RotateToVolumePlane()"

(2) Remove unused SetOrientationString: The method is not used in any Slicer
    extensions.

(3) Explicitly setting the orienation string to "Reformat" is
    not needed anymore because "GetOrientation()" or "GetOrientationString()"
    will return "Reformat" if the SliceToRAS matrix is not one of the preset.

(4) For sake of consistency, in the RenameSliceOrientationPreset, the
    orientation reference is also renamed.

(5) In "Copy()" method, Orientation and OrientationReference are set
    after the presets.

(6) Remove unused SetOrientationToReformat() function. At the time of this
    commit, it was used only in "SlicerRT/ExternalBeamPlanning/Logic/vtkSlicerExternalBeamPlanningModuleLogic"
    and the maintainer of the module planned on removing the call.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Co-authored-by: Andras Lasso <lasso@queensu.ca>

From: Davide Punzo <punzodavide@hotmail.it>

Revision 25152  Directory Listing
Modified Fri Jun 3 05:16:05 2016 UTC (15 months, 3 weeks ago) by jcfr
COMP: vtkSlicerTablesLogic: Fix -Wconversion-null warning

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25139  Directory Listing
Modified Wed Jun 1 15:39:13 2016 UTC (15 months, 3 weeks ago) by jcfr
BUG: Fix SubjectHierarchy generic tests

This commit fixes a regression introduced in r25128 (STYLE: Simplify
import of Logic/MRML/DisplayableManager python modules)

$ ctest -R py_SubjectHierarchy
Test project /home/jcfr/Projects/Slicer-Release/Slicer-build
    Start 592: py_SubjectHierarchyGenericSelfTest
1/2 Test #592: py_SubjectHierarchyGenericSelfTest .......   Passed    7.27 sec
    Start 593: py_SubjectHierarchyCorePluginsSelfTest
2/2 Test #593: py_SubjectHierarchyCorePluginsSelfTest ...   Passed    5.37 sec

Revision 25134  Directory Listing
Modified Tue May 31 06:11:46 2016 UTC (15 months, 3 weeks ago) by jcfr
PERF: Speedup loading of modules including Editor effects

Loading time improved by ~45% (2.6s -> 1.4s, warm cache)
for the following modules:

* Editor
* ThresholdThreadingTest
* SlicerMRBMultipleSaveRestoreTest
* SlicerMRBMultipleSaveRestoreLoopTest
* NeurosurgicalPlanningTutorialMarkupsSelfTest

Revision 25126  Directory Listing
Modified Tue May 31 06:11:31 2016 UTC (15 months, 3 weeks ago) by jcfr
STYLE: Update python script to explicitly import teem

Revision 25118  Directory Listing
Modified Tue May 24 18:41:32 2016 UTC (16 months ago) by naucoin
COMP: fix illegal character compiler warning

Change invalid character to an apostrophe in Tables module acknowledgement text.

Fixes the following compiler warning:
Slicer/Modules/Loadable/Tables/qSlicerTablesModule.cxx:95:187: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
  ...funded by OCAIRO, the Applied Cancer Research Unit program of Cancer Care Ontario, and Department of Anesthesia and Critical Care Medicine, Children<92>s Hospital of Philadelphia.";


Revision 25110  Directory Listing
Modified Mon May 23 06:13:52 2016 UTC (16 months ago) by jcfr
STYLE: Remove obsolete variable VTK_USE_INSTANTIATOR_NEW

Explicitly setting this variable is not required by VTK since
kitware/VTK@1b707d4 from 2002-08-16.

Revision 25106  Directory Listing
Modified Sat May 21 23:03:04 2016 UTC (16 months ago) by pieper
BUG: #4191 back out optimization that broke tests

https://github.com/Slicer/Slicer/pull/505

From: Steve Pieper <pieper@isomics.com>

Revision 25104  Directory Listing
Modified Sat May 21 10:13:32 2016 UTC (16 months ago) by jcfr
PERF: Reduce startup time by lazily loading Welcome module HTML. Fixes #4198

This commit reduces startup time by ~30% (5.5s -> 3.9s).

Results obtained for a release build on Ubuntu 15.10, 64GB/M.2 PCIe
NVMe SSD/Quad Core 3.80GHz.

While loading the Welcome module is still  slower (~10ms), the improvement
is significant.


Details Stats:


Notes: MeasureStartupTimes.py has been locally modified to avoid generating
Modules.json. Modules.json has been updated to list only 4 modules.


$ ~/Projects/Slicer/Applications/SlicerApp/Testing/Python/MeasureStartupTimes.py --excluding-one-module -n5 ./Slicer

[1/4]
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore EventBroker
1/5: 3.81s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore EventBroker
2/5: 3.81s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore EventBroker
3/5: 3.79s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore EventBroker
4/5: 3.82s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore EventBroker
5/5: 3.84s
Average: 3.81s

[2/4]
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore GradientAnisotropicDiffusion
1/5: 3.84s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore GradientAnisotropicDiffusion
2/5: 3.83s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore GradientAnisotropicDiffusion
3/5: 3.83s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore GradientAnisotropicDiffusion
4/5: 3.75s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore GradientAnisotropicDiffusion
5/5: 3.85s
Average: 3.82s

[3/4]
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore Welcome
1/5: 3.70s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore Welcome
2/5: 3.75s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore Welcome
3/5: 3.73s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore Welcome
4/5: 3.76s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore Welcome
5/5: 3.68s
Average: 3.72s

[4/4]
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore CompareVolumes
1/5: 3.78s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore CompareVolumes
2/5: 3.78s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore CompareVolumes
3/5: 3.80s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore CompareVolumes
4/5: 3.82s
Slicer --no-splash --exit-after-startup --testing --modules-to-ignore CompareVolumes
5/5: 3.76s
Average: 3.79s

Revision 25102  Directory Listing
Modified Sat May 21 06:34:40 2016 UTC (16 months ago) by jcfr
ENH: Welcome: Add shortcut button to open extensions manager. Fixes #3839

Reviewed-by: Lauren O'Donnell <odonnell@bwh.harvard.edu>

Revision 25095  Directory Listing
Modified Fri May 20 22:40:02 2016 UTC (16 months ago) by jcfr
STYLE: Add vtkAddonTestingUtilities and vtkAddonTestingMacros

This is done anticipating the addition of "vtkAddonMathUtilities" and
associated test to vtkAddon.

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 25094  Directory Listing
Modified Fri May 20 16:44:02 2016 UTC (16 months ago) by pieper
PERF: #4191 don't update widgets in batch mode

This really improves the performance of LandmarkRegistration,
particularly when there are large numbers of fiducials
being manipulated.  I haven't seen any side effects.

ENH: request future update when ignoring batch mrml event

Per suggestion from Andras, include a request for future
update to be sure that the widgets are updated
before the render happens.

BUG: #4191 update landmark registration

Addresses slowdown with large numbers of fiducials
by entering batch mode for bulk operations on the scene.

From: Steve Pieper <pieper@isomics.com>

Revision 25093  Directory Listing
Modified Fri May 20 16:10:39 2016 UTC (16 months ago) by pieper
COMP: #4197 fix missing test implementation

function was not defined with OpenGL2 backend

From: Steve Pieper <pieper@isomics.com>

Revision 25091  Directory Listing
Modified Thu May 19 14:41:35 2016 UTC (16 months, 1 week ago) by naucoin
BUG: fix failing ModelToLabelMapTest

When putting in a fix for using the passed in label value, the baseline file
OAS10001.1.mha was removed as it didn't seem to be in use any more. A closer
examination of the ctest output showed that that file was being
picked up as the baseline image when the test was passing as of May 11/16:
http://slicer.cdash.org/testDetails.php?test=7318110&build=825978
BaselineImageName	OAS10001.1.mha

With the last change[1], the test is failing:
http://slicer.cdash.org/testDetails.php?test=7329855&build=828864
BaselineImageName	OAS10001.mha

Local testing shows that the test would pass if the file OAS10001.1.mha was
reinstated, but to avoid confusion going forward as to how ctest globs
the baseline image files, I decided to go with testing the CLI with the
same input model (transformed to overlap the input image volume when both
are loaded in Slicer) for both the 255 and 128 output label cases, and to generate a
new output baseline image. I removed the untransformed model file and the now unused
baseline image and, locally, ctest is comparing the outputs of both tests against
teh correct baselines.

[1] https://github.com/Slicer/Slicer/commit/8707bb9ed2503f67ac0af29782c16db97adeab40

Reported-by: Andras Lasso <lasso@queensu.ca>

Issue #3233

Revision 25083  Directory Listing
Modified Thu May 19 07:10:48 2016 UTC (16 months, 1 week ago) by jcfr
STYLE: Automatically enable "ignore-slicerrc" if "testing" option is given

This simplifies writing of tests.

Revision 25065  Directory Listing
Modified Mon May 16 17:08:01 2016 UTC (16 months, 1 week ago) by pinter
STYLE: Removed incorrect version numbers from module documentation XMLs

Revision 25062  Directory Listing
Modified Fri May 13 17:47:09 2016 UTC (16 months, 1 week ago) by naucoin
BUG: Enable use of labelValue for output label map

A bug was introduced in svn 22211 [1] when the labelValue parameter in the ModelToLabelMap CLI was exposed to the interface.
The erosion and dilation filters used in the code are binary ones and by default use the maximum of the data type of the label
map, in this case hard coded to 255 for unsigned char. In order to do the full pipeline with the user selected label value, the
code would need to be updated to use:
erodeFilter->SetErodeValue(labelValue);
dilateFilter->SetDilateValue(labelValue);
A quicker fix is to adjust the output label map in the last step to set the desired label value, implemented in this patch.

Investigating this issue, the hard coded kernel size was set into a variable, in anticipation of exposing it via the XML
(quick tests showed no visible difference).

Added a test and output using the label value 128. When run from the GUI, the model and volume were offset, so a transformed model
was generated that overlaps the input volume and was used to generate the new baseline comparison volume.
Removed unused baseline image.

[1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=22211

Issue #3233

Revision 25061  Directory Listing
Modified Thu May 12 20:08:45 2016 UTC (16 months, 2 weeks ago) by pinter
STYLE: Updated user documentation for several modules. It includes updates due to functionality changes, and rephrasing sections to make it more understandable.

From: Hillary Lia <14hl43@queensu.ca>

Revision 25060  Directory Listing
Modified Sun May 8 05:45:45 2016 UTC (16 months, 2 weeks ago) by jcfr
STYLE: Fix "parentheses" warning in qSlicerVolumeRenderingModuleWidget

Revision 25058  Directory Listing
Modified Sun May 8 05:37:04 2016 UTC (16 months, 2 weeks ago) by jcfr
STYLE: Fix unused-parameter and unused-variable warnings

Revision 25057  Directory Listing
Modified Sun May 8 05:01:00 2016 UTC (16 months, 2 weeks ago) by jcfr
PERF: Improve interaction node lookup

This commit updates the code to retrieve the node using its
singleton node id.

Suggested-by: Andras Lasso <lasso@queensu.ca>
Suggested-by: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25056  Directory Listing
Modified Sun May 8 05:00:56 2016 UTC (16 months, 2 weeks ago) by jcfr
PERF: Improve selection node lookup

Similarly to r25054, this commit updates the code to retrieve the node
using its singleton node id.

Suggested-by: Andras Lasso <lasso@queensu.ca>
Suggested-by: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25054  Directory Listing
Modified Sun May 8 01:54:52 2016 UTC (16 months, 2 weeks ago) by jcfr
PERF: Improve selection node lookup

This commit updates the code to retrieve the node using its singleton
node id.

This saves significant time (2 min to ~10s) when opening the Models
module with a scene including ~1200 model nodes. It saves a few percent
when "Include Fibers" is activated.

Co-authored-by: Andras Lasso <lasso@queensu.ca>
Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 25052  Directory Listing
Modified Sat May 7 19:11:04 2016 UTC (16 months, 2 weeks ago) by lassoan
BUG: Removed memory leaks in Python method calls

Py_DECREF(arguments) is called after each Python method calls from C++, but it was missing at a few places, so input arguments to Python method calls were leaked.

Revision 25034  Directory Listing
Modified Fri Apr 29 16:09:30 2016 UTC (16 months, 3 weeks ago) by alexy
ENH: Added SQLite MRML storage node, test for it, and also it's support in the Tables module.

Revision 25018  Directory Listing
Modified Fri Apr 22 22:34:27 2016 UTC (17 months ago) by naucoin
STYLE: Update Models module documentation.

This patch updates the documentation file for the Display and Clipping
sections of the Models module.
Added documentation for the the View drop down and the additions to the
Scalars section.
Changed string-enumerations in Material Presets and Clipping to parameters
as they were not showing up on the wiki page.


Revision 25008  Directory Listing
Modified Wed Apr 13 16:39:57 2016 UTC (17 months, 1 week ago) by lassoan
BUG: Fixed subject hierarchy node naming tests

Revision 25007  Directory Listing
Modified Tue Apr 12 15:09:55 2016 UTC (17 months, 1 week ago) by lassoan
ENH: Fixed subject hierarchy folder node names in DICOM plugin

Removed unnecessary postfix.

Revision 25006  Directory Listing
Modified Tue Apr 12 15:07:05 2016 UTC (17 months, 1 week ago) by lassoan
ENH: Fixed subject hierarchy folder node names

If a subject hierarchy node is associated with a data node then their names are synchronized; and to avoid name conflict, the subject hierarchy node gets a _SubjectHierarchy postfix in its name.

If there is no associated data node then the postfix is not necessary and it's confusing when it is shown to the user (e.g., when the user is asked to select a SubjectHierarchy folder). 

This commit changes the behavior so that _SubjectHierarchy is only added if a data node is specified.

Revision 25003  Directory Listing
Modified Mon Apr 11 04:57:13 2016 UTC (17 months, 2 weeks ago) by lassoan
BUG: Fixed edit properties option in node selectors

Fixes http://www.na-mic.org/Bug/view.php?id=2109

Now any module can associate a MRML node type with a module (instead of having a hardcoded list of modules
in qSlicerApplication) and when switching to a module, the chosen node is selected as active node.
Associations can be added by calling qSlicerApplication::registerNodeModule().
Multiple modules can be associated with the same MRML node type.

The best module for a specific node instance is determined run-time, by calling
qSlicerAbstractModuleWidget::nodeEditable() for each candidate and choosing
the one that has the highest confidence in handling the node.
This mechanism is used for selecting the CLI module that corresponds to a specific CLI module parameter node.
This mechanism is also used for switching to volume rendering module if a volume rendering clipping ROI node
is selected for editing (instead of switching to the Annotations module).
The most suitable module's qSlicerAbstractModuleWidget::setEditedNode() method is called to select the currently edited node.
qSlicerAbstractModuleWidget::nodeEditable() and qSlicerAbstractModuleWidget::setEditedNode() methods can be overridden
in scripted loadable modules as well.

As edited node selection is now possible using a clean, unified method call, it is no longer necessary
to access GUI widgets directly. Therefore, almost all editProperties() method calls in subject hierarchy plugins were
removed (replaced by a common implementation in the base class). This new, simplified method fixes robustness issues
of using node name filters for selecting a node in model hierarchy, inability to choose annotation hierarchy nodes, etc.

qSlicerAbstractModuleWidget::setEditedNode(vtkMRMLNode* node, QString role, QString context) has two extra (optional)
arguments. Role can be used to specify additional nodes for a module (e.g., if there are multiple inputs for a module
then role argument can select between them). Context can be used for specifying a sub-selection within a node (for
example, Segment Editor module can be activated for a selected segment - specified by 'context' - of a specific
segmentation node - specified by 'node').

Fixed code review errors (typos and API simplification).

Revision 25002  Directory Listing
Modified Tue Apr 5 03:47:08 2016 UTC (17 months, 3 weeks ago) by jcfr
ENH: New class DICOMStoreSCPProcess inherited from DICOMProcess

- DICOMListener now inherits from DICOMStoreSCPProcess since DICOMListener
depends on storescp
- improve error handling and feedback for user

From: Christian Herz <christian.herz@mevis.fraunhofer.de>

Revision 25001  Directory Listing
Modified Tue Apr 5 03:37:54 2016 UTC (17 months, 3 weeks ago) by jcfr
BUG: Correct warning display bug in GrowCutEffect

(1) Corrects wrongfully named method `confirmOkCancel` to
`confirmOkCancelDisplay` introduced to replace manually created
QMessageBox in r24900.

(2) Correct typos in warning message.

From: Alexis Girault <alexis.girault@kitware.com>

Revision 24998  Directory Listing
Modified Mon Apr 4 20:40:02 2016 UTC (17 months, 3 weeks ago) by lassoan
ENH: Added convert section to transforms module

Conversion of transform to displacement field was often requested. Added a new "Convert" section at the bottom of Transforms module that allows converting a transform to a grid transform or to a displacement volume.

Revision 24997  Directory Listing
Modified Fri Apr 1 17:10:26 2016 UTC (17 months, 3 weeks ago) by lassoan
ENH: Simplified hiding of volume rendering display nodes

Volume rendering display node was set to be hidden at the lowest level of the class hierarchy:
* vtkMRMLCPURayCastVolumeRenderingDisplayNode -> this->SetHideFromEditors(1);
* vtkMRMLVolumeRenderingDisplayNode -> this->SetHideFromEditors(false);
* vtkMRMLDisplayNode -> this->HideFromEditors = 1;
* vtkMRMLNode -> this->HideFromEditors = 0;

This was unnecessarily complex and confusing. Simplified it by removing HideFromEditors flag adjustment in all volume rendering display node base class and all children classes:
* vtkMRMLDisplayNode -> this->HideFromEditors = 1;
* vtkMRMLNode -> this->HideFromEditors = 0;

Revision 24995  Directory Listing
Modified Thu Mar 31 18:56:06 2016 UTC (17 months, 3 weeks ago) by naucoin
BUG: fix hide from editor flag on volume rendering nodes

The volume rendering nodes are appearing in the Data tree
after the change to set the default of the hide from editors
flag to false on the MRML node superclass.
This change sets them hidden by default and sets up the
display node combo box to show them in the Volume
Rendering Inputs panel.

Issue #2906

Revision 24994  Directory Listing
Modified Thu Mar 31 17:46:14 2016 UTC (17 months, 3 weeks ago) by naucoin
ENH: Allow setting color node when loading volumes

Add support to pick a non default color node when loading in a volume
via python or the Add Data widget.

In the volumes reader, check for a new property, colorNodeID, and use it to
set the color node information on the volume's display node after reading.

This can be used from python:

properties = {}
properties['colorNodeID'] = 'vtkMRMLColorTableNodeWarm1'
slicer.util.loadVolume(fileName, properties)

Added a color table node selector to the Volumes module IO widget. Set the
default color nodes via the color logic pointer, for label maps and
greyscales. Pass the colorNodeID property to the Volumes IO reader.
Added testing the color node setting to the widget test.

Revision 24977  Directory Listing
Modified Mon Mar 21 22:48:40 2016 UTC (18 months ago) by jcfr
COMP: Fix -Wnarrowing and -Wunused-variable warnings

/path/to/Slicer/Modules/Loadable/Tables/qSlicerTablesModuleWidget.cxx: In member function ‘void qSlicerTablesModuleWidget::onMRMLTableNodeModified(vtkObject*)’:
/path/to/Slicer/Modules/Loadable/Tables/qSlicerTablesModuleWidget.cxx:167:21: warning: unused variable ‘tableNode’ [-Wunused-variable]
   vtkMRMLTableNode* tableNode = vtkMRMLTableNode::SafeDownCast(caller);
                     ^

/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLOrientationMarkerDisplayableManager.cxx: In member function ‘void vtkMRMLOrientationMarkerDisplayableManager::vtkInternal::UpdateMarkerSize()’:
/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLOrientationMarkerDisplayableManager.cxx:511:38: warning: narrowing conversion of ‘(maxX - minX)’ from ‘double’ to ‘int’ inside { } is ill-formed in C++11 [-Wnarrowing]
   int rendererSizeInPixels[2] = {maxX-minX, maxY-minY};
                                      ^
/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLOrientationMarkerDisplayableManager.cxx:511:49: warning: narrowing conversion of ‘(maxY - minY)’ from ‘double’ to ‘int’ inside { } is ill-formed in C++11 [-Wnarrowing]
   int rendererSizeInPixels[2] = {maxX-minX, maxY-minY};
                                                 ^
/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLRulerDisplayableManager.cxx: In member function ‘void vtkMRMLRulerDisplayableManager::vtkInternal::UpdateRuler()’:
/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLRulerDisplayableManager.cxx:289:42: warning: narrowing conversion of ‘(maxX - minX)’ from ‘double’ to ‘int’ inside { } is ill-formed in C++11 [-Wnarrowing]
       int rendererSizeInPixels[2] = {maxX-minX, maxY-minY};
                                          ^
/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLRulerDisplayableManager.cxx:289:53: warning: narrowing conversion of ‘(maxY - minY)’ from ‘double’ to ‘int’ inside { } is ill-formed in C++11 [-Wnarrowing]
       int rendererSizeInPixels[2] = {maxX-minX, maxY-minY};
                                                     ^

/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLRulerDisplayableManager.cxx: In member function ‘void vtkMRMLRulerDisplayableManager::vtkInternal::SetupRuler()’:
/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLRulerDisplayableManager.cxx:213:13: warning: unused variable ‘numberOfTickLines’ [-Wunused-variable]
   const int numberOfTickLines = 11;
             ^

/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLRulerDisplayableManager.cxx:281:15: warning: unused variable ‘viewport’ [-Wunused-variable]
       double* viewport = this->MarkerRenderer->GetViewport();
               ^

/path/to/Slicer/Libs/MRML/DisplayableManager/vtkMRMLRulerDisplayableManager.cxx:338:79: warning: narrowing conversion of ‘rulerLineMarginPixel’ from ‘int’ to ‘double’ inside { } is ill-formed in C++11 [-Wnarrowing]
   double pointOrigin[3] = {double(viewWidthPixel)/2.0, rulerLineMarginPixel, 0};

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24975  Directory Listing
Modified Mon Mar 21 22:48:36 2016 UTC (18 months ago) by jcfr
COMP: vtkITK: Fix -Wsign-compare and -Wmaybe-uninitialized warnings

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24974  Directory Listing
Modified Mon Mar 21 22:48:33 2016 UTC (18 months ago) by jcfr
ENH: Modernizing vcl_ to std::

In all supported compilers, the need for vcl_ specialized
functions has been removed.  there is no longer a need
to have these overrides, and code is easier to read
and easier to maintain without these specializations.

The vcl_* definitions can now be greatly simplified.
After removing specializations for early non-conformant
c++ compilers the end result was that only the
std:: version of the functions could ever be
used by the compiler.

ITK_SCRIPT=ITK/Utilities/Maintenance/VCL_ModernizeNaming.py
SRC_BASE_DIR=$(pwd)
for ext in ".h" ".cxx" ".cpp" ".hxx" ".hpp" ".txx"; do
  find ${SRC_BASE_DIR} -type f -name "*${ext}" \         -exec python ${ITK_SCRIPT} {} \;
done

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 24973  Directory Listing
Modified Fri Mar 18 17:41:00 2016 UTC (18 months, 1 week ago) by pieper
BUG: #4162 check return value of zlib compression

Make sure there is a valid compressed buffer before using the
results.

Revision 24961  Directory Listing
Modified Tue Mar 8 22:45:21 2016 UTC (18 months, 2 weeks ago) by lassoan
ENH: Made view axis labels configurable

For some applications standard left/right, posterior/anterior, inferior/superior axis labels are not optimal. For example for eye image analysis temporal/nasal labels are more appropriate than left/right.
Labels may have to be view-specific, e.g., show standard labels on a large overview image and show custom labels in a view that shows a small segmented structure.

Implemented solution:
* vtkMRMLAbstractViewNode stores axis labels (SetAxisLabel/GetAxisLabel methods can be used to set/get the labels)
* vtkMRMLViewDisplayableManager and vtkMRMLOrientationMarkerDisplayableManager read labels from vtkMRMLAbstractViewNode instead of using hard-coded strings to show in Cube and Axes orientation markers and 3D cube labels
* DataProbe read labels from vtkMRMLAbstractViewNode instead of using hard-coded string

No user interface is implemented, as this is an advanced feature for module developers. Example use:

sliceNode = slicer.mrmlScene.GetNodeByID('vtkMRMLSliceNodeRed')
sliceNode.SetOrientationMarkerType(slicer.vtkMRMLAbstractViewNode.OrientationMarkerTypeAxes)
sliceNode.SetOrientationMarkerSize(slicer.vtkMRMLAbstractViewNode.OrientationMarkerSizeLarge)
sliceNode.SetAxisLabel(0,'Proximal')
sliceNode.SetAxisLabel(1,'Distal')

viewNode = slicer.mrmlScene.GetNodeByID('vtkMRMLViewNode1')
viewNode.SetOrientationMarkerType(slicer.vtkMRMLAbstractViewNode.OrientationMarkerTypeAxes)
viewNode.SetOrientationMarkerSize(slicer.vtkMRMLAbstractViewNode.OrientationMarkerSizeLarge)
viewNode.SetAxisLabel(0,'Proximal')
viewNode.SetAxisLabel(1,'Distal')

Revision 24960  Directory Listing
Modified Tue Mar 8 12:23:39 2016 UTC (18 months, 2 weeks ago) by lassoan
ENH: Added method for adding custom volume rendering preset

Revision 24959  Directory Listing
Modified Tue Mar 8 02:38:18 2016 UTC (18 months, 2 weeks ago) by lassoan
STYLE: Removed unused files

Revision 24958  Directory Listing
Modified Fri Mar 4 18:50:25 2016 UTC (18 months, 3 weeks ago) by lassoan
ENH: Added 3D Table view to layouts

3D Table view consists of a 3D view and a table with a vertical divider.

Revision 24954  Directory Listing
Modified Fri Feb 26 19:03:47 2016 UTC (18 months, 4 weeks ago) by alexy
BUG: 3702. Fixed multiple causes of crashes on the scene close described in http://www.na-mic.org/Bug/view.php?id=3702. Also enable glyphs display for all scalar components on slices.

Revision 24951  Directory Listing
Modified Fri Feb 26 04:07:20 2016 UTC (18 months, 4 weeks ago) by lassoan
ENH: Consolidated transform point to/from world methods

vtkMRMLTransformableNode had very limited TransformPointToWorld/TransformPointFromWorld methods, which did not even support non-linear transforms.

vtkMRMLMarkupsNode had TransformPointToWorld/TransformPointFromWorld methods with a vtkVector3D input/output.

Consolidated these methods: all of them are now in vtkMRMLTransformableNode, support non-linear transforms, and vtkVector3D implementation uses the simple C-array-based method.

Revision 24948  Directory Listing
Modified Thu Feb 25 16:23:28 2016 UTC (19 months ago) by lassoan
STYLE: Deleted empty directories

Most of them were probably leftovers from git-svn commits.

Revision 24945  Directory Listing
Modified Wed Feb 24 19:56:48 2016 UTC (19 months ago) by lassoan
ENH: Fixed markup position at time of MarkupAddedEvent

When vtkMRMLMarkupsNode::MarkupAddedEvent was triggered the markup position had always (0,0,0) position and it was later corrected in a subsequent modification.
This made it difficult to develop modules that used markups to get a single point position.

Revision 24944  Directory Listing
Modified Tue Feb 23 22:30:32 2016 UTC (19 months ago) by pinter
BUG: Fixed removal of virtual branches in subject hierarchy

Removal of a virtual branch is the responsibility of the owner plugin (or its module), so remove the virtual nodes from the list of nodes to delete when deleting a whole subject hierarchy branch

Revision 24941  Directory Listing
Modified Mon Feb 22 22:51:59 2016 UTC (19 months ago) by pinter
ENH: Added data node inspector to Subject hierarchy module

Previously there was only one inspector for the subject hierarchy node, but many times it is interesting to see the properties of the associated data node too. A second inspector has been added in another collapsible box.
MRML node inspector changed so that the node information label (PrintSelf) is in a collapsible box itself, thus the attributes are visible when opening the inspector, and the potentially very long information can only be seen if the section isopened.
Removed stray files and directories that have been found to have no purpose.

Revision 24937  Directory Listing
Modified Thu Feb 18 04:49:04 2016 UTC (19 months, 1 week ago) by lassoan
ENH: Split qSlicerSimpleMarkupsWidget to two smaller widgets

Split out qSlicerMarkupsPlaceWidget from qSlicerSimpleMarkupsWidget. The small qSlicerMarkupsPlaceWidget can be used in module GUIs for placing fiducials (and some basic manipulation, such as delete, change color, show/hide, lock are also available). It is also simpler to maintain two smaller widgets than one large widget.

The public interface of qSlicerSimpleMarkupsWidget is essentially unchanged.

Also added a Python selftest for qSlicerSimpleMarkupsWidget and qSlicerMarkupsPlaceWidget.

Revision 24936  Directory Listing
Modified Thu Feb 18 04:36:15 2016 UTC (19 months, 1 week ago) by lassoan
STYLE: Minor style fixes in TablesSelfTest.py

Revision 24931  Directory Listing
Modified Thu Feb 18 00:01:34 2016 UTC (19 months, 1 week ago) by pinter
BUG: Fixed display of cloned node if it has parent transform

Revision 24926  Directory Listing
Modified Wed Feb 10 20:04:52 2016 UTC (19 months, 2 weeks ago) by pieper
BUG: fixes in Editor PaintEffect implementation

No known bug related to these changes, but they were clearly
incorrect so it's best to fix them.

Thanks Csaba Pinter for finding them!

Revision 24924  Directory Listing
Modified Wed Feb 10 06:00:00 2016 UTC (19 months, 2 weeks ago) by lassoan
BUG: Fixed GetSliceIntersectionsVisibility warning on startup

"GetSliceIntersectionsVisibility: no scene" warning is not shown anymore. It was logged because the scene was not set yet when the widget was set up.

Revision 24923  Directory Listing
Modified Wed Feb 10 04:04:12 2016 UTC (19 months, 2 weeks ago) by lassoan
BUG: Added null-pointer check to avoid crash in qSlicerSimpleMarkupsWidget

Revision 24922  Directory Listing
Modified Wed Feb 10 03:56:29 2016 UTC (19 months, 2 weeks ago) by jcfr
ENH: VolumeRenderingModuleWidget: Extend API adding one new signal

Facilitate integration of VolumeRendering in custom application by
allowing any module to synchronized its current Scalar and Display MRML
nodes to the Volume rendering ones. Once the MRML are synchronized, this
can be used to update the GUI of both modules.

Use case driving this change is SlicerAstro.

Reviewed-by: Andras Lasso <lasso@queensu.ca>
Reviewed-by: Steve Pieper <pieper@bwh.harvard.edu>

From: Davide <punzodavide@hotmail.it>

Revision 24921  Directory Listing
Modified Wed Feb 10 03:46:57 2016 UTC (19 months, 2 weeks ago) by jcfr
ENH: Added modified event for SetNthMarkupAssociatedNodeID

Rational: Each time a markup is placed in 3d, we want to identify
the object it is placed on. This information is stored as associated
Node id. When a new mark up is placed, associated node id is set to
blank (" ") by default , MarkupAddedEvent is triggered and then associated
node id is set to appropriate node id. So there is no way of identifying
the associated node id of the newly added node using events.

This commit updates the function "SetNthMarkupAssociatedNodeID" so that
the event "NthMarkupModifiedEvent" is invoked.

Reviewed-by: Nicole Aucoin <nicole@bwh.harvard.edu>
Reviewed-by: Steve Pieper <pieper@bwh.harvard.edu>

From: Sumedha Singla <sumedha.singla@kitware.com>

Revision 24918  Directory Listing
Modified Wed Feb 3 22:57:50 2016 UTC (19 months, 3 weeks ago) by pinter
ENH: Allow in-place conversion of scalar volume to labelmap

If the combobox selecting the target labelmap is set to 'Replace current node', which is the None selection, then the currently selected node will be deleted, and the new node will be selected in Volumes module, so it will seem that only the type of the current node was changed.

Revision 24917  Directory Listing
Modified Wed Feb 3 19:05:41 2016 UTC (19 months, 3 weeks ago) by lassoan
BUG: Fixed crash in Models subject hierarchy plugin

In some cases vtkMRMLModelNode::SafeDownCast(node->GetAssociatedNode()) returned NULL and there was no NULL-check

Revision 24913  Directory Listing
Modified Sun Jan 31 17:02:40 2016 UTC (19 months, 3 weeks ago) by alexy
BUG: 3987. Added update of glyph on slices visibility checkboxes when a new volume is selected

Revision 24908  Directory Listing
Modified Fri Jan 29 18:29:10 2016 UTC (19 months, 3 weeks ago) by jcfr
ENH: Refactored view ruler and orientation marker

Ruler and orientation marker:
-----------------------------

- available in both 2D and 3D viewers

- easier to discover (available in viewer controller widgets and
  application settings)

- more customizable (size, visibility, custom ruler scales, orientation
  marker models)

- implemented with cleaner design (using displayable managers for
  rendering and regular node attributes for data storage).

New features:
-------------

- Ruler and orientation marker is configurable per viewer in the slice/3D
  view controller widgets (same way as all view options)

- Ruler and orientation marker can be shown in 3D view

- Default ruler orientation marker settings (and additional 3D view settings,
  such as orthographic projection, show 3D cube, axis labels, depth peeling)
  can be configured in the application settings (saved in .ini file)

- Allow using any model in the scene as orientation marker (for example, set a
  custom orientation marker in the 3D viewer:

    getNode('View1').SetOrientationMarkerHumanModelNodeID(getNode('ToriaClipped03').GetID() )

- All ruler and orientation marker settings (including custom orientation marker)
  are saved in the scene

- Added "thick" ruler mode: there is an option now to show the ruler with a
  thicker line and larger font so that it can be seen from a larger distance
  (e.g., interventional use)

Fixes bugs in the old implementation:
-------------------------------------

- ruler showed incorrect value when zoomed in or zoomed out very much (instead
  of hiding the ruler, it was kept displayed at an incorrect scale)

- Ruler was unusable in lightboxview: ruler line was clipped in half, label was
  not visible

- Some observers were not removed

Design changes compared to the old implementation:
--------------------------------------------------

- Ruler and orientation marker are rendered by displayable managers: This allows
  much simpler and more robust resource management and rendering update (there was
  previously an infinite loop in the orientation marker update causing Slicer crash
  by stack overflow).

- Orientation marker is loaded from a single file, color is stored in scalars:
  This makes the implementation simpler and displaying of multi-color custom
  models feasible.

Slicer core changes:
--------------------

- Removed roll/pitch/yaw buttons from 3D view: to reduce the additional
  complexity caused by adding 2 new buttons (for show/hide ruler and
  orientation marker)

Remarks and next steps:
----------------------

- Slice view corner annotations and scalar bar were left unchanged in the DataProbe
  module, as they were not obvious how to clean up and generalize. Slice corner
  annotations have to be made more generic, allowing displaying of custom text provided
  by various modules (see for example CornerAnnotations module).

- Scalar bar will need to be harmonized with the Color module's scalar bar display
  (that is currently only available in the 3D view).

From: Andras Lasso <lasso@queensu.ca>

Revision 24905  Directory Listing
Modified Fri Jan 29 18:27:12 2016 UTC (19 months, 3 weeks ago) by jcfr
ENH: Add infrastructure to support default MRML nodes

Allow modifying default node content: Scene can store "default" nodes. If
a default node is specified for a class then the content of that node will
be used to initialize new nodes and reset nodes.

Currently used only for 3D views but can be used for other purposes, too
(e.g., disable interpolation by default for volume nodes).

This is a backward incompatible change. Signature of

  vtkMRMLNode::Reset()

has been changed into

  vtkMRMLNode::Reset(vtkMRMLNode* defaultNode)

Co-authored-by: Csaba Pinter <csaba.pinter@queensu.ca>

From: Andras Lasso <lasso@queensu.ca>

Revision 24901  Directory Listing
Modified Tue Jan 26 05:30:39 2016 UTC (20 months ago) by jcfr
STYLE: Replace occurrences of QProgressDialog by slicer.util method calls

From: Christian Herz <christian.herz@mevis.fraunhofer.de>

Revision 24900  Directory Listing
Modified Tue Jan 26 05:30:37 2016 UTC (20 months ago) by jcfr
STYLE: Replace manually created qMessageBox by slicer.util method calls.

From: Christian Herz <christian.herz@mevis.fraunhofer.de>

Revision 24890  Directory Listing
Modified Tue Jan 26 04:17:57 2016 UTC (20 months ago) by jcfr
ENH: Add test for CloneVolume in vtkSlicerVolumesLogicTest1

This new test checks :
(1) That a cloned volume has no storage node
(2) That a cloned volume has display nodes not referencing
the original volume (fixed in commit 2525fc2 by copying only
the first display node and removing the others)
(3) That a cloned volume has the same imageData than the
original volume.

Also updates the other tests to use the testing macros
introduced in commit d58ba3b.

From: Alexis Girault <alexis.girault@kitware.com>

Revision 24887  Directory Listing
Modified Fri Jan 22 18:22:22 2016 UTC (20 months ago) by pieper
BUG: #4128 python ValueError on scene close after visiting Editor

Accessing the state of the parameter node during scene close
was causing an access to an incompletely build parameter node.

Important to note that node events can be invoked on singletons
during scene operations.

From: Steve Pieper <pieper@isomics.com>

Revision 24886  Directory Listing
Modified Thu Jan 21 21:27:16 2016 UTC (20 months ago) by pinter
STYLE: Removed unnecessary friend class declaration

Revision 24885  Directory Listing
Modified Thu Jan 21 15:11:24 2016 UTC (20 months ago) by pinter
BUG: Prevent clash of subject hierarchy and other hierarchies

When a model not in a model hierarchy was deleted, then the associated subject hierarchy was found (if SH was enabled, which is by default disabled) due to using the generic vtkMRMLHierarchyNode, and the model node was deleted twice, causing a crash. By downcasting to the expected hierarchy type the crash does not occur.

Revision 24882  Directory Listing
Modified Tue Jan 19 17:34:48 2016 UTC (20 months ago) by jcfr
STYLE: Remove unused SlicerITKv3BSplineControlPointImageFilter

This commit removes the class SlicerITKv3BSplineControlPointImageFilter
that originally became obsolete following r23077 (ENH: Remove ITKv3
support).

Revision 24880  Directory Listing
Modified Tue Jan 19 17:34:44 2016 UTC (20 months ago) by jcfr
BUG: Fix ResampleScalarVectorDWIVolume tests removing usage of dynamic_cast.

This commit fixes a regression introduced
by InsightSoftwareConsortium/ITK@d1e9fe2 (BUG: Ensure Transform IO
factories are  registered once.) and integrated in r24836 (ENH: Update
ITKv4 to v4.9.0 release branch).

Following this ITK commit, the ITKIO transform libraries are build as
shared and dynamic_cast can NOT be used with templated classes that are
instantiated in a translation unit different than the one where they are
defined. It will work only if the classes are explicitly instantiated
and exported.

To workaround the issue, code that was relying on dynamic_cast is updated
to (1) ensure the objects are of the right type doing string comparison
and (2) then use static_cast instead of dynamic_cast.

This commit fixes the following tests compiled using gcc 4.4.3
and executed on Ubuntu 10.04:
  ResampleScalarVectorDWIVolumeBSplineInterpolationTest
  ResampleScalarVectorDWIVolumeBSplineWSInterpolationTest
  ResampleScalarVectorDWIVolumeRotationAndAffineTest
  ResampleScalarVectorDWIVolumeRotationNNTest

Revision 24879  Directory Listing
Modified Tue Jan 19 17:34:42 2016 UTC (20 months ago) by jcfr
STYLE: ResampleScalarVectorDWIVolume: Remove unused conversion to float.

Since the transform reader is of type double, transform are always read
as double independently of the type (double or float) reported in the
transform file, this commit removes the corresponding code in
"SetTransformAndOrder" function.

Revision 24878  Directory Listing
Modified Tue Jan 19 17:34:40 2016 UTC (20 months ago) by jcfr
BUG: Fix ResampleDTI tests removing usage of dynamic_cast.

This commit fixes a regression introduced by r24836 (ENH: Update ITKv4 to
v4.9.0 release branch). Following the ITK update, the ITKIO transform
libraries are build as shared and dynamic_cast can NOT be used with
classes that are not explicitly instantiated and exported.

Following this ITK commit, the ITKIO transform libraries are build as
shared and dynamic_cast can NOT be used with templated classes that are
instantiated in a translation unit different than the one where they are
defined. It will work only if the classes are explicitly instantiated
and exported.

To workaround the issue, code that was relying on dynamic_cast is updated
to (1) ensure the objects are of the right type doing string comparison
and (2) then use static_cast instead of dynamic_cast.

See InsightSoftwareConsortium/ITK@d1e9fe2
and see http://stackoverflow.com/questions/8024010/why-do-template-class-functions-have-to-be-declared-in-the-same-translation-unit

This commit fixes the following tests compiled using gcc 4.4.3
and executed on Ubuntu 10.04:
  ResampleDTIVolumeRotationNNTest
  ResampleDTIVolume2RigidTransformsLinearTest
  ResampleDTIVolumeBSplineWSInterpolationTest
  ResampleDTIVolumeBSplineInterpolationTest

Revision 24877  Directory Listing
Modified Tue Jan 19 17:34:38 2016 UTC (20 months ago) by jcfr
BUG: ResampleDTIVolume: Fix "GetNameOfClass()" of itkDiffusion3D classes.

This commit adds "itkTypeMacro" to all itkDiffusion3D classes so that
method GetNameOfClass() returns the name of the class instead of "Object".

Revision 24876  Directory Listing
Modified Tue Jan 19 17:34:32 2016 UTC (20 months ago) by jcfr
STYLE: ResampleDTIVolume: Remove unused conversion to float transform.

Since the transform reader is of type double, transform are always read
as double independently of the type (double or float) reported in the
transform file, this commit removes the corresponding code in
"SetTransformAndOrder" function.

Revision 24873  Directory Listing
Modified Mon Jan 18 20:01:08 2016 UTC (20 months, 1 week ago) by pinter
ENH: Hide subject hierarchy nodes by default

If subject hierarchy was enabled it made working in Data module very difficult due to the many SH nodes that showed up for every supported data node. Now the SH nodes are by default hidden, but can be shown by checking show hidden nodes. Testing was performed and no issues were found regarding this change.

Revision 24872  Directory Listing
Modified Sat Jan 16 20:56:28 2016 UTC (20 months, 1 week ago) by pinter
BUG: Fixed regression for handling external layout managers

The regression was introduced in rev24418 that broke the slicelet support for slice view annotations introduced in rev24259. Added two safety checks to avoid errors.

Revision 24870  Directory Listing
Modified Fri Jan 15 03:59:41 2016 UTC (20 months, 1 week ago) by lassoan
BUG: Fixed export in LabelStatistics

Updated file that was accidentally missed in the previous commit.

Revision 24869  Directory Listing
Modified Fri Jan 15 03:57:20 2016 UTC (20 months, 1 week ago) by lassoan
BUG: Fixed export in LabelStatistics

Updated file that was accidentally missed in the previous commit.

Revision 24868  Directory Listing
Modified Thu Jan 14 15:36:32 2016 UTC (20 months, 1 week ago) by lassoan
BUG: Fixed export in LabelStatistics

Also updated LabelStatistics to use the standard scripted module template: now the module is reloadable, has an icon, and code parts were removed that were already available in the module base classes.

Revision 24866  Directory Listing
Modified Wed Jan 13 21:36:07 2016 UTC (20 months, 1 week ago) by pieper
BUG: #4127 need to check transforms when checking geometry match

http://www.na-mic.org/Bug/view.php?id=4127

From: Steve Pieper <pieper@isomics.com>

Revision 24865  Directory Listing
Modified Tue Jan 12 17:38:36 2016 UTC (20 months, 1 week ago) by pinter
BUG: Fixed SH node creation if there are multiple series node for the same series UID

In some cases there might be multiple subject hierarchy nodes for the same DICOM series, for example if a series contains instances that load to different node types that cannot be simply added under one series folder node. This can happen if for one type the node corresponds to the series, but in the other to the instances, like segmentation nodes vs markup nodes under a folder node.

Fixed SubjectHierarchyGenericSelfTest that failed due to empty scene object in scene model

Revision 24863  Directory Listing
Modified Mon Jan 11 02:33:53 2016 UTC (20 months, 2 weeks ago) by jcfr
STYLE: Ensure MRML testing data can be found by SlicerDMRI.

This commit workarounds a regression introduced in r24855 (ENH: Add
SlicerDMRI remote module).

Ultimately, testing data required by SlicerDMRI remote module tests should
be either explicitly copied into the remote module source tree or downloaded
using ExternalData. This is tracked by SlicerDMRI/SlicerDMRI#18.

Revision 24862  Directory Listing
Modified Fri Jan 8 23:00:33 2016 UTC (20 months, 2 weeks ago) by jcfr
STYLE: Refactor vtkSlicerVolumesLogicTest1

From: Alexis Girault <alexis.girault@kitware.com>

Revision 24861  Directory Listing
Modified Fri Jan 8 23:00:30 2016 UTC (20 months, 2 weeks ago) by jcfr
BUG: Fix display node copy in CloneVolume

Motivation :

If a volume is rendered through the Volume Rendering volume module
then cropped through the Crop Volume module, it is not possible to
display the volume rendering of the cropped volume: the original
volume would be displayed instead.

Reason :

In the Crop Volume module, the method `vtkSlicerVolumesLogic::CloneVolume`
was called.  The volume and its first display node were cloned using
`vtkMRMLVolumeNode::CopyWithScene`, but the remaining display nodes were
ignored. This was resulting in having a cloned volume with references to
the original volume display nodes. In the case above, the display node of
type vtkMRMLVolumeRenderingDisplayNode was the same for the cropped and
original volumes, referencing the original volume for both of them.

Fix :

In this commit only the first display node is cloned, and the other display
nodes are removed. Cloning a vtkMRMLVolumeRenderingDisplayNode would not be
as straightforward as copying a vtkMRMLVolumeDisplayNode since the display
node itself has a VolumeNodeID, a ROINodeID and a VolumePropertyNodeID that
would need to be created/updated.

This fixes the issue 4109: http://na-mic.org/Mantis/view.php?id=4109

From: Alexis Girault <alexis.girault@kitware.com>

Revision 24855  Directory Listing
Modified Fri Jan 8 18:53:27 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Add SlicerDMRI remote module

See http://slicerdmri.github.io/

The goal is to make Slicer core leaner and ultimately create a
SlicerDMRI extension

This remote module provides the following modules removed in previous
commits:

  FiberBundleToLabelMap (Scripted)
  DICOM2FullBrainTractography (Scripted)

  TractographyDisplay (Loadable)
  TractographyInteractiveSeeding (Loadable)

  DiffusionTensorScalarMeasurements (CLI)
  DiffusionWeightedVolumeMasking (CLI)
  DWIJointRicianLMMSEFilter (CLI)
  DWIRicianLMMSEFilter (CLI)
  DWIToDTIEstimation (CLI)
  DWIUnbiasedNonLocalMeansFilter (CLI)
  DTIImportExport (CLI)
  TractographyLabelMapSeeding (CLI)
  FiberBundleLabelSelect (CLI)
  FiberTractMeasurements (CLI)

Note that the following plugins and modules are not yet integrated
into SlicerDMRI:

  ResampleDTIVolume (CLI)
  ResampleScalarVectorDWIVolume (CLI)
  DICOMDiffusionVolumePlugin (DICOM plugin)

Additionally, the following MRML nodes are still living in Slicer core,
they will ultimately be moved out when the infrastructure will support
it:
  vtkMRMLDiffusionImageVolumeNode
  vtkMRMLDiffusionTensorDisplayPropertiesNode
  vtkMRMLDiffusionTensorVolumeDisplayNode
  vtkMRMLDiffusionTensorVolumeNode
  vtkMRMLDiffusionTensorVolumeSliceDisplayNode
  vtkMRMLDiffusionWeightedVolumeDisplayNode
  vtkMRMLDiffusionWeightedVolumeNode

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24854  Directory Listing
Modified Fri Jan 8 18:53:25 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove FiberBundleToLabelMap Scripted module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24853  Directory Listing
Modified Fri Jan 8 18:53:23 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DICOM2FullBrainTractography Scripted module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24852  Directory Listing
Modified Fri Jan 8 18:53:18 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove TractographyDisplay Loadable module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24851  Directory Listing
Modified Fri Jan 8 18:53:13 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove TractographyInteractiveSeeding Loadable module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24850  Directory Listing
Modified Fri Jan 8 18:53:09 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DiffusionTensorScalarMeasurements CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24849  Directory Listing
Modified Fri Jan 8 18:53:07 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DiffusionWeightedVolumeMasking CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24848  Directory Listing
Modified Fri Jan 8 18:53:04 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DWIJointRicianLMMSEFilter CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24847  Directory Listing
Modified Fri Jan 8 18:53:01 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DWIRicianLMMSEFilter CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24846  Directory Listing
Modified Fri Jan 8 18:52:58 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DWIToDTIEstimation CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24845  Directory Listing
Modified Fri Jan 8 18:52:56 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DWIUnbiasedNonLocalMeansFilter CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24844  Directory Listing
Modified Fri Jan 8 18:52:54 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove DTIImportExport CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24843  Directory Listing
Modified Fri Jan 8 18:52:51 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove TractographyLabelMapSeeding CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24842  Directory Listing
Modified Fri Jan 8 18:52:49 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove FiberBundleLabelSelect CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24841  Directory Listing
Modified Fri Jan 8 18:52:46 2016 UTC (20 months, 2 weeks ago) by jcfr
ENH: Remove FiberTractMeasurements CLI module.

It will be re-added as part of SlicerDMRI remote module.

See See http://slicerdmri.github.io/

From: Isaiah Norton <inorton@bwh.harvard.edu>

Revision 24826  Directory Listing
Modified Wed Dec 23 21:26:28 2015 UTC (21 months ago) by lassoan
ENH: Improved MRML tests

* Added output check to MRML core cxx methods (if any MRML node logs an unexpected error or warning during a test then it makes the test return with failure).
* Changed very long test macros to regular methods. It allows step-by-step debugging, getting exact error location (not just where the macro was called), simpler editing of the code (no need to put backslashes at the end of every line).
* Created a test macro for exercising all applicable MRML methods (ExerciseAllBasicMRMLMethods), which determines which methods should be tested by dynamic casting. Changed all MRML tests to use this single macro. It is still a macro to be able to run the function and log the line number in a single line using a simple syntax.
* Separated test macros (vtkMRMLCoreTestingMacros) and functions (vtkMRMLCoreTestingUtilities.h/txx/cxx) for clarity.
* Replaced several-line checks by CHECK_... macros for shorter code and simpler syntax. The check macros just gather the line number, call a check method, and return in case of an error: problems can still be analyzed using step-by-step debugging.
* Replaced bool return values by int (EXIT_FAILURE/EXIT_SUCCESS) at many places. It allows propagating the same error code from any level back to the main() function, using the same CHECK_... macros at every level.
* Re-enabled and fixed old tests that did not work in the core MRML library because they depended on classes that are not in MRML core. Moved tests to the module where the corresponding MRML node was defined. Updated obsolete scene files.
* Added thorough testing of node references between singleton and non-singleton nodes.

Revision 24821  Directory Listing
Modified Wed Dec 23 19:12:24 2015 UTC (21 months ago) by lassoan
BUG: Fixed error in SliceViewAnnotations update

SliceViewAnnotations update was incomplete because if there were unmapped slice views (view without a widget) in the scene then the script stopped with an error.

Revision 24815  Directory Listing
Modified Mon Dec 14 19:46:36 2015 UTC (21 months, 1 week ago) by jcfr
BUG: Fix crash due to wrong AddModel return

In vtkSlicerModelsLogic::AddModel, if the call to the storageNode
ReadData() failed, an error message was triggered and the node
removed from the scene, but AddModel() was still returning a pointer
to the modelNode, resulting in Slicer crashing.

The bug was encountered when loading a VTK Volume (DATASET set to
STRUCTURED_POINTS) and not selecting the 'Volume' description, since
the default description for the legacy VTK files is 'Model' in Slicer.

From: Alexis Girault <alexis.girault@kitware.com>

Revision 24813  Directory Listing
Modified Thu Dec 10 17:15:03 2015 UTC (21 months, 2 weeks ago) by lassoan
BUG: Fixed vtkTransform::ApplyTransformMatrix crash

How to reproduce:

c=getNode('FullRainbow')
m=vtk.vtkMatrix4x4()
c.ApplyTransformMatrix(m)

Problem:
vtkTransform::ApplyTransform and vtkTransform::ApplyTransformMatrix are calling each other. Most of the time at least one is overridden, so no crash occurs.

Solution:
Removed calling of vtkTransform::ApplyTransformMatrix from vtkTransform::ApplyTransform. If a class has a more efficient version of transform application for linear transforms then this call can be added to vtkTransform::ApplyTransform in that specific class.
Removed vtkTransform::ApplyTransformMatrix where it is not necessary (when it's just a more complicated and possibly slower version of ApplyTransform).

Revision 24812  Directory Listing
Modified Wed Dec 9 23:06:52 2015 UTC (21 months, 2 weeks ago) by lassoan
ENH: Improved ExecutionModelTour pointfile example

Fiducial node selector widget created for pointfile field does not support selection of multiple nodes
therefore adding a <pointfile multiple="true" ...> tag in the ExecutionModelTour example was misleading
(it will never get multiple files).
=> removed multiple="true"

Pointfile with channel="output" is a regular file field (same as transform, image, table, etc),
therefore adding a separate "File return types" section in the XML was misleading.
=> moved the field from separate section to right after the pointfile with channel="input", so now
it looks the same as all other file fields

Revision 24810  Directory Listing
Modified Mon Dec 7 20:21:11 2015 UTC (21 months, 2 weeks ago) by lassoan
ENH: Added output testing to vtkSlicerTablesLogicAddFileTest

Revision 24807  Directory Listing
Modified Fri Dec 4 16:33:09 2015 UTC (21 months, 3 weeks ago) by lassoan
STYLE: No need to allocate vector and elements separately

Minor thing, just came across this while fixing the build error (which has been fixed in the meantime). I commit this anyway, it makes the code a little bit nicer.

Revision 24806  Directory Listing
Modified Fri Dec 4 16:06:46 2015 UTC (21 months, 3 weeks ago) by msmolens
COMP: qSlicerVolumeRenderingModuleWidget: Fix Visual Studio build

This commit fixes a regression introduced in r24803 (ENH: Support VR
ROI visibility update through MRML node) removing the use of Variable
Length Array allocated (VLA) on the stack that are allowed in gcc but not
supported in Visual Studio.

For more details, see [1][2]

[1] http://stackoverflow.com/questions/7812566/why-no-variable-size-array-in-stack/7812587#7812587
[2] https://msdn.microsoft.com/library/zb1574zs(v=vs.100).aspx

Error reported by Visual Studio (VS) was the following:

    Modules\Loadable\VolumeRendering\Widgets\qSlicerVolumeRenderingModuleWidget.cxx(833): error C2057: expected constant expression
    Modules\Loadable\VolumeRendering\Widgets\qSlicerVolumeRenderingModuleWidget.cxx(833): error C2466: cannot allocate an array of constant size 0
    Modules\Loadable\VolumeRendering\Widgets\qSlicerVolumeRenderingModuleWidget.cxx(833): error C2133: 'wasModifying' : unknown size

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24805  Directory Listing
Modified Fri Dec 4 03:51:02 2015 UTC (21 months, 3 weeks ago) by jcfr
COMP: qMRMLAnnotationROIWidget: Fix VS build avoiding stack allocated VLA

This commit fixes a regression introduced in r24803 (ENH: Support VR
ROI visibility update through MRML node) removing the use of Variable
Length Array allocated (VLA) on the stack that are allowed in gcc but not
supported in Visual Studio.

For more details, see [1][2]

[1] http://stackoverflow.com/questions/7812566/why-no-variable-size-array-in-stack/7812587#7812587
[2] https://msdn.microsoft.com/library/zb1574zs(v=vs.100).aspx

Error reported by Visual Studio (VS) was the following:

  Modules\Loadable\Annotations\Widgets\qMRMLAnnotationROIWidget.cxx(200) : error C2057: expected constant expression
  Modules\Loadable\Annotations\Widgets\qMRMLAnnotationROIWidget.cxx(200) : error C2466: cannot allocate an array of constant size 0
  Modules\Loadable\Annotations\Widgets\qMRMLAnnotationROIWidget.cxx(200) : error C2133: 'wasModifying' : unknown size

Reported-by: Andras Lasso <lasso@queensu.ca>

Revision 24804  Directory Listing
Modified Thu Dec 3 17:39:51 2015 UTC (21 months, 3 weeks ago) by pinter
BUG: Show data node name in subject hierarchy

Previously, the node column of the subject hierarchy tree showed the name of the subject hierarchy node, stripped from the postfix. However, if the associated data node was renamed after the creation of the SH node, still the old name showed up in the tree. Observing Modified event and doing renaming would be an option, but it would trigger a lot of updates, potentially affecting performance. This commit solves this problem by showing the name of the associated data node if there is one.

Revision 24803  Directory Listing
Modified Wed Dec 2 07:10:55 2015 UTC (21 months, 3 weeks ago) by jcfr
ENH: Support VR ROI visibility update through MRML node

This commit ensures the setting the ROI node DisplayVisibility property
show/hide the ROI and update the ROI visibility checkbox state.

Reviewed-by: Andras Lasso <lasso@queensu.ca>
Reviewed-by: Nicole Aucoin <nicole@bwh.harvard.edu>
Reviewed-by: Steve Pieper <pieper@bwh.harvard.edu>
Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Davide Punzo <punzodavide@hotmail.it>

Revision 24801  Directory Listing
Modified Tue Dec 1 20:06:37 2015 UTC (21 months, 3 weeks ago) by jcfr
STYLE: Remove VTKv5 support

As discussed during the developer hangout of 2015-03-31, this commit
removes support for VTKv5.

Most of the h/cxx files have been updated automatically using the
script "slicer_remove_vtk5_support.py" [1]. See below.

The remaining of h/cxx, python and CMake files have been updated
manually.


slicer_remove_vtk5_support.py:
cd ~/Project/Slicer
~/Download/slicer_remove_vtk5_support.py $(ack -l VTK_MAJOR_VERSION)

[1] https://gist.github.com/jcfr/91d2f5d07c2a36320e48

Revision 24800  Directory Listing
Modified Tue Dec 1 20:06:02 2015 UTC (21 months, 3 weeks ago) by jcfr
COMP: Fix typo in CLI XML files introduced in previous commit.

This commit fixes a typo introduced in r24799 (ENH: Added CLI support
for Subject hierarchy #2)

Revision 24799  Directory Listing
Modified Tue Dec 1 19:13:44 2015 UTC (21 months, 3 weeks ago) by pinter
ENH: Added CLI support for Subject hierarchy #2

Updated most CLI modules to support references for subject hierarchies

Revision 24798  Directory Listing
Modified Tue Dec 1 18:51:08 2015 UTC (21 months, 3 weeks ago) by pinter
ENH: Added CLI support for Subject hierarchy #1

1. Moved vtkMRMLSubjectHierarchyNode and constants to MRML core. Moved transform related functions to SH logic from the node
2. Added reference argument support for Volume (image) and Model (geometry) nodes when outputs of a CLI module

Revision 24797  Directory Listing
Modified Tue Dec 1 16:31:08 2015 UTC (21 months, 3 weeks ago) by pinter
ENH: Added labelmap conversion to Volumes module

1. Changed LabelMap checkbox to Volume type label showing the node tag without the Volume postfix (as scalar volume has the tag "Volume", "Scalar" is shown instead of empty string)
2. Add extra section into Volumes module, because
a. Label volume conversion cannot be added in the volume info widget due to scope issues (volumes logic not accessible from MRML widgets)
b. Conversion operation doesn't fit into the idea of "volume info"
3. Reorganized labelmap creation functions in volumes logic. Moved and corrected the body of FillLabelVolumeFromTemplate to CreateLabelVolumeFromVolume. Call the new function from CreateAndAddLabelVolume and FillLabelVolumeFromTemplate. Correction in CreateLabelVolumeFromVolume includes deep copy of the image data instead of keeping a floating threshold filter and setting connection (besides it seems to be unstable, it also did not work, dimensions of the volume were zeroes)
4. Removed margin from volumes info widget to make volumes module look more uniform

Revision 24795  Directory Listing
Modified Tue Dec 1 13:32:25 2015 UTC (21 months, 3 weeks ago) by pinter
ENH: Added DICOMUtils convenience function library

Revision 24790  Directory Listing
Modified Mon Nov 30 23:08:14 2015 UTC (21 months, 3 weeks ago) by lassoan
BUG: Fixed Tables.xml documentation file

Revision 24789  Directory Listing
Modified Mon Nov 30 23:06:00 2015 UTC (21 months, 3 weeks ago) by lassoan
BUG: Fixed Tables.xml documentation file

Revision 24788  Directory Listing
Modified Mon Nov 30 23:01:31 2015 UTC (21 months, 3 weeks ago) by lassoan
ENH: Added Tables.xml documentation file

Revision 24787  Directory Listing
Modified Mon Nov 30 22:38:43 2015 UTC (21 months, 3 weeks ago) by lassoan
ENH: Added table node export to LabelStatistics module

Changed exporting to file to exporting to table. It does not require any additional input from the user, user can copy-paste data or save table to file.
Also fixed LabelStatistics save function (when labelmap volume had to be resampled then the resampled volume did not have display node and that caused the saving to fail). It is not only available through Python, not from GUI.

Revision 24786  Directory Listing
Modified Mon Nov 30 22:31:22 2015 UTC (21 months, 3 weeks ago) by lassoan
ENH: Updated acknowledgements in tables module

Revision 24783  Directory Listing
Modified Mon Nov 30 19:46:18 2015 UTC (21 months, 3 weeks ago) by lassoan
ENH: Added support for Tables

* New module added: Tables. Create create/view/edit/delete tables, freeze column/row header, lock to read-only (vtkMRMLTableNode).
* Tables can be shown in the view layout (new layout added: Four-up table, more can be added as needed)
* Load/save csv, tsv, txt files as table nodes
* Copy-paste to/from Excel
* SubjectHierarchy plugin (show/hide, edit, clone tables)
* Use tables as input/output for CLI modules (PET Standard Uptake Value Computation module is updated to use tables; there was no need to change the Slicer Execution Model, the Table data type was already usable)
* Reusable widget added for viewing/editing tables in C++ and Python modules

Revision 24782  Directory Listing
Modified Mon Nov 30 19:44:53 2015 UTC (21 months, 3 weeks ago) by lassoan
BUG: Fixed crash in SubjectHierarchy cloning non-displayable node

Crash was due to a copy paste-error. Also fixed a typo in a comment.

Revision 24777  Directory Listing
Modified Thu Nov 26 22:22:31 2015 UTC (21 months, 4 weeks ago) by jcfr
STYLE: CMakeLists.txt: Set CMP0048 policy to NEW

This commit also updates projects EMSegment, MultiVolumeExplorer,
OpenIGTLinkIF and SlicerSimpleFilters.

EMSegment:

r17114
STYLE: Fix CMake warning setting CMP0048 to NEW


MultiVolumeExplorer:

$ git shortlog  9cd4730..a0743dc --no-merges
Jean-Christophe Fillion-Robin (5):
      STYLE: Remove unused extension packaging code
      STYLE: Simplify CMakeLists.txt removing extra comments
      STYLE: Update CMakeLists.txt to use recommended variable names
      STYLE: Update testing/CMakeLists.txt to use slicerMacroConfigureModuleCxxTestDriver
      STYLE: Fix CMake warning setting CMP0048 to NEW


OpenIGTLinkIF:

$ git shortlog 435b1c3..3ad1f67 --no-merges
Jean-Christophe Fillion-Robin (3):
      STYLE: Simplify CMakelists directly including find_package(Slicer)
      STYLE: CMakeLists.txt: Use recommended variable names
      STYLE: Fix CMake warning setting CMP0048 to NEW


SlicerSimpleFilters:

$ git shortlog 48b7873..c58cfe5 --no-merges
Jean-Christophe Fillion-Robin (1):
      STYLE: Fix CMake warning setting CMP0048 to NEW

Revision 24776  Directory Listing
Modified Thu Nov 26 20:49:35 2015 UTC (21 months, 4 weeks ago) by pinter
BUG: Fixed SubjectHierarchyCorePluginsSelfTest

Test broke after rev24770 that fixed a bug in SH clone node plugin. The test was asserting the opposite of what it was supposed to. Access of postfix made possible from python so that no hard-coded strings need to be used.

Revision 24770  Directory Listing
Modified Tue Nov 24 16:24:06 2015 UTC (22 months ago) by pinter
BUG: Fixed subject hierarchy cloned node name

In some cases the cloned data node had the same name as the original one. Now the name is set after the Copy call, and the name postfix is properly applied.

Revision 24769  Directory Listing
Modified Mon Nov 23 20:35:55 2015 UTC (22 months ago) by pieper
ENH: Add option for exporting DICOM segmentation objects from editor

This commit transitions some functionality that was buried in
the LabelStructureListWidget into the EditUtil class so that it
can be used in other parts of the code (in particular in the
DICOMSegmentationPlugin provided by the Reporting extension).

This code is in a transitional state where the core depends
on code from the extension (the EncodeSEG CLI module).  Once
the SEGSupport converters are moved to the core that dependency
will go away.

From: Steve Pieper <pieper@isomics.com>

Revision 24768  Directory Listing
Modified Mon Nov 23 20:35:53 2015 UTC (22 months ago) by pieper
ENH: factor out default DICOM series name generation to superclass

This allows multiple plugins to adopt the same naming
convention for the mapping of series number and description
into the names of nodes.

From: Steve Pieper <pieper@isomics.com>

Revision 24761  Directory Listing
Modified Fri Nov 20 19:39:16 2015 UTC (22 months ago) by jcfr
BUG: Fix regression in LabelStatisticsTest

This commit fixes a regression introduced in r24759 (STYLE: Update python
tests to use more specific asserts.) where

  self.assertTrue( warnings == "" )

has improperly changed into

  self.assertNotEqual( warnings, "" )

Revision 24760  Directory Listing
Modified Fri Nov 20 17:57:30 2015 UTC (22 months ago) by lassoan
BUG: Fixed volume rendering at incorrect position

Modification of any transforms applied on any volume may alter location where volume rendering appears.

How to reproduce:
•Load MRHead sample (MRHead)
•Load MRHead sample (MRHead_1)
•Apply a new linear transform (LinearTransform_3) to MRHead
•Go to Volume Rendering module
•Switch to MRHead_1, show volume rendering => volume rendering of MRHead_1 is displayed
•Go to transforms module
•Modify LinearTransform_3 => ERROR: volume rendering of MRHead_1 moves on the image (while the transform is only applied to MRHead)
•Slightly rotate the 3D view => volume rendering of MRHead_1 jumps (back to the location where it should be)

Problem root cause: vtkMRMLVolumeRenderingDisplayableManager observes all TransformModifiedEvent changes and updates the position of the current volume based on that (even if not the current volume's transform is changed)

Solution: Ignore transform modified changes if not the current volume's transform is modified. 

Ideally, event management in the Volume Rendering displayable manager should be refactored to not observe irrelevant events.

Revision 24759  Directory Listing
Modified Fri Nov 20 03:56:01 2015 UTC (22 months ago) by jcfr
STYLE: Update python tests to use more specific asserts.

Using the more specific assert functions usually gives more useful
error messages.

Suggested-by: Csaba Pinter <csaba.pinter@queensu.ca>
Suggested-by: Max Smolens <max.smolens@kitware.com>

Revision 24758  Directory Listing
Modified Fri Nov 20 03:55:52 2015 UTC (22 months ago) by jcfr
STYLE: Update python scripts to use "is None" instead of "== None"

Rational copied from https://www.python.org/dev/peps/pep-0290/#testing-for-none

// -----------------
 Since there is only one None object, equality can be tested with identity. Identity tests are slightly faster than equality tests. Also, some object types may overload comparison, so equality testing may be much slower.

Pattern:

if v == None  -->  if v is None:
if v != None  -->  if v is not None:
// -----------------

Reviewed-by: Csaba Pinter <csaba.pinter@queensu.ca>
Reviewed-by: Max Smolens <max.smolens@kitware.com>

Revision 24757  Directory Listing
Modified Fri Nov 20 02:59:35 2015 UTC (22 months ago) by jcfr
ENH: Added output checking to module CXX tests

Added a new option (WITH_VTK_ERROR_OUTPUT_CHECK) to slicerMacroConfigureModuleCxxTestDriver
that enables checking of error and warning messages. If the option is enabled then the test
fails if unexpected error or warning is logged.

Enabled the option for all tests that had debug leaks check option (WITH_VTK_DEBUG_LEAKS_CHECK)
enabled. Fixed failing tests by fixing the test, the tested code, or (most frequently) marking
expected errors/warning (using TESTING_OUTPUT_ASSERT_ERRORS_BEGIN() / TESTING_OUTPUT_ASSERT_ERRORS_END()
and similar macros).

Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Andras Lasso <lasso@queensu.ca>

Revision 24755  Directory Listing
Modified Thu Nov 19 23:42:57 2015 UTC (22 months ago) by jcfr
STYLE: FiberBundleLabelSelect: Adding tests for vtp inputs/outputs

Adding tests for vtp files, in addition to the original vtk.

From: Fan Zhang <zhangfanmark@gmail.com>

Revision 24753  Directory Listing
Modified Thu Nov 19 19:59:29 2015 UTC (22 months ago) by naucoin
STYLE: Refactor terminology tests for fine grain error reporting

Moved the repeated code into the ParseTerm test method and pass in
expected success flag and term values.
Updated the color logic for more clear print outs.
Use the CheckString utility to encapsulate the string comparisons
on the terminology methods.
Group terminology tests together and provide better
descriptive strings.

Issue #4047

Revision 24742  Directory Listing
Modified Mon Nov 16 22:46:35 2015 UTC (22 months, 1 week ago) by naucoin
ENH: Add terminology information to color picker in Editor

Added terminology files, read them on start up, associate
with the generic anatomy colors node.
Add accessors to the color logic as well as basic methods to
allow creating new terminologies (used by the Reporting extension).
Created Python callable utility methods to allow scripted access[1].
Add read only widgets to the Editor, shown if the selected
color node has terminology associated with it (using
node attributes).
Added testing for the terminology functionality to vtkSlicerColorLogicTest (rather than
in vtkMRMLColorLogicTest1 since the Colors module logic adds the terminology files).
Pass the color logic to the color model so that it can look up
terminology information to set the tool tips on the color table
entries.
Minor changes to respond to feedback on the pull request (CMake,
references, default terminology).
[1] Utility accessor functions:
- GetTerminologyFromLabel takes in the strings defining the color label
categorization and the standard term elements and returns the specific term.
- Get the colon concatenated full standard term values via
GetSegmentedPropertyCategory, GetSegmentedPropertyType, GetSegmentedPropertyTypeModifier,
GetAnatomicRegion, GetAnatomicRegionModifier

Issue #4047

Revision 24740  Directory Listing
Modified Fri Nov 13 15:07:59 2015 UTC (22 months, 1 week ago) by lassoan
BUG: Fixed invalid memory access

MapLabelIDtoColorName returned a const char* pointer to a deleted memory area. Fixed by copying the text to a std::string and returning that.

Revision 24726  Directory Listing
Modified Wed Nov 11 22:31:58 2015 UTC (22 months, 2 weeks ago) by jcfr
BUG: Disable fiducials in light box mode. See #1690

Fiducials are not being properly positioned when in light box mode, this
change disables them and gives the user a warning that they are being
disabled (new fiducials can still be placed, but will not be visible until
you exit light box mode).

This change fixes bugs that were left from the attempt to use the point
handle widgets in 2D so that they can be properly hidden: fix the
visibility setting on the point handles in light box mode, disable
the point handles when invisible so that they don't become visible
when the mouse is near it, updated a visibility check comparision
to match return type from method.

Also removed warning messages by casting the 3d handles before changing
the picking state.

Fixed a bug wherein if you had a mix of fiducials having been placed
in lightbox and not light box mode, the seed widget would have a mix
of 2d and 3d handles.

This fix removes all the current handles so that they're properly
recreated as the necessary type.

Issue #1690

From: Nicole Aucoin <nicole@bwh.harvard.edu>

Revision 24725  Directory Listing
Modified Wed Nov 11 22:31:56 2015 UTC (22 months, 2 weeks ago) by jcfr
STYLE: Tweak debug message & fix indent in MarkupsFiducialDisplayableManager2D

From: Nicole Aucoin <nicole@bwh.harvard.edu>

Revision 24721  Directory Listing
Modified Wed Nov 11 13:53:19 2015 UTC (22 months, 2 weeks ago) by jcfr
STYLE: Ensure MergeModels tests run in order add dependency info.

Since TestCompare test is checking the output of the TestVtp test, it
should depend on it. This will ensure the test run in order when running
tests in parallel.

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24720  Directory Listing
Modified Wed Nov 11 13:53:17 2015 UTC (22 months, 2 weeks ago) by jcfr
BUG: Add test & fix output for two-tensor tractography fiber selection. #4042

Mantis ID: 0004042

1) For two-tensor tractography, FiberBundleLabelSelect outputs only one
tensor. This change outputs all tensor information from the selected
fibers of the input file.

2) A module test was added.

Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: zhangfanmark <fan@veggies.bwh.harvard.edu>

Revision 24706  Directory Listing
Modified Sat Nov 7 16:11:48 2015 UTC (22 months, 2 weeks ago) by alexy
BUG: 3648. Fixed scalar display on fibers.

Revision 24703  Directory Listing
Modified Sat Nov 7 04:36:22 2015 UTC (22 months, 2 weeks ago) by jcfr
STYLE: vtkSlicerMarkupsLogicTest1: Use smart pointer to avoid leak

Revision 24692  Directory Listing
Modified Tue Nov 3 20:05:09 2015 UTC (22 months, 3 weeks ago) by jcfr
BUG: Update VTK to include fix for empty corner annotation. See #4043

This commit includes the proper fix and remove the workarounds implemented
in r24649 (BUG: SliceViewAnnotations: Do not show blank when corner annotation
is off.)

$ git shortlog d620f8f..8e43f69 --no-merges
Alexis Girault (1):
      Fix bug 15787 : empty vtkCornerAnnotation text renders incorrectly

Revision 24687  Directory Listing
Modified Mon Nov 2 18:33:06 2015 UTC (22 months, 3 weeks ago) by jcfr
BUG: Editor: Gracefully handle "Create new LabelMap" without master volume

This commit avoids the following error when user attempts to create a
label map without any master volume:

Traceback (most recent call last):
  File "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/EditorLib/HelperBox.py", line 99, in newMerge
    self.labelCreateDialog()
  File "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/EditorLib/HelperBox.py", line 317, in labelCreateDialog
    dlg = LabelCreateDialog(slicer.util.mainWindow(), self.master, self.mergeVolumePostfix)
  File "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/EditorLib/LabelCreateDialog.py", line 78, in __init__
    """ %(self._master.GetName(), self._master.GetName()+self._mergeVolumePostfix)
AttributeError: 'NoneType' object has no attribute 'GetName'

Revision 24686  Directory Listing
Modified Mon Nov 2 00:55:00 2015 UTC (22 months, 3 weeks ago) by jcfr
COMP: Fix "unused parameter" warning in qSlicerSubjectHierarchyAbstractPlugin

Revision 24684  Directory Listing
Modified Fri Oct 30 19:12:26 2015 UTC (22 months, 3 weeks ago) by jcfr
BUG: Fix AttributeError in SliceViewAnnotations.updateViewAnnotations()

This commit fixes a regression introduced in r24238 (BUG: Fix
SliceViewAnnotations AttributeError happening on closing Slicer) where
the ivar sliceViewNames (of type 'list') is directly set with the
value returned by app.layoutManager().sliceViewNames() (of type 'tuple').

Considering that tuple are immutable and list mutable, this explained the
error in the function "updateViewAnnotations":

  AttributeError: 'tuple' object has no attribute 'append'

By converting the returned tuple to a list, it fixes the issue.

Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Christian Herz <christian.herz@mevis.fraunhofer.de>

Revision 24683  Directory Listing
Modified Fri Oct 30 17:46:19 2015 UTC (22 months, 3 weeks ago) by jcfr
STYLE: Improve vtkSlicerDoubleArraysLogicAddTest output display

Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Alexis Girault <alexis.girault@kitware.com>

Revision 24682  Directory Listing
Modified Fri Oct 30 17:44:59 2015 UTC (22 months, 3 weeks ago) by jcfr
ENH: Improve vtkSlicerDoubleArraysLogic::AddDoubleArray

Check if the filename is empty (and not just NULL) to
avoid unnecessary node creation and deletion.

Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Alexis Girault <alexis.girault@kitware.com>

Revision 24678  Directory Listing
Modified Fri Oct 30 13:38:18 2015 UTC (22 months, 3 weeks ago) by jcfr
COMP: Fix build "ambiguous call to abs()" error.

This commit fixes error reported on the Linux factory by reverting
r24671 (COMP: Consistently use std::abs to avoid implicit integer
truncations)

Revision 24677  Directory Listing
Modified Thu Oct 29 22:23:28 2015 UTC (22 months, 3 weeks ago) by jcfr
COMP: Fix DiffusionWeightedVolumeMaskingTest linker error

Changes in r24673 [1] cause a linker error when building
DiffusionWeightedVolumeMaskingTest in Visual Studio 2013:

    1>------ Build started: Project: DiffusionWeightedVolumeMaskingTest, Configuration: Debug x64 ------
    1>DiffusionWeightedVolumeMaskingTest.obj : error LNK2019: unresolved external symbol __imp_ModuleEntryPoint referenced in function "void __cdecl RegisterTests(void)" (?RegisterTests@@YAXXZ)
    1>C:\dev\SD\Slicer-build\bin\Debug\DiffusionWeightedVolumeMaskingTest.exe : fatal error LNK1120: 1 unresolved externals

This commit reverts some of the changes to make the test build and run.

[1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24673

From: Max Smolens <max.smolens@kitware.com>

Revision 24673  Directory Listing
Modified Thu Oct 29 04:15:41 2015 UTC (22 months, 4 weeks ago) by jcfr
BUG: Fix DiffusionWeightedVolumeMasking module and add test. See #3855

The updated line calculates the magnitude of each gradient, and
determines that an image is "baseline" if the magnitude is smaller than
a threshold.

The use of "abs()" on double values caused the magnitude to
always be 0, and therefore all images were considered as "baseline" and
included in the average computed by the filter and presented as "Output
baseline volume" to the user.

This commit fixes the incorrect logic using "fabs()", simplifies the test
case removing the use of "--removeislands", updates the test harness to use
"compare" functions to validate the output of the module against baseline
images.

Note that the "--removeislands" should be tested in a separate test case.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Orjan Bergmann <orjan.bergmann@gmail.com>

Revision 24672  Directory Listing
Modified Thu Oct 29 01:54:52 2015 UTC (22 months, 4 weeks ago) by jcfr
STYLE: Remove unused code related to now disabled ITKv3 compatibility mode

Reviewing changes introduced in r24669 (COMP: Add ITK_OVERRIDE
designations for C++11) also identified some now dead code that
was used to override a parent class method when ITKv3 compatibility
was enabled. Considering that ITKv3_COMPATIBILITY is disabled since
r23960 (ENH: Disable ITKv3 compatibility to enable 64-bit ids on
windows), this commit removes the code that was initially introduced
in r17784 (ENH: Transform classes compatible with ITKv[34])

Note that the code associated with itkAnisotropicSimilarity3DTransformTest
is now broken. Since it is not compiled and is associated with a module
in the legacy category, a comment has been added to provide hint.

Finally, note that all tests associated with ResampleDTI and
ExpertAutomatedRegistration modules are passing:

$ ctest -L ExpertAutomated
Test project /home/jcfr/Projects/Slicer-Debug/Slicer-build
    Start 494: ExpertAutomatedRegistrationTestDataFixed
1/5 Test #494: ExpertAutomatedRegistrationTestDataFixed .......   Passed    0.17 sec
    Start 495: ExpertAutomatedRegistrationTestDataRigidArgs
2/5 Test #495: ExpertAutomatedRegistrationTestDataRigidArgs ...   Passed    0.15 sec
    Start 496: ExpertAutomatedRegistrationTestDataRigid
3/5 Test #496: ExpertAutomatedRegistrationTestDataRigid .......   Passed    0.20 sec
    Start 497: ExpertAutomatedRegistrationTestDataAffine
4/5 Test #497: ExpertAutomatedRegistrationTestDataAffine ......   Passed    0.19 sec
    Start 498: ExpertAutomatedRegistrationTestDataBSpline
5/5 Test #498: ExpertAutomatedRegistrationTestDataBSpline .....   Passed    0.90 sec

100% tests passed, 0 tests failed out of 5

Label Time Summary:
ExpertAutomatedRegistration    =   1.61 sec

Total Test time (real) =   1.67 sec

$ ctest -L ResampleDTI
Test project /home/jcfr/Projects/Slicer-Debug/Slicer-build
    Start 470: ResampleDTIVolumeRotationNNTest
1/7 Test #470: ResampleDTIVolumeRotationNNTest ...............   Passed    1.02 sec
    Start 471: ResampleDTIVolume2RigidTransformsLinearTest
2/7 Test #471: ResampleDTIVolume2RigidTransformsLinearTest ...   Passed    0.91 sec
    Start 472: ResampleDTIVolumeBSplineWSInterpolationTest
3/7 Test #472: ResampleDTIVolumeBSplineWSInterpolationTest ...   Passed   10.66 sec
    Start 473: ResampleDTIVolumeBSplineInterpolationTest
4/7 Test #473: ResampleDTIVolumeBSplineInterpolationTest .....   Passed    1.90 sec
    Start 474: ResampleDTIVolumeHFieldTest
5/7 Test #474: ResampleDTIVolumeHFieldTest ...................   Passed    3.14 sec
    Start 475: itkTestMainExtendedScalarTest
6/7 Test #475: itkTestMainExtendedScalarTest .................   Passed    1.24 sec
    Start 476: itkTestMainExtendedFailedTest
7/7 Test #476: itkTestMainExtendedFailedTest .................   Passed    1.66 sec

100% tests passed, 0 tests failed out of 7

Label Time Summary:
ResampleDTIVolume    =  20.54 sec

Total Test time (real) =  20.60 sec

Co-authored-by: Francois Budin <fbudin@unc.edu>
Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 24671  Directory Listing
Modified Wed Oct 28 23:39:19 2015 UTC (22 months, 4 weeks ago) by jcfr
COMP: Consistently use std::abs to avoid implicit integer truncations

Similarly to r24621 (BUG: Fix incorrect truncation to integer in
vtkSlicerTransformLogic), this commit applies the same fix to the entire
code base to avoid clang warnings of the following form:

Slicer/Base/Logic/vtkSlicerTransformLogic.cxx:718:59: warning: using integer absolute value function 'abs' when argument is of
      floating point type [-Wabsolute-value]
    rotateArrow->RotateX(vtkMath::DegreesFromRadians(acos(abs(sliceNormal_RAS[2]))));

Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 24669  Directory Listing
Modified Wed Oct 28 21:27:32 2015 UTC (22 months, 4 weeks ago) by jcfr
COMP: Add ITK_OVERRIDE designations for C++11

When supported (i.e. under C++11 compiler support),
use the override designation to ensure that virtual
functions have correct signature for overriding their
parent classes.

Reviewed-by: Matt McCormick <matt.mccormick@kitware.com>
Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 24665  Directory Listing
Modified Wed Oct 28 00:12:05 2015 UTC (22 months, 4 weeks ago) by jcfr
BUG: Preserve custom color tables on scene view restore

Moving the color table information into files on disk created
a bug (analogous to the same situation with fiducials[1]) that when
a scene contains scene views that contain custom color tables
the scene view restore wipes out the colors in the color node
in the main scene. When a MRML file is read, the files on disk
are not reread to fill in scene view nodes, so the scene view
color table node is empty. This fix adds a check for if the
scene is currently restoring a scene view, and if so, don't
proceed with the copy as it will result in an color table
with the correct number of entries (as the number of colors is
saved in the MRML file) but all black and unamed.
Added a test to ensure that restoring scene views with changed
color table nodes doesn't result in a zeroed out color table,
nor a changed one (for this work around state)

[1] fiducials were fixed in this commit:
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24376
https://github.com/Slicer/Slicer/commit/1440084bbdd9d11c1e9e1f195087f521a91af186

Issue #3992

From: Nicole Aucoin <nicole@bwh.harvard.edu>

Revision 24656  Directory Listing
Modified Fri Oct 23 17:30:40 2015 UTC (23 months ago) by pieper
BUG: #4066 Editor threshold paint should have inclusive range

See discussion here:
http://www.na-mic.org/Bug/view.php?id=4066

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24649  Directory Listing
Modified Mon Oct 19 19:40:46 2015 UTC (23 months, 1 week ago) by jcfr
BUG: SliceViewAnnotations: Do not show blank when corner annotation is off.

Fixes #4043

Note that while setting the text of the corner annotation to a space
avoid the blank area from showing up, this doesn't address the root cause.
There is probably something wrong in either ctkVTKSliceView or VTK itself.

The problem is still reproducible running the following snippet in the
Slicer python interactor:

v = ctk.ctkVTKSliceView()
v.show()
v.cornerAnnotationText = "Hello"
v.forceRender()
v.cornerAnnotationText = ""
v.forceRender()

Revision 24648  Directory Listing
Modified Mon Oct 19 19:40:45 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Simplify code removing ivar

There is no need to keep track of the corner annotation, it can easily
be retrieved given a sliceView.

Revision 24647  Directory Listing
Modified Mon Oct 19 19:40:43 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Fix spelling mistake

Revision 24646  Directory Listing
Modified Mon Oct 19 19:40:42 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Remove unused methods openSettingsPopup/close

Following r23612 (ENH: Add Slice Annotations to DataProbe module), these
method are obsolete.

Revision 24645  Directory Listing
Modified Mon Oct 19 19:40:40 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Remove extra loop in createCornerAnnotations

Revision 24644  Directory Listing
Modified Mon Oct 19 19:40:39 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Do not remove/re-add slicerCornerAnnotation

This commit removes no-op code that was initially introduced in
r23981 (ENH: Fix 3943 and other enhancements for slice view annotations)

Revision 24643  Directory Listing
Modified Mon Oct 19 19:40:37 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Add updateCornerAnnotation() function

Revision 24642  Directory Listing
Modified Mon Oct 19 19:40:36 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Rename function

Revision 24641  Directory Listing
Modified Mon Oct 19 19:40:34 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Move ScalarBar font config to modifyScalarBar()

Revision 24640  Directory Listing
Modified Mon Oct 19 19:40:32 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Re-factor and simplify updateSliceViewFromGUI()

Revision 24639  Directory Listing
Modified Mon Oct 19 19:40:31 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Simplify removing 'currentSliceViewName' ivar

Update API of these methods adding 'sliceViewName' parameter:
* drawCornerAnnotations
* makeDicomAnnotation

Revision 24638  Directory Listing
Modified Mon Oct 19 19:40:29 2015 UTC (23 months, 1 week ago) by jcfr
BUG: SliceViewAnnotations: Ensure modifyScalarBar uses a valid scalarBar

Before this commit, the code adding/removing the scalarBar actor could
have been executed with a non-initialized scalarBar variable.

Revision 24637  Directory Listing
Modified Mon Oct 19 19:40:28 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Fix unused variable checking sliceCompositeNode

Revision 24636  Directory Listing
Modified Mon Oct 19 19:40:26 2015 UTC (23 months, 1 week ago) by jcfr
BUG: SliceViewAnnotations: Ensure 'y' is set in updateOrientationMarker

Revision 24635  Directory Listing
Modified Mon Oct 19 19:40:25 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Remove unused/dead code

This commit removes dead code originally introduced in r23612 (ENH: Add
Slice Annotations to DataProbe module)

Revision 24634  Directory Listing
Modified Mon Oct 19 19:40:23 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Explicitly identify static methods

Revision 24633  Directory Listing
Modified Mon Oct 19 19:40:21 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Remove unused variables and fix typo

Revision 24632  Directory Listing
Modified Mon Oct 19 19:40:20 2015 UTC (23 months, 1 week ago) by jcfr
STYLE: SliceViewAnnotations: Simplify code

Revision 24626  Directory Listing
Modified Fri Oct 16 17:42:58 2015 UTC (23 months, 1 week ago) by pinter
ENH: Adaptor classes facilitating python scripted subject hierarchy plugins

Assembla ticket for this task:
https://www.assembla.com/spaces/slicerrt/tickets/614
Example plugin available for VolumeClip modules:
https://subversion.assembla.com/svn/slicerrt/trunk/VolumeClip/src

Revision 24624  Directory Listing
Modified Fri Oct 9 12:56:27 2015 UTC (23 months, 2 weeks ago) by lassoan
BUG: Fixed default DICOM database directory

When Slicer is installed on a computer the first time it set the DICOM directory to a read-only directory (silently) and all DICOM imports were failed (silently).

Root cause: ctkDICOMBrowser is created before the DICOM module checks the DICOM directory (and initializes it if empty). This is an issue, because ctkDICOMBrowser constructor sets the DICOM directory to be in the current working directory if it is not set in the settings. The current directory is typically C:\Program Files\..., which is read-only.

Solution: check the DICOM directory and initialize it properly before creating the ctkDICOMBrowser object.

Also added a check to warn the user if a non-empty directory is selected (if that is not a previously created DICOM database directory). This might prevent users from trying to import DICOM files by setting the DICOM database directory to the location where those files are stored (it would not import the files anyway).

Revision 24622  Directory Listing
Modified Thu Oct 8 17:15:57 2015 UTC (23 months, 2 weeks ago) by jcfr
STYLE: Update python scripts to not import from __main__

This commit simplifies the scripts removing extra `from __main__`
statements and improve the integration with Python IDE ensuring python
package like "slicer" can simply be imported.

The `from __main__` statement most likely became obsolete since
r24155 (ENH: Fixes #3549. Import scripted module as python module).

Remarks:

A global replace of "from __main__ import" into "import" as been done
except in:
 * EditOptions: "from __main__ getNodes" changed into "from slicer.util import getNodes"
 * slicer/module[dm|logic|mrml|widget]/__init__.py where it makes sense to keep it.

Revision 24612  Directory Listing
Modified Wed Oct 7 23:50:25 2015 UTC (23 months, 2 weeks ago) by jcfr
STYLE: Remove unused python imports from SliceViewAnnotations

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24611  Directory Listing
Modified Wed Oct 7 23:50:24 2015 UTC (23 months, 2 weeks ago) by jcfr
STYLE: Consistently use triple double-quoted string in python docstrings

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24610  Directory Listing
Modified Wed Oct 7 06:46:33 2015 UTC (23 months, 2 weeks ago) by jcfr
ENH: Add auto-delete subject hierarchy children to Application Settings

This commit adds an entry in the SubjectHierarchy settings panel for
the property autoDeleteSubjectHierarchyChildren added in the previous
commit.

This is the parallel to was done for autoCreateSubjectHierarchy property
in r24574 (ENH: Added auto-create subject hierarchy option to Application
Settings)

Revision 24609  Directory Listing
Modified Wed Oct 7 06:46:29 2015 UTC (23 months, 2 weeks ago) by jcfr
ENH: Introduce autoDeleteSubjectHierarchyChildren property

Flag determining whether children of subject hierarchy nodes are automatically
deleted upon deleting a parent subject hierarchy node.

By default, a pop-up question asking the user to confirm the deletion of
children nodes will be shown.

Reviewed-by: Csaba Pinter <csaba.pinter@queensu.ca>

Revision 24606  Directory Listing
Modified Tue Oct 6 17:20:06 2015 UTC (23 months, 2 weeks ago) by jcfr
COMP: KWSYS code for pre-C++98 STL is removed

Various work arounds for pre C++98 STL compilers
have been removed from KWSYS (and by extension, ITK).

For any C++98 or greater compliant compiler, these
constructs were simply aliases to the stl objects.

This is related to the changes made to
KWSYS(5f3fd465ecc0c2d78f7af2495dfe2604be90d4bd) by
Brad King in August 2015.

These changes will be needed when upgrading to ITK v4.9 or greater.

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 24604  Directory Listing
Modified Tue Oct 6 12:55:27 2015 UTC (23 months, 2 weeks ago) by jcfr
STYLE: Remove unused DICOMStudyBrowser/DICOMStudyTable/DICOMSeriesTable

This commit removes part of experimental code added in r19454 (ENH: improvements
to DICOM Module) that was illustrating possible implementation during the
Slicer DICOM browser meeting of 2012-01-25.

See https://www.assembla.com/spaces/slicerrt/wiki/20120125_Slicer_DICOM_browser_meeting

Reviewed-by: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24602  Directory Listing
Modified Tue Oct 6 05:14:46 2015 UTC (23 months, 2 weeks ago) by jcfr
STYLE: Fix layout warning in DICOMHeaderPopup

This commit fixes the following warning reported when opening the
DICOM module:

//-------------
QWidget::setLayout: Attempting to set QLayout "" on ctkDICOMObjectListWidget "ctkDICOMObjectListWidget", which already has a layout
//-------------

It removes the unneeded QGridLayout inadvertently added in
r22689 (ENH: dicom header viewer added to DICOMLib using
ctkDICOMObjectListWidget)

Revision 24601  Directory Listing
Modified Tue Oct 6 01:35:45 2015 UTC (23 months, 2 weeks ago) by jcfr
STYLE: Fix unused variable warning in qSlicerSimpleMarkupsWidget

This commit fixes the following warning:

/path/to/Slicer/Modules/Loadable/Markups/Widgets/qSlicerSimpleMarkupsWidget.cxx:691:6: warning: unused parameter ‘column’ [-Wunused-parameter]
 void qSlicerSimpleMarkupsWidget::onMarkupsFiducialSelected(int row, int column)
      ^

Revision 24589  Directory Listing
Modified Fri Oct 2 21:48:34 2015 UTC (23 months, 3 weeks ago) by pieper
ENH: always be case sensitive when matching node names with fnmatch

when using fnmatch.fnmatch the case sensitivity depends on the
filesystem [1].  For matching used when finding slicer nodes and
qt widgets this variability does not make sense and may introduce
cross-platform bugs.  So we use fnmatch.fnmatchcase to ensure
the same behavior across platfroms.

https://docs.python.org/2/library/fnmatch.html

http://slicer-users.65878.n3.nabble.com/Capturing-mouse-events-tt4029365.html#none

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24588  Directory Listing
Modified Thu Oct 1 22:07:12 2015 UTC (23 months, 3 weeks ago) by jcfr
COMP: Update Slicer and CTK to fix DCMTK windows build error.

This commit fixes windows build error and redefined warnings introduced
by the commit r24586 (ENH: Update DMCTK to use version DCMTK-3.6.1_20150924)

Related commits:
 * r24136 (STYLE: Update CTK to fix warning related to wrapping of CTKDICOM module)
 * r23955 (COMP: Workaround to fix HAVE_STAT redefined warning in SlicerDICOMExportDialog)
 * r23952 (COMP: Workaround to fix HAVE_STAT redefined warning in qSlicerCoreApplication)

CTK updates:

$ git shortlog 7199173..6453c27 --no-merges
Jean-Christophe Fillion-Robin (2):
      Workaround refined macro warning when building CTKDICOMWidgetsPythonQt
      Fix CTKDICOMWidgetsPythonQt windows build error undefining HAVE_INT64_T

Reported-by: Andriy Fedorov <fedorov@bwh.harvard.edu>
Thanks: Andras Lasso <lasso@queensu.ca>
Thanks: Jörg Riesmeier
Thanks: Michael Onken

Revision 24583  Directory Listing
Modified Tue Sep 29 21:48:02 2015 UTC (23 months, 3 weeks ago) by naucoin
BUG: fix volume property file extensions for saving

When fixing the repeated file extensions problem, the
volume property files were missed. The problem
came up when loading in a volume property file
via add data (rather than a scene file) then
trying to save it again. The node was named with
the .vp file extension and then the file name
was adjusted to add another .vp to the end. This
fix changes the the name of the node to exclude
the extension so it will save correctly.

Added testing for the AddVolumePropertyFromFile
method and added some checks to it for missing
scene and file names. Added the supported
write types as well.

Issue #3956

Revision 24580  Directory Listing
Modified Sun Sep 27 17:48:16 2015 UTC (23 months, 4 weeks ago) by pieper
BUG: fix crash in volume rendering due to bad node type (multivolume)

The volume rendering node combobox allows child classes except for
ones known not to work.  This fix adds the MultiVolumeNode to that
list in order to avoid a crash in the internals of the volume rendering
due to invalid number of components.

A better solution would be for the volume rendering internals to
gracefully refuse to render volumes that aren't suited.  It would
be good if the volume rendering provided a method like ValidateInput
that would allow the application to let the user know that the
selected configuration won't work.

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24577  Directory Listing
Modified Wed Sep 23 17:09:10 2015 UTC (2 years ago) by pinter
BUG: Fixed SubjectHierarchyCorePluginsSelfTest

It failed due to a recent change in the clone node plugin. The scenario when adding a data node to the scene triggered creation of display and/or storage nodes was not handled.
Also implemented restoring original DICOM directory in SH generic self test for convenience.

Revision 24575  Directory Listing
Modified Wed Sep 23 04:41:49 2015 UTC (2 years ago) by lassoan
BUG: Fixed restoring of DICOM window size&position

Revision 24574  Directory Listing
Modified Tue Sep 22 21:23:51 2015 UTC (2 years ago) by pinter
ENH: Added auto-create subject hierarchy option to Application Settings

This flag has been in the settings for a long time, but was not exposed in Application Settings, so if the user changed their mind, they did not have a UI option to change the option.

Revision 24573  Directory Listing
Modified Tue Sep 22 20:38:34 2015 UTC (2 years ago) by pinter
BUG: Fixed cloning of nodes which involve display or storage nodes by events when copied

Revision 24572  Directory Listing
Modified Tue Sep 22 19:14:04 2015 UTC (2 years ago) by pinter
ENH: Show wait cursor when hardening transforms

Hardening transforms especially deformable ones and especially on composite objects (like segmentations that contain multiple segments to transform) can take a long time. The wait cursor indicates to the user that Slicer is working on the operation they initiated.

Revision 24571  Directory Listing
Modified Tue Sep 22 15:31:31 2015 UTC (2 years ago) by msmolens
BUG: Fix libpng warnings in console when loading images with Qt 4.8.7

This commit eliminates the following libpng warning seen when loading certain
PNG images using libpng 1.6.x, which is included in Qt 4.8.7:

    libpng warning: iCCP: known incorrect sRGB profile

To fix the images I ran them through ImageMagick, which removes the incorrect
profiles, as suggested in [1]:

    convert image.png image.png

libpng 1.6.17 describes the warning in png.c line 2308:

    /* These profiles are known to have bad data that may cause
     * problems if they are used, therefore attempt to
     * discourage their use, skip the 'have_md5' warning below,
     * which is made irrelevant by this error.
     */

[1] http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile

From: Max Smolens <max.smolens@kitware.com>

Revision 24570  Directory Listing
Modified Tue Sep 22 13:58:33 2015 UTC (2 years ago) by msmolens
STYLE: EditorWidget: Simplify observer management by using VTKObservationMixin

This commit changes EditorWidget to use VTKObservationMixin, as suggested in [1].

[1] https://github.com/Slicer/Slicer/pull/346#issuecomment-141474443

From: Max Smolens <max.smolens@kitware.com>

Revision 24568  Directory Listing
Modified Tue Sep 22 13:15:07 2015 UTC (2 years ago) by msmolens
BUG: Fix unitialized variable that causes py_LabelStatistics test failure

In a release build running the py_LabelStatistics test intermittently results in
a hang or memory corruption.

This commit fixes the problem by initializing a member variable in
vtkSlicerVolumesLogic. The member variable, and therefore the regression, was
introduced in r23934 ("BUG: avoid false positives on geometry check"). The
initial value matches what's described in the member variable's comment.

The unit test is updated to check the initial value of the member variable.

From: Max Smolens <max.smolens@kitware.com>

Revision 24567  Directory Listing
Modified Mon Sep 21 21:08:31 2015 UTC (2 years ago) by pinter
ENH: Allow multi-selection in subject hierarchy.

Drag&drop and deletion of multiple nodes are now possible with one operation. All the context menu actions other than Delete become unavailable when multiple nodes are selected, but is still available with a single node. DICOM references are also highlighted for each selected node.
Related to https://www.assembla.com/spaces/slicerrt/tickets/620

Revision 24565  Directory Listing
Modified Mon Sep 21 16:03:17 2015 UTC (2 years ago) by lassoan
ENH: Improved qSlicerSimpleMarkupsWidget with some new signals and properties

Can jump to the selected fiducial.
Node selector and options can be hidden.
Placement button can be synchronized with an external button through new signal/slot.
Signal is available for being notified about currently selected fiducial.

Revision 24562  Directory Listing
Modified Fri Sep 18 14:51:14 2015 UTC (2 years ago) by msmolens
BUG: Fix memory leaks associated with py_StandaloneEditorWidgetTest

In a debug build running running py_StandaloneEditorWidgetTest reports that a
number of VTK class instances leak.

The leaks occur because EditorWidget adds an observer callback in __init__()
that is never removed.

This commit fixes the leaks by moving initialization of the observer callback to
enter() and removing the callback in exit().

Fixes #4048

From: Max Smolens <max.smolens@kitware.com>

Revision 24557  Directory Listing
Modified Thu Sep 17 16:27:59 2015 UTC (2 years ago) by msmolens
BUG: Fix py_nomainwindow_DCMTKPrivateDictTest on Windows

Test py_nomainwindow_DCMTKPrivateDictTest fails on Windows because DICOMLib
can't find the dcmdump.exe utility.

Based on a comment in DICOMProcesses.py, the DCMTK build tree didn't always
include the configuration name (i.e. 'Debug' or 'Release') in the build path for
the utilities. Now the build tree does include the configuration name. This
commit adds the 'Debug' and 'Release' subdirectories to the list of searched
paths.

Fixes #4049

From: Max Smolens <max.smolens@kitware.com>

Revision 24552  Directory Listing
Modified Tue Sep 15 22:44:42 2015 UTC (2 years ago) by jcfr
STYLE: DataProbe: Refactor adding functions to generate text descriptions

This commits adds the functions to facilitate the customization
of the text displayed in the data probe in extension.

Function added are:
* generateViewDescription(self, xyz, ras, sliceNode, sliceLogic)
* generateLayerName(self, slicerLayerLogic)
* generateIJKPixelDescription(self, ijk, slicerLayerLogic)
* generateIJKPixelValueDescription(self, ijk, slicerLayerLogic)

Co-authored-by: Davide Punzo <punzodavide@hotmail.it>

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24551  Directory Listing
Modified Tue Sep 15 22:44:40 2015 UTC (2 years ago) by jcfr
STYLE: DataProbe: Rename function to indicate it is "private"

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24550  Directory Listing
Modified Tue Sep 15 22:44:38 2015 UTC (2 years ago) by jcfr
STYLE: DataProbe: Simplify constructor

This commit removes unneeded test for widget "type". Initially introduced
in r18030 (ENH: remove ThreeDViews and SlicesControllerToolbar)
on Sept 12th 2011.

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24549  Directory Listing
Modified Tue Sep 15 22:44:36 2015 UTC (2 years ago) by jcfr
STYLE: DataProbe: Remove redundant code

This commit removes redundant call to "onShowImage(False)" from "addView()".

It is already done in function "createSmall()" called by in the constructor
of DataProbeInfoWidget itself instantiated in "addView()" function mentioned
above.

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24548  Directory Listing
Modified Tue Sep 15 22:44:34 2015 UTC (2 years ago) by jcfr
STYLE: DataProbe: Refactor code introducing "_createMagnifiedPixmap()"

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24547  Directory Listing
Modified Tue Sep 15 22:44:32 2015 UTC (2 years ago) by jcfr
STYLE: DataProbe: Remove unused code setting 'currentLayoutName' ivar

This commit removes code initially introduced in r22253 (BUG: #3262
update data probe on non-mouse-move events) that later became obsolete
with r23387 (ENH: Added mouse cursor position to vtkMRMLCrosshairNode.)

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24545  Directory Listing
Modified Mon Sep 14 22:16:20 2015 UTC (2 years ago) by jcfr
STYLE: UnitsLogic: Improve AddUnitNodeToScene doxygen

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24544  Directory Listing
Modified Mon Sep 14 22:16:19 2015 UTC (2 years ago) by jcfr
ENH: Extend Units logic API adding "GetDisplayCoefficient()"

Executing the following python snippet before and after integrating this
commit confirmed that value associated with "length" units are
converted to suitable values for display.

8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
import math
l = slicer.modules.units.logic()
s = l.GetUnitsScene()

units =  ['Meter', 'Centimeter', 'Millimeter', 'Micrometer', 'Nanometer']

print("X mm -> %s", units)
for v in range(-5, 5):
  value_in_mm = math.pow(10, v)
  converted_values = []
  for unit in units:
    n = s.GetNodesByName(unit).GetItemAsObject(0)
    n.SetPrecision(6)
    converted_values.append(n.GetDisplayStringFromValue(value_in_mm))

  print("10^%d mm -> %s" % (v, converted_values))
8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---

Output before and after:

10^-5 mm -> [' 0.000000 m', ' 0.000001 cm', ' 0.000010 mm', ' 0.010000 \xb5m', ' 10.000000 nm']
10^-4 mm -> [' 0.000000 m', ' 0.000010 cm', ' 0.000100 mm', ' 0.100000 \xb5m', ' 100.000000 nm']
10^-3 mm -> [' 0.000001 m', ' 0.000100 cm', ' 0.001000 mm', ' 1.000000 \xb5m', ' 1000.000000 nm']
10^-2 mm -> [' 0.000010 m', ' 0.001000 cm', ' 0.010000 mm', ' 10.000000 \xb5m', ' 10000.000000 nm']
10^-1 mm -> [' 0.000100 m', ' 0.010000 cm', ' 0.100000 mm', ' 100.000000 \xb5m', ' 100000.000000 nm']
10^0 mm -> [' 0.001000 m', ' 0.100000 cm', ' 1.000000 mm', ' 1000.000000 \xb5m', ' 1000000.000000 nm']
10^1 mm -> [' 0.010000 m', ' 1.000000 cm', ' 10.000000 mm', ' 10000.000000 \xb5m', ' 10000000.000000 nm']
10^2 mm -> [' 0.100000 m', ' 10.000000 cm', ' 100.000000 mm', ' 100000.000000 \xb5m', ' 100000000.000000 nm']
10^3 mm -> [' 1.000000 m', ' 100.000000 cm', ' 1000.000000 mm', ' 1000000.000000 \xb5m', ' 1000000000.000000 nm']
10^4 mm -> [' 10.000000 m', ' 1000.000000 cm', ' 10000.000000 mm', ' 10000000.000000 \xb5m', ' 10000000000.000000 nm']

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24543  Directory Listing
Modified Mon Sep 14 22:16:17 2015 UTC (2 years ago) by jcfr
ENH: Extend Units logic API adding "GetSIPrefixCoefficient()"

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24542  Directory Listing
Modified Mon Sep 14 22:16:15 2015 UTC (2 years ago) by jcfr
STYLE: Fix doxygen in vtkSlicerUnitsLogic

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24536  Directory Listing
Modified Sun Sep 13 03:42:59 2015 UTC (2 years ago) by jcfr
BUG: UnitLogic: Fix display coefficient associated with "velocity" unit.

This commit fixes a regression introduced in r24413 (ENH: Adding extra
units support (frequency, velocity and intensity) )

From: Davide Punzo <punzodavide@hotmail.it>

Revision 24535  Directory Listing
Modified Sun Sep 13 03:42:57 2015 UTC (2 years ago) by jcfr
BUG: MRMLUnitWidget: Connect correct signal

This commit fixes an issue introduced in r22190 (ENH: Improve
qMRMLUnitWidget interface).

From: Davide Punzo <punzodavide@hotmail.it>

Revision 24531  Directory Listing
Modified Sun Sep 13 02:45:58 2015 UTC (2 years ago) by jcfr
COMP: Facilitate build of few more CLIs as external module

This commit will facilitate the building of DiffusionWeightedVolumeMasking
and ExecutionModelTour CLIs as external module.

Revision 24530  Directory Listing
Modified Thu Sep 10 06:22:23 2015 UTC (2 years ago) by jcfr
COMP: Set loadable module _INCLUDE_DIRS variables in Slicer project

This commit fixes a regression introduced in previous commit by ensuring
vtkSlicerTractographyDisplayModuleMRML_INCLUDE_DIRS variable is also
defined in the Slicer project itself.

Before this commit similar variables were only defined after including
SlicerConfig.cmake (by calling "find_package(Slicer)").

Note that since SubjectHierarchy Logic and MRML libraries are setting
the _INCLUDE_DIRS to a specific values, an exception is adding to
the SlicerMacroBuildModuleVTKLibrary macro. Alternatively, missing
include directories could have been added to each SH plugin but the same
update would have to be done for extension building SH plugin.

Revision 24529  Directory Listing
Modified Thu Sep 10 03:29:28 2015 UTC (2 years ago) by jcfr
COMP: Facilitate build of FiberTractMeasurements as external module

This commit (1) removes unused dependency to SlicerBaseCLI library
and SlicerBaseLogic include directories and (2) specifies
vtkSlicerTractographyDisplayModuleMRML include directories using
variable exported in SlicerConfig.

For more details, see http://slicer-devel.65872.n3.nabble.com/Fail-to-compile-FiberTractMeasurements-td4034841.html

Reported-by: "Zhang, Fan" <FZHANG@bwh.harvard.edu>

Revision 24528  Directory Listing
Modified Wed Sep 9 19:41:11 2015 UTC (2 years ago) by naucoin
BUG: expand the Editor parameter node checking

When an Editor parameter node is present in the current
scene as well as in a MRML file about to be loaded, the
check for the singleton node was failing (the singleton
tag is not serialised to XML), this change expands
the check so that the original singleton parameter
node is found (the loaded one is not a singleton).

Issue #4006

Revision 24520  Directory Listing
Modified Fri Sep 4 20:43:11 2015 UTC (2 years ago) by naucoin
BUG: fix add storable after scene view test

Move to using just the slicer.util.delayDisplay as using
the self.delayDisplay was causing a conflict.


Revision 24516  Directory Listing
Modified Wed Sep 2 12:25:15 2015 UTC (2 years ago) by lassoan
BUG: Fixed transform translation slider instability in rotate first mode

How to reproduce the problem:
1. Create a new Transform
2. Switch to 'rotate first' mode (pushbutton pressed)
3. Drag the LR translation slider to 200
4. Drag the AP slider to 1 and back to 0
5. Drag the LR translation slider to the rightmost position
=> ERROR: the translation jumps to tens of thousands (instead of the expected 400)

Fix: Don't update the translation slider range if in 'rotate first' mode. Set the matrix range to a fixed large value to allow larger translation values in the matrix than the slider range.

Revision 24515  Directory Listing
Modified Tue Sep 1 18:00:04 2015 UTC (2 years ago) by jcfr
BUG: qSlicerNodeWriter: Default parameters allowed incorrect usage

This commit fixes the following warning obtained when compiling
using clang and c++11.

  Slicer/Modules/Loadable/Models/qSlicerModelsModule.cxx:165:44: warning: 'this' pointer cannot be null in
        well-defined C++ code; pointer may be assumed to always convert to true [-Wundefined-bool-conversion]
        QStringList() << "vtkMRMLModelNode", this));
                                           ^~~~

The 'this' pointer was interpreted as boolean.  To ensure complete proper
usage, the default parameters were removed, thus forcing compiler errors
that were easy to identify and fix.

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 24512  Directory Listing
Modified Fri Aug 28 15:38:58 2015 UTC (2 years ago) by jcfr
STYLE: Improve readability of code in vtkReformatLogic::SetSliceNormal()

Revision 24510  Directory Listing
Modified Thu Aug 27 16:10:59 2015 UTC (2 years ago) by pieper
BUG: handle missing parameter for propagationMode for legacy mrml files

Ron reported that the editor did not display correctly when
loading an old mrml file (the SPL brain atlas from the
DataStore).

The issue was that the editor parameter node in the file did not
contain a value for the propagationMode field and so the editor
interface could not be constructed.

This fix ensures that a valid propagation mode is selected in
this case.

TODO: it would be good to have a sanity check on the node to confirm
that all needed values exist and if not they should be set to
the application default.

Revision 24509  Directory Listing
Modified Wed Aug 26 20:36:46 2015 UTC (2 years, 1 month ago) by naucoin
BUG: remove extra node added event

When switching to using a mini scene to try various ways of
loading volumes, the final node added event wasn't removed
when I switched to using AddNode to move the final set of
nodes into the main scene. This change removes the extra
node added event triggered by adding a volume.

Issue #4033

Revision 24505  Directory Listing
Modified Tue Aug 25 20:13:52 2015 UTC (2 years, 1 month ago) by pieper
STYLE: remove out of date comment

Global hotkeys for 'e' and backslash have been moved to qt
and are no longer handled as vtk events.

Revision 24503  Directory Listing
Modified Fri Aug 21 12:37:31 2015 UTC (2 years, 1 month ago) by lassoan
BUG: Fixed CastScalarVolume for unsigned char, int, long input

Revision 24502  Directory Listing
Modified Wed Aug 19 03:22:15 2015 UTC (2 years, 1 month ago) by lassoan
BUG: Fixed crash caused in Model display node widget

Slicer crashed when updated a filter pipeline that generated a polydata that was used by the model node.

There was an infinite loop (and stack overflow) caused by automatically selecting the first scalar attribute when the polydata is regenerated by the pipeline.

Fixed by allowing having 'none' selected as displayed scalar in the model widget and therefore avoiding automatic scalar selection when scalars are added to the data set and so avoiding infinite loop.

Revision 24501  Directory Listing
Modified Tue Aug 18 14:32:27 2015 UTC (2 years, 1 month ago) by msmolens
BUG: Fix running DataProbe self test

This commit fixes the following error when running the DataProbe self
test from the SelfTests module:

    Starting the test
    Traceback (most recent call last):
      File "C:/dev/SN/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/SelfTests.py", line 168, in run
	result = self.selfTests[test]()
      File "C:/dev/SN/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbe.py", line 46, in runTest
	tester.runTest()
      File "C:/dev/SN/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbe.py", line 611, in runTest
	self.test_DataProbe1()
      File "C:/dev/SN/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbe.py", line 637, in test_DataProbe1
	if not os.path.exists(filePath) or os.stat(filePath).st_size == 0:
    NameError: global name 'os' is not defined

From: Max Smolens <max.smolens@kitware.com>

Revision 24497  Directory Listing
Modified Thu Aug 13 18:05:37 2015 UTC (2 years, 1 month ago) by lassoan
ENH: Made transforms module translate-rotate first icon nicer

The rotate icon is reused from another Slicer icon and a similar color and style translate icon is added

Revision 24496  Directory Listing
Modified Thu Aug 13 01:09:18 2015 UTC (2 years, 1 month ago) by lassoan
ENH: Improved transform copy-paste

Added [] characters to the characters that are removed when pasting a transform (numpy arrays have a lot of them).
Added tooltip to Copy and Paste buttons.

Revision 24495  Directory Listing
Modified Wed Aug 12 04:35:17 2015 UTC (2 years, 1 month ago) by jcfr
ENH: SimpleMarkupsWidget: Add property to control place mode behavior

This commit adds a boolean property named "EnterPlaceModeOnNodeChange"
to control behavior of entering place mode when active node is changed.

By default the property is enabled.

From: Adam Rankin <adam.rankin@gmail.com>

Revision 24493  Directory Listing
Modified Tue Aug 11 23:09:33 2015 UTC (2 years, 1 month ago) by naucoin
ENH: check for data that will get deleted on scene view restore

Added a flag to the scene view node restore call that will cancel if
any nodes come up as being in the main Slicer scene but not in the
scene view scene about to be restored.
Added a method to add nodes to the scene view scene that are in the
main Slicer scene but not in the scene view.
Updated the GUI for restoring scenes via the tool bar and the Scene
Views module to pop up message boxes to give the user options to
discard the data, add it to the scene view, or cancel the restore.
Updated the test to include a failure case when removing nodes
is not allowed.
Unify scene view node to use SafeDownCast instead of a mix of
dynamic_cast and SafeDownCast.

Issue #3956

Revision 24492  Directory Listing
Modified Tue Aug 11 22:44:51 2015 UTC (2 years, 1 month ago) by pieper
BUG: fix creating new extension

Wrong variable was being checked for directory existence.

Creates new directory in selected target.

This commit fixes a regression introduced in r24452 (BUG: Fixed
extension creation in version-controlled repository )

see - https://github.com/Slicer/Slicer/pull/320

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24489  Directory Listing
Modified Mon Aug 10 14:48:49 2015 UTC (2 years, 1 month ago) by pieper
BUG: FiberBundleLabelSelect

1) Fixing the bug from ADD operation for ‘Label to include’
2) Fixing the module so that it takes both VTK and VTP when being used
as CLI

MANTIS issue link: http://www.na-mic.org/Bug/view.php?id=4025

From: zhangfanmark <zhangfanmark@gmail.com>

Revision 24488  Directory Listing
Modified Sat Aug 8 15:45:28 2015 UTC (2 years, 1 month ago) by lassoan
BUG: Fixed unitended volume rendering display node sharing issue

Problem: When a volume rendering display node does not exist the VR widget picks up the first available node (because None option is not enabled in the selector widget)
Fix: allow None option to prevent assigning the same display nodes to multiple volumes.

Problem: vtkMRMLVolumeRenderingDisplayNode is abstract, therefore adding a node from the widget always fails.
Fix: disable add node option in the display node selector widget

Revision 24487  Directory Listing
Modified Sat Aug 8 15:41:18 2015 UTC (2 years, 1 month ago) by lassoan
BUG: Fixed volume rendering not visible when non-volume-rendered volume is frequently changing in the scene

The issue caused volume rendering result not visible when a live 2D ultrasound image was kept updating in the scene through OpenIGTLink.

Fix: VR displayable manager is notified about the change of all volume nodes that have a VR display node, but we now only request render if the currently volume-rendered volume node is changed.

Revision 24482  Directory Listing
Modified Tue Aug 4 03:43:54 2015 UTC (2 years, 1 month ago) by jcfr
BUG: Ensure volume rendering is updated when volume geometry is modified.

Fixes #4023

From: Adam Rankin <adam.rankin@gmail.com>

Revision 24475  Directory Listing
Modified Mon Aug 3 18:56:19 2015 UTC (2 years, 1 month ago) by lassoan
STYLE: Replaced cout with vtkDebugMacro

Revision 24474  Directory Listing
Modified Sun Aug 2 15:25:31 2015 UTC (2 years, 1 month ago) by pieper
ENH: reset editor interface when scene is closing

This avoids situations where the shortcut keys or editor effects are
still trying to respond to scene events when the scene is
in the process of closing.

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24470  Directory Listing
Modified Tue Jul 28 21:51:17 2015 UTC (2 years, 1 month ago) by lassoan
ENH: Fixed node observations in qSlicerSimpleMarkupsWidget

Also added a simple test for the widget.

Revision 24469  Directory Listing
Modified Sun Jul 26 21:04:34 2015 UTC (2 years, 2 months ago) by pinter
ENH: DICOM reference name made checkable

Previously the DICOM references dialog offered chacking the found but unselected references in a checkbox with no text, and added a label next to it, so the user could check/uncheck the checkbox clicking the small checkbox square, instead of reacting also to clicking on the text. By removing the label and adding text to the checkbox this inconvenience has been eliminated.

Revision 24461  Directory Listing
Modified Fri Jul 24 23:25:05 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Update VTK to master (soon to be v6.3.0) and also update CTK

CTK updates:

$ git shortlog 7bb708c..7081550 --no-merges
Jean-Christophe Fillion-Robin (2):
      Fix link error when linking against VTK build with KITS enabled.
      Tweak logic specifying libraries to link against VisualizationVTKCore

Rostislav Khlebnikov (1):
      DEBUG variable renamed to DEBUG_FLAG

VTK Updates:

$git shortlog 4b46455..d645b35 --no-merges
Aashish Chaudhary (41):
      Maximize or minimize each component for independent components
      Fixed additive blending for independent components
      Added initial support for 2 and 3 components
      Fixed style
      Fixed bad switch case
      Compute the range correctly when dealing with 2-3 components
      Keep the comments in the final shader string
      Added support for dependent components
      Match tokens with method names
      Fixing shader for 2 & 3 component
      Fixed dependent component test failing
      Fix GL extensions not reported on Mac OpenGL2 context
      Reset active texture to texture 0
      Saving and restoring GL state
      Fixed comment
      Clamp texture unit to 0 and GL_MAX_TEXTURE_IMAGE_UNITS
      Fixed accessing invalid texture unit manager
      Using a consistent style within a method
      Compute light position only once
      Optimize lighting code some more
      Reset number of lights
      Some more optimizations for better performance
      Respect interpolation type set on volume property
      Fixed invalid variable names used for gradient computation
      Fixed check on interpolation type
      Updated default interpolation type for test
      Fixed style
      Added check on when to update volume parameters
      Do not update light parameters if shading is OFF
      Fixed compiler warning
      Some more optimizations
      Do not compute color if opacity is zero
      Updated code to new computeColor signature
      Avoid computation of fragment world position repeatedly
      Fixed failing VTK tests
      Removed debug message
      Fixed issues with interactive volume rendering
      Fixed styles and added notes
      Fixed ReductionFactor not initialized that was causing tests to hangup
      Added alternate baseline with jitter for GL2
      Updated test to new ivar to turn off auto adjust sample distance

Andras Lasso (1):
      BUG: Fixed vtkImageReslice HitInputExtent update

Andrew Bauer (6):
      Fix for bad cached cell id for flow path filters.
      Particle path fixes.
      Getting rid of unused variable warning in release builds.
      Fixed memory issue and reinject frequency counter.
      Adding in piece information for XMLPMultiBlockDataWriter.
      Fix issue if there aren't any blocks.

Andrew Maclean (20):
      Remove the unnecessary find_package command.
      Visual Studio 2013 requires the <algorithm> header.
      Visual Studio 2013 requires the <algorithm> header.
      A minor fix eliminating a CMP0043 warning.
      Added TestEmptyInput.py
      Refactoring TestEmptyInput.py
      Convert TestSetGet from TCL to Python.
      Added a new class to exclude.
      Missing comma.
      Adding another class to exclude in an attempt to fix release mode on OSX.
      Removing two classes in LinuxExceptions.
      Adding back some classes to the exception list.
      Test - see if vtkView as a friend is causing failures.
      Reverting
      Reverting
      A patch from Utkarsh
      These scripts only run using Python 2.6 or greater.
      Display information about the VTK test folders.
      Converted more Tcl scripts to Python.
      BUG: This import is unnecessary.

Arnaud Gelas (1):
      Fix typo in FindTBB.cmake which makes it impossible to use TBB on MacOSX

Ben Boeckel (38):
      windows: compile the vtkpython.rc file separately
      vtkpython: avoid vtkpythonrc hack in Visual Studio
      docs: add buildbot information
      docs: buildbot label is no more
      python: silence warnings about round redefinition
      vtkMPICommunicator: check for 2.0
      java: remove screamake and quote paths
      java: refactor out writing paths to the file
      java: quote arguments
      java: add missing java files
      python: add the generated files to the list as well
      freetype: update baselines to support freetype 2.5.3
      testing: set PROCESSORS property for MPI tests
      FindJsonCpp: add version detection
      ThirdParty: add minimum version support
      jsoncpp: mark that 0.7.0 is the minimum version
      vtkFFMPEGWriter: conditionalize a GCC pragma
      FindJsonCpp: fix typo in regex
      JsonCpp: the VERSION_VAR is a separate signature
      QVTKWidget2: call the direct parent class
      QVTKWidget2: use Superclass typedef internally
      doxygen: generate SVG images
      vtkRAdapter: move R_NO_REMAP to the header
      mpi4py: strip trailing whitespace from the include dir
      typos: fix 'writting' -> 'writing'
      vtkWin32ProcessOutputWindow: fix string literal
      vtkXMLUnstructuredDataWriter: also check for string output
      qtgraphicsview: remove unused vtkgl.h includes
      vtkGenericOpenGLRenderWindow: add PushState/PopState methods
      QVTKGraphicsItem: support the OpenGL2 backend
      vtkOpenGLRenderUtilities: move Render{Quad,Triangle}
      IOXML: add test for outputting to a string
      modules: use the export name for the file
      Testing: fix unused variable warnings
      FiltersStatisticsGnuR: fix R_NO_REMAP juggling
      FiltersStatisticsGnuR: fix warnings in tests
      semanticDiffVersion: use the returncode
      python: split wrapping functions

Berk Geveci (14):
      Fixed issue with vtkPointSet::FindCell().
      Impoved check for ascii file in PLOT3D reader.
      Fixed compiler warning
      Initial point data support in AMR base reader
      Added point array support to vtkAMRBaseReader
      Moved Plot3D reader to IO/Parallel.
      Making the Plot3D reader parallel.
      Improved ghost array generation.
      Do not rexecute based on ghosts for serial execution
      Do not override DATA_NUMBER_OF_GHOST_LEVELS() unnecesarily.
      Cleaned up error handling in plot3d reader.
      Fixed warnings.
      BUG: Was using the wrong extent in computation.
      Fixed bug with loading 2D or ASCII datasets in parallel.

Bill Hoffman (1):
      Use Qt5 COMPNENTS in find_package instead of finding each package directly.

Bill Lorensen (18):
      COMP: Member template function use on Mac
      COMP: Member template function use on Mac
      ENH: Modernize RIBExporter and RIBProperty
      COMP: Memory leak in new test
      ENH: define VTK_MAXPATH
      COMP: Typo causes compile error
      COMP: Memory leak in vtkOBJImporter
      STYLE: OBJImporter style
      COMP: Adjust fuzzy compare tolerance
      COMP: Adjust fuzzy compare tolerance for scalar divide
      BUG: PentagonalPrism bug
      COMP: TestPentagonalPrism mempry leak
      ENH: Unit Test for Linear, Quadratic and BiQuadratic Cells
      ENH: Remove unused tcl tests
      ENH: Restore Common/DataModel Cxx tests
      BUG: Missing data file
      ENH: Removed unused vtkExplicitCell
      ENH: Remote module capability

Brad King (45):
      setup-stage: Optionally reconfigure topic stage
      setup-gerrit: Allow ssh-only repo URLs
      setup-stage: Allow 'url' without 'pushurl'
      Tell Git how to check GitSetup config files
      Add 'git-gerrit-push' script
      setup-hooks: Create .git hooks directory if necessary
      Avoid bash history expansion in developer setup scripts
      ExternalData: Allow local stores without any URL templates
      ExternalData: Add support for custom download scripts
      ExternalData: Add support for custom algorithm-to-URL mapping
      ExternalData: Update documentation to match CMake copy
      git-gerrit-push: Refine topic name validation
      git-gerrit-push: Append topic to refspecs instead of overwriting
      git-gerrit-push: Avoid bash history expansion
      git-gerrit-push: Fetch 'master' before checking refspecs
      Add 'setup-upstream' script to help users configure preferred upstream
      Add 'setup-gitlab' script to configure GitLab access
      Add 'git-gitlab-push' script to help users push to their GitLab fork
      git-gitlab-push: Print follow-up instructions and links for user
      git-gitlab-push: Keep user fork 'master' up to date if possible
      git-gitlab-push: Document options on multiple lines in usage
      git-gitlab-push: Require a '--force' option to force-push the topic
      Teach our 'git-gitlab-push' script to push ExternalData content
      Drop mention of Gerrit from instructions in third-party README files
      Disable gerrit-push and stage aliases
      Switch developer setup to use the GitLab workflow
      Tell Git how to check Markdown (.md) source files
      Documentation: Add VTK Git instructions
      CONTRIBUTING: Update for GitLab workflow
      README.md: Add document introducing VTK and linking to resources
      README.html: Remove out-dated document
      Documentation: Revise Merge Request creation instructions
      Documentation: Add links to GitLab markdown documentation
      Documentation: Revise Git development docs to mention fork step
      setup-upstream: Tolerate lack of existing upstream pushurl
      Report developer setup-upstream failure explicitly
      CONTRIBUTING: Restore link to dev/git/README.md document
      Documentation: Explain how to keep a GitLab fork `master` in sync
      Documentation: Explain to reviewers how to fetch Merge Request changes
      Fix 'git-gitlab-push' ExternalData push for duplicate objects
      Documentation: Update required Git version to 1.7.2
      Documentation: Define reviewer vote shortcuts and meanings
      KWSys: Tell Git not to export .gitattributes
      Add vtkPeriodicDataArray to list of sources in its module
      vtkhdf5: Suppress VS 2015 assertion failure popup during try_run

Burlen Loring (1):
      buffering issue in vtkweb

Chris Harris (3):
      Wait for resize notification in SetSize(...)
      Revert "Wait for resize notification in SetSize(...)"
      vtkWeb: Ensure that we get the image size requested

Chuck Atkins (1):
      ADIOS: Remove block-index calculations to use new APIs

Cory Quammen (14):
      Added vtkPolyLineSource
      Added vtkPolyLineRepresentation and vtkPolyLineWidget
      Added base class for representations of curves
      Tests for vtkPolyLine{Widget,Source,Representation}
      Added checking for NULL pointer in a few locations
      BUG 15365: Fixed crash in function called from multiple threads
      BUG: Fixed error in area-weighted normal
      Initialized all member variables in vtkCurveRepresentation
      Various fixes for vtkPolyLine{Source,Representation}
      Initialized test values
      BUG: added output points precision for structured grids
      Added test for vtkDataSetSurfaceFilter
      BUG: Direct scalar coloring with string arrays caused crash
      Move table resizing out of core mapping routine

Dan Lipsa (42):
      Solve warnings on the ICC compiler.
      Redesign "vtkGhostLevels" arrays and related ghost functionalties.
      Fix warnings.
      Solve windows warnings.
      Remove warning when a array name for labeling is not found.
      Use previous version for XML files if there is no vtkGhostType array.
      BUG #15199: EnSightReader does not crash if you change CaseFileName
      VTK XML files are saved using previous version if possible.
      Update documentation for save VTK XML using previous version.
      BUG: Fix valgrind complaint about uninitialised values.
      BUG: Blanked cell is marked as a blanked point.
      ENH: Remove legacy code from before vtk-6.1 (2014-01-21)
      ENH: Add GatherV for vtkDataObjects
      BUG: Mismatch between # of points and # of tcoords results in segfault
      BUG: XMLMultiBlockDataWriter always pointed to vtp files.
      BUG: Add additional baselines to deal # of digits in exponent.
      BUG: Fix uninitialized values that caused segfault.
      BUG: Skiped a number when adding a baseline.
      BUG: Skipped a number when adding a baseline.
      BUG: Test passed because two wrongs made it right.
      ENH: Ghost changes documentation update.
      BUG: Fix initialization and typo problems.
      BUG: Enable vtkFiltersSourcesPython-squadViewer only if Module_vtkRenderingTk
      BUG: vtkTestingInteractor cannot create timers which results in errors.
      BUG: Fix link warnings for static build on windows.
      BUG: Teach ImageSlice and ImageSliceMapper to deal with empty slices
      BUG: InteractorEventRecorder bug results warning about passive observer.
      BUG: Fix test volume of interest to match data extents
      ENH: TestChangeInformation does not print error message.
      BUG: Fix warning 'Resetting view-up since view plane normal is parallel'
      BUG: Fix warning 'Resetting view-up since view plane normal is parallel'
      BUG: This fixes a valgrind complaint.
      BUG: We need a Renderer for HasTranslucentPolygonalGeometry
      BUG: Fix version for ghost documentation.
      BUG: Get rid of error printouts from TestRIBExporter
      BUG: Replace deprecated functions.
      BUG: vtkProbeFilter stored state which did not work for multi-block data.
      BUG: Initialize grids before adding them to the AMR dataset.
      BUG: Test basic representation after you setup the object
      ENH: CanReadFile does not fail for newer file version.
      ENH: Move test that discovers inconsistent structured grids in an AMR grid.
      BUG: Fix uninitialized value.

Dave DeMarle (3):
      Increment version to VTK 6.3.0
      fix no newline comp warning
      expose texture so manta can intercept

David C. Lonie (59):
      Enable freetype tests when matplotlib is not found.
      Use a default text property in the labeled contour mapper.
      Don't use offscreen FBOs when multisampling is requested.
      Disable multisampling in the OSCone test.
      Enable MPL tests only if the vtk module is enabled.
      Allow vtkTextActor* to handle empty inputs.
      Account for actor matrix in vtkLabeledContourMapper.
      Add a debug-only yellow dot at the text alignment point.
      Ensure that the background is rendered behind the text.
      Improve appearance of small-sized mathtext.
      Add missing ReleaseGraphicsResources implementation.
      Move test file (s/cpp/cxx)
      Remove unimplemented private method.
      Fix transformed contour label placement on OpenGL backend.
      Fix kerning on rotated fonts.
      Update sources in chart symbol glyphs.
      Add missing ReleaseGraphicsResources implementation.
      Release actor resources in vtkLegendScaleActor.
      Use vtkTextRenderer in the default label render strategy.
      Do not set vtkProperties on vtkTextMappers.
      Fix vtkBiDimensionalRepresentation2D to work with new text mapper.
      Use string width, not length, to determine longest labels.
      Remove tcl [info command "rtExMath"] check from test.
      Print image name on test failure.
      Update vtkTextMapper's alignment to match current conventions.
      Align to a fixed-height font bbox, rather than a "tight" one.
      Remove the RenderingFreeTypeOpenGL module.
      Exercise the new default vtkTextMapper implementation.
      Update baselines.
      Add new baselines for dash3's continuous build.
      Number baselines consecutively.
      Baselines from nightlies.
      Fix typo/platform issues in GLUT test.
      Call glewInit() from test to setup GL function pointers.
      Move PreserveColorBuffer to vtkRenderer.
      Fix glut header in test.
      Fix variable type.
      Allow an explicit mapping between tprops and scalars for contour labels.
      Update make_pair call to work with newer MSVC.
      Clean up Rendering/OpenGL2/vtkGenericOpenGLRenWin.
      Remind MSVC that NULL is a pointer. Fix tclPrintOtherTest.
      Change comment text to use a gentler tone.
      Release shaders after rendering is complete.
      Define missing typedefs.
      Fix typo.
      Add vtkWindow::DetectDPI.
      Add DPI awareness to text rendering.
      Apply kerning to bounding box calculations.
      Don't glyph hidden points in vtkGlyph2D.
      Mark ticks as dirty when enabling/disabling log scale.
      Performance cleanup.
      Account for TileScale in RenderWindowToImage filter.
      Fix vtkAxis scaling when TileScale is set on the renwin.
      Defer matplotlib initialization for text rendering.
      Update Get macro for paraview parsers.
      Use max(tdx, tdy) to determine string bound scaling...
      Add a warning if there is not a scene set on the vtkAxis instance.
      Ensure that input data is synced.
      Make ScalarBarRepresentation orientation set-able.

David E DeMarle (1):
      Fix depth peeling with antialiasing

David Gobbi (22):
      BUG 15358: Remove inappropriate cast from pointer to long.
      Add the vtkBoundingBox type to the Python wrappers.
      Fix Java build, different extensions for file properties.
      Allow wrappers to properly support "using" methods.
      Apply using declarations that hadn't been "used".
      Add missing hints for color conversion methods.
      Add virtual data method CopyInformationToPipeline.
      Fix vtkParseMerge uninitialized variable warnings.
      Allow TestEmptyInput to work with python 2.5.
      Fix a null deref when wrapping "using" declarations.
      Enable the "using" declaration in vtkTypedArray.h.
      Fix nifti sform, qform when qfac=-1.
      Fix uninitiazed array warning in vtkBSPlineInterpolator.
      Put back some Visual Studio 2003 compatibility code.
      Temporary wrapper fix, pointers to vtkSmartPointer.
      Code style fixes.
      Allow NIFTI reader and writer to handle planar RGB files.
      Close the DICOM file immediately after reading it.
      Fix blank slices that appear in some TIFF volumes.
      Replace the O(n^2) median algorithm with an O(n) one.
      Fix the median computation in vtkImageMedian3D.
      Fix normal computation in vtkContourTriangulator.

Ethan Brodsky (4):
      ENH: Added edge annotations to vtkCornerAnnotation
      CMP: Eliminated warnings relating to for loop iterator scoping
      BUG: Updated test baseline output for edge annotation
      ENH: Modified vtkCornerAnnotation testing to improve code coverage

Isaiah Norton (1):
      Visual Studio 2013 requires the <algorithm> header.

Jean-Christophe Fillion-Robin (15):
      Maintenance: 'main' function in WhatModulesVTK can now be re-used
      Maintenance: Update WhatModulesVTK to support rendering backend
      Do not force manifest selection for vtkhdf5 libraries
      modules: Re-order RenderingOpenGL libraries to fix VTK_ENABLE_KIT link error
      python: Add wrapping of kits if VTK_ENABLE_KITS is ON
      python: Update python module dependency to account for VTK_ENABLE_KITS
      python: Configure PythonInit file for kit when VTK_ENABLE_KITS is ON
      python: Update wrapping function to support kit
      python: Add VTK_ENABLE_KITS to VTKConfig
      python: Update wrapping tool to support multiple hierarchy files
      python: Do not create a new hints file if a kit bundles only one module
      python: Update vtkWrapPython to add mutable object when building kit
      Disable Chemistry module to workaround issue #15255
      KWSys-SystemTools: Fix memory leak in DetectFileType
      Revert "6657: Add out-of-range colors to color maps"

Joachim Pouderoux (9):
      Bug #0015217: Fix tet aspect ratio computation.
      Fix filter crash when input data is not temporal
      Add more support of Quadratic Polygon cells.
      Fix TessellatorFilter so it does not crash with quadratic polygon cells.
      Enhance and optimize Xdmf2 reader and writer to support static meshes.
      code cleaning
      Fix error with java wrapping
      fix header test
      Add test and fix reader

John Tourtellott (6):
      Apply WRAP_EXCLUDE to the vtkGDAL not vtkGDAL.h
      Add return value to vtkPythonInterpreter::RunSimpleString()
      Add field data to vtkUniformGrid to save GDALDataset NoDataValue
      Fix indentation and restore empty line
      Move variable declaration inside loop to limit its scope
      Change iterator from postincrement to preincrement

Julien Finet (13):
      Kill TDX timer when using no WindowHandle
      Add TDX_INCLUDE_DIR CMake variable
      Add multitouch support to QVTKWidget and QVTKWidget2
      Add support for drawing multiple line segments
      Add vtkPlot::Selectable
      Add vtkPlotBag::BagVisible
      Fix crash in vtkPlotHistogram2D
      Exposes vtkHighestDensityRegionStatistics::ComputeHDR() to the public API
      Fix unsorted range error in vtkChartSelectionHelper::BuildSelection
      Fix compilation by adding DrawLines() to OpenGL context devices
      Fix unsafe mix of bool and int types
      Enable GPU Raycast volume mapper for recent NVIDIA drivers on Mac OS X
      GPU raycast volume rendering now supports textures larger than 1024

Julien Jomier (1):
      BUG: Internal title box should be initialized

KWSys Robot (3):
      KWSys 2015-04-16 (1ea01a46)
      KWSys 2015-04-19 (4f39791b)
      KWSys 2015-05-12 (b1d560a0)

Karsten Tausche (3):
      fix copied noise extent in vtkImageDataLIC2D
      fix memory leak in vtkImageDataLIC2D
      Remove vtkFreeTypeUtilities.h from vtkScalarBarActorInternal.h

Ken Martin (135):
      Fix a couple issues
      Fix a regression and new failing test
      Fix interactions of depth peeling with the point gaussian mapper.
      Fix a case where glyphic was failing on unlit primitives
      A couple depth peeling fixes
      A number of transparency related issues fixed
      Forgot to comment out debug statement
      Fix for the case when there is nothing to draw
      Rename class back to the old name for better compatability
      Add in support for below and above range LUTs
      Remove power of two requirement from image slice mapper
      Remove window size change
      Add back in LIC for OpenGL2
      Rebased and merged due to conflicts
      Fix a compiler warning
      Some lic cleanup for ES 2 and ES 3
      A few dashboard fixes as described below
      Fix a few issues with ImageDataLIC2D
      A few more VR fixes I missed the first time
      Fix PV text composite with cell data issues
      Fix issues with composite dataset luts issues
      Fixes for composite id when selecting on OpenGL2
      Fix failing test and add new convenience func
      Add a valid image and a slight change to generated normals
      Convert Context2D to use more modern OpenGL
      I should learn to test on intel too before committing
      Some fixes for bigmac
      Fix for draw pixels shows up in PV rubberband selection
      Add some debugging code
      Minor compile fix for GL ES 20
      Fix bad destructor
      redo how cell data is handled and picking
      Add support for picking indirection arrays
      Managed to get scale and bias for voluem rendering working
      Make VTK work with OpenGL 3.2 Core
      Make X windows default to a 3.2 context
      Convert Cocoa to default to OpenGL 3.2
      Some more fixes for apple to make VTK more 3.2 core compliant
      Even more OSX 3.2 changes
      More 3.2 OpenGL fixes
      Minor compiler warning fix
      Minor change to pass line width calls through
      Added valid images for cases where line width is over 1.0
      Add missing ReleasGraphicsResources call
      Some exit cleanup fixes for debug mesa
      redo how cell data is handled and picking
      Add support for picking indirection arrays
      Convert Cocoa to default to OpenGL 3.2
      Even more OSX 3.2 changes
      Minor compiler warning fix
      Add missing releasegraphicsresources
      Rebasing from master
      Fix compile error
      Make sure GL_R32F is available on old 2.1 context
      Fix for apple
      Some fixes for mesa master runs
      Fix some compiler warnings
      Some compile fixes for OpenGLES
      Fix a few issues exposed by PV testing
      Fix two compiler warnings.
      A couple more picking fixes these related to processor id
      Better Tk support for OpenGL2
      Instanced arrays require OpenGL 3.3 not 3.2
      Remove old style rendering check
      Fix for cell normals to use RGBA32F textures
      Renamed XOpenGLRenderWindowInteractor back to original name
      Added valid image for Sphere widget
      Fix for independent components on mesa
      Pare down the test to be about 40% faster
      Some X window fixes and make two slow tests faster
      Update the alternate image as well
      Fix apple ifdef
      Fix for some systems
      Type fix
      Some fixes for checking framebuffer depths
      New valid image due to line widths
      Tiny fix for OpenGL ES 3
      And whoa I committed a png undo that
      Add method for external codes
      Support use of FieldDataTupleId in scalar coloring opengl2
      Add a geometry shader and some cleanup and fixes
      Do not use GeometryShaders on ES
      Test out ogl2 as the default for buildbot systems
      More fixes based on test dashboard
      Fix a couple more issues
      Duh fix bas cmake code
      Always use our glew
      Update to backend logic
      Fix check for multisample support
      Newer logic so apps can set a default rendering backend
      Set default back to OpenGL1 for commit
      Clenup some OpenGL2 code
      More cleanups
      Rebased to master
      Maybe fix memory leak
      Fix a compiler issue with PV
      Fix for compile issue on OpenGLES
      Test fix for applie AMD primitiveID bug
      Better warning message
      Add support for 2D
      Another apple fix
      Fix memory leak
      Another compiler fix
      Another fix due to multiple VBOs
      Make the VAO code bind the bufferobject
      Remove reference to old header file
      Trying something
      Sticking with basic approach
      Fix an atom rendering performance regression
      Remove a leftover test setting
      Some more code cleanups, this time shader related
      Remove some unused ivars
      Add ability for PointGaussianMapper to also just draw points
      Fix test that was creating an ill defined camera
      Update test to have more debugging
      Support wide lines in the polydata mappers on 3.2
      Fix prim id issue on mac
      More cleanup and fixes for 2D this time
      Fixes for failing tests
      Fix issue on Apple
      A couple minor fixes that PV exposed
      More minor fixes
      Some fixes for PV ColorOpacityTableEditing
      Make sure PV texture fix hits the other use cases
      Fix for clear depth call on es
      Thick lines only use a GS when the hardware lacks support
      Fix compiler issue on gcc
      Update to fix failing tests
      Better handling of thick lines in a couple places
      Fix some recent compile issues
      Some compiler fixes for Android
      Fix missing header
      Fix issue with compositepolydatamapper2 with scalar colors
      Add valid image for non AA systems
      Apply fix to the generic version as well.

Lin Ma (6):
      Tested merge
      Added vector for memoizing
      Modified vtkMath::Factorial
      Recursive stored intermediate results
      Fixed bugs
      Changed map to vector

Marcus D. Hanwell (4):
      Added support for writing TIFF volume stacks
      Fix compiler warning - unsigned int -> int
      Removed unused sstream include, add Windows logic
      Fix bug with bad TIFF tag on char/short format

Mathieu Westphal (20):
      Reimplementing AppendData using vtkDataArrayIteratorMacro and std::copy
      Adding surface streamlines
      VTK Style
      Adding Angular Periodic Filter and Angular Periodic Array to VTK.
      Correcting multiple bugs with periodic data array
      AngularPeriodicDataArray : Use of sin instead of sinf
      Correcting bugs in vtkCell implementation
      Correcting pcoords in vtkTriangle
      Add a degenerate Triangle test in IntersectWithLine
      Correcting degenerate triangle
      Missing initialization of a member
      Fixing coincident point in stream tracer output
      Correcting a warning in vtkLargeInteger
      Adding another image for test
      Checking for Null vtkPoints in Angular Periodic Filter
      Fixing 14897 mantis bug, adding VTKTargets.cmake in install
      fixup python testing
      Deprecating FrontBuffer member and double passing tests if necesssary
      First bug fix fro periodic filter
      Fixing parallel periodic filter

MetaIO developers (1):
      MetaIO 2015-03-18 (ebdd30dd)

Nathan Fabian (6):
      Fixed possible nulls when FieldData are string arrays.
      Detect when we're writing sets and don't write them as blocks.
      NodeSets finally write out.
      Side sets now write out correctly.
      Replaced the missing const
      Replaces iterator pointers with SmartPointers to avoid possible leaks.

Robert Maynard (7):
      FindTBB: Updated implementation to version proposed for CMake.
      Get SynchronizedTemplates3D to work with more than 4GB.
      Get ThreadedSynchronizedTemplates3D to work with more than 4GB.
      CONTRIBUTING: Add an overview of the development process
      You can't close a null tiff pointer.
      Mark the entire Accelerators Piston module as legacy as of 6.3
      Mark the entire Accelerators Dax module as legacy as of 6.3

Rolf Eike Beer (2):
      ExternalData: Replace MATCHES with STREQUAL where possible
      ExternalData: Clean up duplicate regex matches with CMAKE_MATCH_<n>

Sankhesh Jhaveri (69):
      Clipping test with oblique clipping planes
      Explicitly set sample distance for timing test
      Make sure most voxels are rendered for timing test
      Make the AMR Volume mapper available for GL2 backend
      Added test with shading
      Fix volume cropping issue
      Circumvent crash in volume mapper when context changes
      Added test for change related to releasing resources
      Added ivar for ContextChanged
      Laxed restrictions on input data required by OpenGL2 volume mapper
      GPU volume mapper test for two independent components
      Added interaction and baseline to the two independent components test
      Fix error in OpenGL2 volume mapper for multiple components
      Test for GPU volume mapper with three independent component scalar data
      Test for two dependent component scalar data
      Modify test for three components
      Fix two dependent components case for volume mapper
      Reset scale and bias after loading volume
      Take per component range for setting default transfer functions
      Use the appropriate components for transfer functions
      Fix crash due to wrong index fetching of tables
      Use the right component for opacity functions
      Added baselines for new tests
      New baseline for the independent components MinIP test
      Fix lights issue in external render environments
      Set spot parameters on the newly created lights
      Changed GLUT test to remove VTK lights
      Added ability to automatically resize external window
      Account for window position when drawing in external context
      Fix lighting for external rendering environments
      Update the GLUT test baseline
      Added Generic OpenGL RenderWindow to OpenGL2 pipeline
      Enable OpenGL2 support for vtkRenderingExternal module
      Provide extension manager support to external rendering module
      Removed redundant tests and fixed crop test
      Streamlined testing without VolumeOpenGLNew tests
      Remove trailing references to VolumeOpenGLNew
      Remove module VolumeOpenGLNew
      Remove context caching from the volume mapper
      Remove unused variable warning
      Add API for auto-adjust sample distances to smart volume mapper
      Add convenience API to smart volume mapper
      Fix data trunctation issues with 32 bit int types
      Enforcing GPU breaks old mapper compatibility for test
      Fix AMR volume mapper for recent smartvolume mapper changes
      Remove debug print messages
      PrintSelf newly added variable
      Add new external light object
      Ability to modify externally created lights in the external renderer
      Modify existing lights each render call
      Documentation changes
      Change default for vtkExternalLight
      Performance optimization in external renderer
      Fix external window stereo mode position for OpenGL2 backend
      Fix near plane offset clipping when camera inside
      New test for camera inside volume calculations
      Added camera inside test for small spacing
      Update comment to reflect documentation
      Add resolution specification capability to circle glyphs
      Add test for glyph 2D circle resolution
      Fix test failure due to vtkMath::Random
      Fix constant array size issue
      Fix crash due to un-set point ID
      Fix compile error when compiling vtkRenderingExternal
      Added test for GPU volume mapper jagged edges issue
      Restore concept of InteractiveUpdateRate for vtkSmartVolumeMapper
      Compute initial sample distance based on dataset spacing
      Interactively adjust sample distance for vtkSmartVolumeMapper
      Improve documentation of new variable in vtkSmartVolumeMapper

Scott Wittenburg (8):
      Support pvweb color editor widget and use of local storage by apps.
      Add a completely standalone tool for generating color swatch images.
      Support retrieving geometry for all timesteps in paraviewweb.
      Change framerate stats to show two decimals places.  Fix stat table.
      Update autobahn client/server as well as vtkweb connect for longpoll.
      Allow clients to know when a render occurred that was not stale.
      Fix how we import our argparse fallback implementation.
      Add synchronous methods to Base64-encode image data as png or jpg.

Sean McBride (88):
      Unified mixed unsigned char/int usage to bool
      Unconfused cppcheck by removing unneeded null check
      Moved dereference to after null check
      Fixed typo: - should be ->
      Fixed || that should be &&
      Fixed contradictory ‘if’ statements
      Fix division by zero cppcheck warnings
      Fix clang warnings about implicit float->bool
      Add asserts to silence clang analyzer warning
      Return upon error, otherwise invalid file reference is used
      Fixed memory leaks found by cppcheck
      Fix incorrectStringCompare cppcheck warning
      Fixed cppcheck signConversion warning
      Made various float to bool conversions explicit
      Removed unneeded casting
      Fixed stack allocation to be properly aligned
      Replace size() with empty()
      Copy-paste error, duplicate ORing
      Add parens for less ambiguity, fix cppcheck warning
      Refactor & simplify to avoid cppcheck false positive
      Reverse order of AND statements
      Removed simple dead stores/statements found by cppcheck
      Refactor old school alignment test to use offsetof()
      Remove the addition of a few inappropriate vtkErrorMacro
      Fix more include guards to not start with __vtk
      Removed dead code found by cppcheck
      Removed unneeded c_str() usage
      Silence clang analyzer warning
      Fixed minor format string mismatch
      Fixed possible array overrun found by cppcheck
      Move index ‘i’ check after usage
      Removed _probably_ dead code
      Reformulate assert to pacify cppcheck
      Fix null deref, likely due to && vs || typo
      Fixed cppcheck warning about all-const params to strncmp
      Check ResizeAndExtend error result and bail
      Fixed division by zero found by cppcheck
      Merged private function into destructor
      Removed code dead since 2001.
      Removed code dead since 2003.
      Removed code dead since 2001.
      Removed code dead since 2010.
      Removed code dead since 2006.
      Added static to many private globals
      Fixed -Wformat-pedantic warnings
      Removed dead code
      Fixed all -Wswitch-enum warnings
      Revert warning fix that caused another warning
      Fixed mismatch between ivars and get/set macros
      Changed many int to vtkIdType
      Fixed implicit float/double to bool conversion
      Added explicit casts to fix Wconversion warnings
      Fixed memory leak in Cocoa code (regression)
      Fixed dead code warning on OS X
      Fixed unused parameter warning
      Fixed warning caused by warning fixes from other branch
      Fixed compiler error with div() introduced with Wconversion fixes
      Changed vtkWriter::Write()'s return value
      Fixed illegal left shift of negative number
      Fixed some warnings from PGI compiler dashboard
      Fixed blunder in merge request #51
      Added missing #include, causing some bots to not build
      Fixed -Wextra-semi warnings within VTK macros
      Fixed -Wextra-semi warnings in ThirdParty/alglib
      Fixed -Wextra-semi warnings in ThirdParty/ftgl
      Fixed -Wextra-semi warnings in ThirdParty/utf8
      Fix -Wimplicit-fallthrough warnings; introduce VTK_FALLTHROUGH
      Modernized Cocoa code to use NSTrackingArea
      Removed many unneeded null checks before delete
      Changed placeholder value from 0.0 to 1.0, fixing undefined behaviour
      Disambiguated use of term “kilobyte”
      Fix possible null deref by bailing early
      Workaround cppcheck warning by refactoring loop
      Removed dead store found by cppcheck
      Fix warning about identical comparisons
      Avoid cppcheck division by 0 warning
      Fixed null deref found by cppcheck
      Fixed division by zero
      Fixed STLReader regression vs VTK 5.10.1
      Fixed mismatch array new/delete found by clang -Wmismatched-new-delete
      Removed branches for _MSC_VER <= 1400.
      Removed branches for gcc 4.0 and lower.
      Added #error for known old unsupported compilers
      Restored support for Apple gcc 4.2
      Hopefully suppress ‘used uninitialized’ warnings
      Replace VTKGL2 define with VTK_OPENGL2
      Fixed ‘no newline at end of file’ warnings
      Added VTK_FALLTHROUGH in case without break

Sebastien Jourdain (1):
      Allow GetTuple6 to be preperly Wrapped

Shawn Waldon (10):
      Handle datatypes other than single precision float
      Add overloads to parallel communication methods
      Update the documentation on data array subclasses
      Make java wrapping give files to javac via a response file
      Add higher timeouts for some long running tests
      Force tests to run in serial
      Remove "have tcoords" print statement
      Add a reader for the MRC image file format
      Add test for MRC reader
      Add test data

Steve Pieper (1):
      BUG: WIP: fix vtkPickingManager interaction with widgets

Steven Hahn (1):
      Change while loop condition for osx.

Sujin Philip (19):
      Fix for windows warning suppressions not working
      Fix SMP compile warning in VC++
      vtkThreadedSynchronizedTemplatesCutter3D
      Remove double underscores from header guard.
      Add support tbb in local build dirs, and from composer installs.
      Improvements to vtkAtomicInt
      Fixes for vtkAtomicInt issues from dashboard tests
      Improve OS X support in FindTBB
      Fix errors detected on Windows dashboards
      Fix usage of CriticalSectionGuard
      Change vtkAtomicInt to vtkAtomic
      Re-enable use of long for 64-bit vtkIdType
      Added Improved FindOpenMP module
      OpenMP backend for SMP
      Add vtkAtomic support headers to list of sources
      Fix testing of MTime in TestAtomic
      Fix cmake error when ${POLICY_VAR} is empty
      Fix "#pragma warning" warning in gcc
      Intel compiler 11.1 template typedef issue

Utkarsh Ayachit (36):
      Added fake-stereo mode.
      Modified Matrix when it changes.
      Make PushImageToScreen() virtual.
      Add test to demonstrate TIFF reader issue.
      Support random access in compressed tiff files.
      Remove invalid error message.
      Avoid modifying vtkAxis unless things changed.
      Adding area plot (vtkPlotArea).
      Fix leaks in vtkExtractArraysOverTime.
      Add alternative baseline for dashlin1.
      Add missing 'close' to vtkPythonStdStreamCaptureHelper.
      BUG #14721: Add support for quadratic pyramid for Exodus reader.
      Revert "FIX: We don't select 2D annotations."
      Overcome wrapping issue with client-server wrappings in ParaView.
      Fixed warnings.
      Extending API to get information about picked location.
      BUG #15438: Handle NaN when computing array range.
      BUG #0015512: Added ability to hide plots from the legend.
      BUG #15321: Fix mode_shape array.
      Remove vtkExodusIIReader::UpdateTimeInformation().
      Cleanup initialization of TimeStepRange/ModeShapeRange.
      Expose mode-shape-range meta-data to downstream filters.
      BUG #15155: Fix issues with temporal interpolator.
      Use AllGather instead of custom implementation of the same.
      BUG #15445: Handle empty input datasets in vtkDistributedDataFilter.
      BUG #14897: Fix periodic boundary issues with vtkNetCDFCAMReader.
      Avoid segfaults for multiblocks of vtkTable.
      Fixed invalid #ifs in vtkByteSwap.
      Make vtkMultiBlockPLOT3DReader factory overridable.
      Add vtkMPIMultiBlockPLOT3DReader -- MPI-IO enabled reader for Plot3D.
      Adding a basic test to test vtkMPIMultiBlockPLOT3DReader.
      Cleaning python testing macros.
      Win64 fixes for vtkMultiBlockPLOT3DReader.
      Fix typo in call to superclass method.
      Error checking: check status of collective call.
      Fix uninitialized memory reported by valgrind.

Vincent Chen (4):
      Fixing outptr traversal bug in vtkImageResize
      Modify Stencil Iterator to work under block mode.
      vtkVolumeRayCastSpaceLeapingImageFilter,
      vtkImageBlend row traversal bug

Vittorio Parrella (2):
      Fixed crash in PokeMatrix(NULL) if not called before with valid data.
      Refactoring of Set/Get filename to model reader classes.

Will Schroeder (8):
      Fixed HandleDirection issues.
      Performance improvements via templating and SMP
      Cleaned up dashboard warnings
      New Guassian splatter class, added multithreading
      Using typename instead of class for templates
      Work around brain dead compiler
      Another method made public to work around compiler
      Another method made public to work around compiler(2)

peter karasev (19):
      add obj importer with test. fetches textured mtl files for test.
      re-add test file that was quashed unintentionally
      cleanup style issues per comments in gitlab
      update cmake for external data usage
      update style and remove console output
      more robust handling of path to texture files
      update test robustness, use freely distributable model files
      exclude header so that vtkSmartPointer can be used ...
      update md5 files in repo
      remove previous md5 refs
      touch data files to get dashboard greener
      remove previous files
      dont show warning about comments in MTL file unless debug mode on
      add support for mixing usemtl and vertex definitions, add test for this.
      touch files; previous commit encountered gitlab error
      make a pass at cleaning up warnings on cdash
      disable warning in impl file.
      add test files
      fix importing to work for no mtl file + no warnings for empty texture image

Revision 24460  Directory Listing
Modified Thu Jul 23 15:24:51 2015 UTC (2 years, 2 months ago) by lassoan
STYLE: Renamed qSlicerSimpleMarkupsWidget getCurrentNode() to currentNode()

Made the old method name deprecated (warning is logged but still works; probably can be removed completely in a couple of months)

Revision 24459  Directory Listing
Modified Tue Jul 21 21:13:45 2015 UTC (2 years, 2 months ago) by naucoin
ENH: support fiducial file transfer between Slicer and CLIs

Requires the updates to the SlicerExecutionModel to define the new XML
tag --pointfile, the pull request was merged, so the external project
file is updated.
Expands the application logic to support reading and writing fiducial files.
Expands the CLI module UI helper to create a fiducial node selection combo
box when a point file type is detected.
Expands the CLI module logic to manage fiducial files. Need to link to the
Markups storage node to set the coordinate system flag, and to remove a circular
dependency between the Markups Module and QTCLI, moved that class into Libs MRML Core.
Currently setting an attribute on the fiducial node to pass the coordinate
system flag along to ApplyTask where the files get written to disk.
Added CreateDefaultDisplayNodes for the fiducial node so it can be called for
output node setup.
Add input and output fiducial file examples with coordinate
systems set to LPS to the execution model tour.

Revision 24457  Directory Listing
Modified Mon Jul 20 14:36:46 2015 UTC (2 years, 2 months ago) by jcfr
COMP: Fix narrowing warnings in qSlicerSimpleMarkupsWidget

This commit addresses the following warnings:

/home/jcfr/Projects/Slicer/Modules/Loadable/Markups/Widgets/qSlicerSimpleMarkupsWidget.cxx:240:42: warning: narrowing conversion of ‘color.QColor::red()’ from ‘int’ to ‘double’ inside { } is ill-formed in C++11 [-Wnarrowing]
   double rgbDoubleVector[3] = {color.red(),color.green(),color.blue()};
                                          ^
/home/jcfr/Projects/Slicer/Modules/Loadable/Markups/Widgets/qSlicerSimpleMarkupsWidget.cxx:240:56: warning: narrowing conversion of ‘color.QColor::green()’ from ‘int’ to ‘double’ inside { } is ill-formed in C++11 [-Wnarrowing]
   double rgbDoubleVector[3] = {color.red(),color.green(),color.blue()};
                                                        ^
/home/jcfr/Projects/Slicer/Modules/Loadable/Markups/Widgets/qSlicerSimpleMarkupsWidget.cxx:240:69: warning: narrowing conversion of ‘color.QColor::blue()’ from ‘int’ to ‘double’ inside { } is ill-formed in C++11 [-Wnarrowing]
   double rgbDoubleVector[3] = {color.red(),color.green(),color.blue()};

Revision 24452  Directory Listing
Modified Fri Jul 17 13:14:10 2015 UTC (2 years, 2 months ago) by lassoan
BUG: Fixed extension creation in version-controlled repository

It was only possible to create extension in a non-version-controlled directory.
The problem was that extension was created in repositoryRoot/extensionName directory
but when an extension is opened in a version-controlled directory then the extension
is expected to be found in repositoryRoot.

Changed extension creation so that if it is created in a version-controlled directory
then files are added to repositoryRoot (instead of repositoryRoot/extensionName).

Revision 24450  Directory Listing
Modified Fri Jul 17 06:51:12 2015 UTC (2 years, 2 months ago) by jcfr
BUG: Fix memory leak in vtkMRMLSubjectHierarchyNode

This commit fixes the error(s) reported below by valgrind memcheck tool.

Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
executed doing the following:
 (1) Start a terminal with the appropriate environment: ./Slicer --gnome-terminal
 (2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python
 (3) Load MRHead.nrrd file, open subject hierarchy module
 (4) Exit Slicer and inspect valgrind log file

Valgrind error:

==1972== 7 bytes in 1 blocks are definitely lost in loss record 25 of 2,618
==1972==    at 0x4C2B800: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1972==    by 0x10578B1E4: vtkMRMLSubjectHierarchyNode::SetOwnerPluginName(char const*) (vtkMRMLSubjectHierarchyNode.cxx:216)
==1972==    by 0x1052F96B2: qSlicerSubjectHierarchyPluginHandler::findAndSetOwnerPluginForSubjectHierarchyNode(vtkMRMLSubjectHierarchyNode*) (qSlicerSubjectHierarchyPluginHandler.cxx:298)
==1972==    by 0x1052ECB61: qSlicerSubjectHierarchyPluginLogic::onNodeAdded(vtkObject*, vtkObject*) (qSlicerSubjectHierarchyPluginLogic.cxx:248)
==1972==    by 0x1053090F2: qSlicerSubjectHierarchyPluginLogic::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_qSlicerSubjectHierarchyPluginLogic.cxx:71)
==1972==    by 0x20AE9DC9: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /home/jcfr/Support/qt-everywhere-opensource-release-build-4.8.6/lib/libQtCore.so.4.8.6)
==1972==    by 0xA88A5A9: ctkVTKConnection::emitExecute(vtkObject*, vtkObject*) (moc_ctkVTKConnection.cxx:109)
==1972==    by 0xA87B88B: ctkVTKConnectionPrivate::execute(vtkObject*, unsigned long, void*, void*) (ctkVTKConnection.cpp:418)
==1972==    by 0xA87B615: ctkVTKConnectionPrivate::DoCallback(vtkObject*, unsigned long, void*, void*) (ctkVTKConnection.cpp:381)
==1972==    by 0x28BF8D3E: vtkCallbackCommand::Execute(vtkObject*, unsigned long, void*) (vtkCallbackCommand.cxx:42)
==1972==    by 0xE3DC3BA: vtkEventBroker::InvokeObservation(vtkObservation*, unsigned long, void*) (vtkEventBroker.cxx:838)
==1972==    by 0xE3DBA10: vtkEventBroker::ProcessEvent(vtkObservation*, vtkObject*, unsigned long, void*) (vtkEventBroker.cxx:687)

Revision 24445  Directory Listing
Modified Fri Jul 17 05:00:59 2015 UTC (2 years, 2 months ago) by jcfr
BUG: Fix memory leaks in SubjectHierarchy Register and Segment plugins

Since QMenu constructor does not take a QObject as a parent, this commit
introduces a QSharedPointer to manage the menu instance.

This commit fixes the error(s) reported below by valgrind memcheck tool.

Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
 (1) Start a terminal with the appropriate environment: ./Slicer --gnome-terminal
 (2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
 (3) Exit Slicer and inspect valgrind log file

Valgrind error:

==29339== 1,160 (40 direct, 1,120 indirect) bytes in 1 blocks are definitely lost in loss record 2,294 of 2,448
==29339==    at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339==    by 0x10550A4D9: qSlicerSubjectHierarchySegmentPluginPrivate::init() (qSlicerSubjectHierarchySegmentPlugin.cxx:114)
==29339==    by 0x10550A3E7: qSlicerSubjectHierarchySegmentPlugin::qSlicerSubjectHierarchySegmentPlugin(QObject*) (qSlicerSubjectHierarchySegmentPlugin.cxx:103)
==29339==    by 0x1054F1217: qSlicerSubjectHierarchyPluginLogic::registerCorePlugins() (qSlicerSubjectHierarchyPluginLogic.cxx:139)
==29339==    by 0x1054F0DFD: qSlicerSubjectHierarchyPluginLogic::qSlicerSubjectHierarchyPluginLogic(QWidget*) (qSlicerSubjectHierarchyPluginLogic.cxx:117)
==29339==    by 0x1080E2F5C: qSlicerSubjectHierarchyModule::createLogic() (qSlicerSubjectHierarchyModule.cxx:137)
==29339==    by 0x8E715C1: qSlicerAbstractCoreModule::logic() (qSlicerAbstractCoreModule.cxx:280)
==29339==    by 0x8E70BAD: qSlicerAbstractCoreModule::initialize(vtkSlicerApplicationLogic*) (qSlicerAbstractCoreModule.cxx:99)
==29339==    by 0x8EA2A19: qSlicerModuleFactoryManager::loadModule(QString const&, QString const&) (qSlicerModuleFactoryManager.cxx:170)
==29339==    by 0x8EA2586: qSlicerModuleFactoryManager::loadModule(QString const&) (qSlicerModuleFactoryManager.cxx:110)
==29339==    by 0x40672A: (anonymous namespace)::SlicerAppMain(int, char**) (Main.cxx:193)
==29339==    by 0x406D30: main (Main.cxx:254)

==29339==
==29339== 1,176 (40 direct, 1,136 indirect) bytes in 1 blocks are definitely lost in loss record 2,296 of 2,448
==29339==    at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339==    by 0x105507073: qSlicerSubjectHierarchyRegisterPluginPrivate::init() (qSlicerSubjectHierarchyRegisterPlugin.cxx:120)
==29339==    by 0x105506EC1: qSlicerSubjectHierarchyRegisterPlugin::qSlicerSubjectHierarchyRegisterPlugin(QObject*) (qSlicerSubjectHierarchyRegisterPlugin.cxx:104)
==29339==    by 0x1054F11ED: qSlicerSubjectHierarchyPluginLogic::registerCorePlugins() (qSlicerSubjectHierarchyPluginLogic.cxx:137)
==29339==    by 0x1054F0DFD: qSlicerSubjectHierarchyPluginLogic::qSlicerSubjectHierarchyPluginLogic(QWidget*) (qSlicerSubjectHierarchyPluginLogic.cxx:117)
==29339==    by 0x1080E2F5C: qSlicerSubjectHierarchyModule::createLogic() (qSlicerSubjectHierarchyModule.cxx:137)
==29339==    by 0x8E715C1: qSlicerAbstractCoreModule::logic() (qSlicerAbstractCoreModule.cxx:280)
==29339==    by 0x8E70BAD: qSlicerAbstractCoreModule::initialize(vtkSlicerApplicationLogic*) (qSlicerAbstractCoreModule.cxx:99)
==29339==    by 0x8EA2A19: qSlicerModuleFactoryManager::loadModule(QString const&, QString const&) (qSlicerModuleFactoryManager.cxx:170)
==29339==    by 0x8EA2586: qSlicerModuleFactoryManager::loadModule(QString const&) (qSlicerModuleFactoryManager.cxx:110)
==29339==    by 0x40672A: (anonymous namespace)::SlicerAppMain(int, char**) (Main.cxx:193)
==29339==    by 0x406D30: main (Main.cxx:254)

Revision 24437  Directory Listing
Modified Fri Jul 17 05:00:43 2015 UTC (2 years, 2 months ago) by jcfr
BUG: Fix memory leak in vtkMRMLSubjectHierarchyNode

This commit fixes the error(s) reported below by valgrind memcheck tool.

Valgrind was used on Ubuntu 14.04 against a Debug build of Slicer. It was
exected doing the following:
 (1) Start a terminal with the appropriate environment: ./Slicer --gnome-terminal
 (2) Start Slicer using valgrind: valgrind --log-file=2015-07-16-Slicer-memcheck.txt --tool=memcheck --leak-check=yes ./bin/SlicerApp-real --disable-python --disable-cli-modules
 (3) Exit Slicer and inspect valgrind log file

Valgrind error:

==29339== 6 bytes in 1 blocks are definitely lost in loss record 24 of 2,448
==29339==    at 0x4C2B800: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29339==    by 0x10599640D: vtkMRMLSubjectHierarchyNode::SetLevel(char const*) (in /home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-loadable-modules/libvtkSlicerSubjectHierarchyModuleMRML.so)
==29339==    by 0x10598C253: vtkMRMLSubjectHierarchyNode::vtkMRMLSubjectHierarchyNode() (vtkMRMLSubjectHierarchyNode.cxx:60)
==29339==    by 0x10598C144: vtkMRMLSubjectHierarchyNode::New() (vtkMRMLSubjectHierarchyNode.cxx:52)
==29339==    by 0x108325A18: vtkSmartPointer<vtkMRMLSubjectHierarchyNode>::New() (vtkSmartPointer.h:117)
==29339==    by 0x1083235AC: vtkSlicerSubjectHierarchyModuleLogic::RegisterNodes() (vtkSlicerSubjectHierarchyModuleLogic.cxx:73)
==29339==    by 0x982B519: vtkMRMLAbstractLogic::SetMRMLScene(vtkMRMLScene*) (vtkMRMLAbstractLogic.cxx:285)
==29339==    by 0x8E70F0A: qSlicerAbstractCoreModule::setMRMLScene(vtkMRMLScene*) (qSlicerAbstractCoreModule.cxx:168)
==29339==    by 0x8EA2B1A: qSlicerModuleFactoryManager::loadModule(QString const&, QString const&) (qSlicerModuleFactoryManager.cxx:181)
==29339==    by 0x8EA2586: qSlicerModuleFactoryManager::loadModule(QString const&) (qSlicerModuleFactoryManager.cxx:110)
==29339==    by 0x40672A: (anonymous namespace)::SlicerAppMain(int, char**) (Main.cxx:193)
==29339==    by 0x406D30: main (Main.cxx:254)

Revision 24433  Directory Listing
Modified Thu Jul 16 04:34:07 2015 UTC (2 years, 2 months ago) by jcfr
BUG: Fix uninitialized value in vtkSlicerVolumesLogic.

This commit fix the following error reported by valgrind memcheck tool:

==1290==
==1290== Conditional jump or move depends on uninitialised value(s)
==1290==    at 0x3E5C64FA: vtkSlicerVolumesLogic::SetCompareVolumeGeometryEpsilon(double) (vtkSlicerVolumesLogic.cxx:1042)
==1290==    by 0x3E5C35BE: vtkSlicerVolumesLogic::vtkSlicerVolumesLogic() (vtkSlicerVolumesLogic.cxx:472)
==1290==    by 0x3E5C22B4: vtkSlicerVolumesLogic::New() (vtkSlicerVolumesLogic.cxx:279)
==1290==    by 0x436D557F: qSlicerVolumesModule::createLogic() (qSlicerVolumesModule.cxx:167)
==1290==    by 0x5D60DC1: qSlicerAbstractCoreModule::logic() (qSlicerAbstractCoreModule.cxx:280)
==1290==    by 0x5D603AD: qSlicerAbstractCoreModule::initialize(vtkSlicerApplicationLogic*) (qSlicerAbstractCoreModule.cxx:99)
==1290==    by 0x5D928A7: qSlicerModuleFactoryManager::loadModule(QString const&, QString const&) (qSlicerModuleFactoryManager.cxx:170)
==1290==    by 0x5D92759: qSlicerModuleFactoryManager::loadModule(QString const&, QString const&) (qSlicerModuleFactoryManager.cxx:157)
==1290==    by 0x5D92414: qSlicerModuleFactoryManager::loadModule(QString const&) (qSlicerModuleFactoryManager.cxx:110)
==1290==    by 0x406B81: (anonymous namespace)::SlicerAppMain(int, char**) (Main.cxx:231)
==1290==    by 0x407213: main (Main.cxx:292)
==1290==

Revision 24431  Directory Listing
Modified Wed Jul 15 20:51:22 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Creating Qt designer plugin for qSlicerSimpleMarkupsWidget

From: Matthew Holden <mholden8@cs.queensu.ca>

Revision 24430  Directory Listing
Modified Wed Jul 15 20:51:20 2015 UTC (2 years, 2 months ago) by jcfr
BUG: Allow qSlicerSimpleMarkupsWidget to be instantiated without Slicer app

From: Matthew Holden <mholden8@cs.queensu.ca>

Revision 24429  Directory Listing
Modified Wed Jul 15 20:14:19 2015 UTC (2 years, 2 months ago) by jcfr
STYLE: Refactor GrowCut effect logic moving popup outside of the logic

Rational: GUI for user interaction should not be added to the logic.
Instead the check should be done in the user interface code.

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24428  Directory Listing
Modified Wed Jul 15 20:14:17 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Add warning when GrowCut effect is attempted with unsupported image type

If GrowCut editor effect is attempted to be applied on an image or
labelmap that is not short then a warning is displayed for the user.

See details here: http://www.na-mic.org/Bug/view.php?id=2873

From: Andras Lasso <lasso@queensu.ca>

Revision 24427  Directory Listing
Modified Wed Jul 15 19:01:00 2015 UTC (2 years, 2 months ago) by jcfr
STYLE: Remove version string from loadable module xml description

This will facilitate release process. It will be one less element to
update when releasing a new version of Slicer.

Rational: Some loadable module include a xml file describing their
parameter. Similarly to CLI module, this file is used on the wiki to
"automatically" document [1] the option provided by a loadable module.

The MediaWiki template responsible for transforming the XML into wiki code
is available in [2]. Since it doesn't make use of the version information,
this commit simplify the maintenance by removing it.

[1] http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Tutorials/DocumentModule#Documentation_for_a_loadable_module

[2] http://www.slicer.org/slicerWiki/index.php?title=Template:Documentation/Nightly/module-description

Revision 24426  Directory Listing
Modified Wed Jul 15 19:00:57 2015 UTC (2 years, 2 months ago) by jcfr
STYLE: Remove version number from acknowledgment in Welcome module

Since the html page is only visible from within Slicer, there is no need
to mention the version number again. This will be one less element to
update when releasing a new version of Slicer.

Revision 24424  Directory Listing
Modified Wed Jul 15 18:23:42 2015 UTC (2 years, 2 months ago) by jcfr
STYLE: Facilitate release process updating wiki URL with Nightly namespace

This commit updates the templates to use wiki documentation url
mentioning the Nightly version. This will facilitate maintenance avoiding
to explicitly update the file after each release.

More specifically, thanks to the previous commit (ENH: Update wiki URLs
in module panel to reference correct documentation.), the module panel has
been instrumented to update the module description so that documentation
URLs are updated at runtime to point to the correct version of the wiki
documentation.

Note also that a new FAQ section entitled "Documentation Writing" has
been added to the Developer FAQ [1]. At the time of this commit, it reference
the following question:

  How to reference module or extension documentation hosted on the Slicer wiki ?

[1] http://wiki.slicer.org/slicerWiki/index.php?title=Documentation/Nightly/Developers/FAQ#Developer_FAQ:_Writing_Documentation

Revision 24419  Directory Listing
Modified Wed Jul 15 08:13:10 2015 UTC (2 years, 2 months ago) by jcfr
STYLE: Fix unused variable warning in qSlicerSubjectHierarchyVolumesPlugin

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24418  Directory Listing
Modified Wed Jul 15 08:13:07 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Added orientation marker to slice view annotations.

This will fix issue #2935.
Also:
* Refactoring slice view annotation code.
* Changed ScalarBar implementation: Instead of adding widget to the interactor
the scalarbar actor is directly added to the renderer. The previous implementation
(widget) had conflicts with orientation marker renderer.

Note: The STL models are made with MakeHuman software[1]. Based on [2] the exported models are under CCO licence.

[1] http://www.makehuman.org/
[2] http://www.makehuman.org/doc/faq/can_i_sell_models_created_with_makehuman.html

From: Alireza Mehrtash <mehrtash@bwh.harvard.edu>

Revision 24417  Directory Listing
Modified Wed Jul 15 06:40:13 2015 UTC (2 years, 2 months ago) by jcfr
BUG: Fix test broken by addition of new units.

Associated commit was r24413

Revision 24416  Directory Listing
Modified Wed Jul 15 06:40:11 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Update  DICOMWidgets to invoke "newFileLoaded()" signal.

This commit will ensure that volume loaded using the DICOM interface
will also invoke "newFileLoaded()" signal.

Revision 24413  Directory Listing
Modified Wed Jul 15 05:29:55 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Adding extra units support (frequency, velocity and intensity)

Fixes #4017

Reviewed-by: Julien Finet <julien.finet@kitware.com>

From: Davide Punzo <punzodavide@hotmail.it>

Revision 24412  Directory Listing
Modified Wed Jul 15 05:29:52 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Organizing settings panel unit using a scroll area.

This allow to gracefully manage more units.

See #4017

From: Davide Punzo <punzodavide@hotmail.it>

Revision 24411  Directory Listing
Modified Wed Jul 15 05:29:50 2015 UTC (2 years, 2 months ago) by jcfr
BUG: Fix display issue using explicit encoded byte sequence for unit name

Reviewed-by: Julien Finet <julien.finet@kitware.com>

From: Davide Punzo <punzodavide@hotmail.it>

Revision 24410  Directory Listing
Modified Wed Jul 15 05:29:48 2015 UTC (2 years, 2 months ago) by jcfr
STYLE: Simplify copy/paste code in transforms widget using QAction

This commit tweaks the feature integrated in r24403

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24409  Directory Listing
Modified Wed Jul 15 04:10:47 2015 UTC (2 years, 2 months ago) by lassoan
BUG: Fixed node selector node type specification syntax

There was a common syntax error in defining single-element Qt string lists in Python.

The correct way of defining a single element list:
self.outputSelector.nodeTypes = ["vtkMRMLScalarVolumeNode"]

The correct way of defining a single element tuple:
self.outputSelector.nodeTypes = "vtkMRMLScalarVolumeNode",

Currently many modules try to define a single-element tuple like this:
self.outputSelector.nodeTypes = ( ("vtkMRMLScalarVolumeNode"), "" ) => this is long and ugly and also incorrect, as the tuple has actually two elements, "vtkMRMLScalarVolumeNode" and an empty element; the empty element generates the dysfunctional "Create new node" and "Create new node as..." options.

The syntax error is fixed in all modules and a check was added to ignore empty elements in the node type list (in case the syntax error occurs again in the future).

Revision 24408  Directory Listing
Modified Tue Jul 14 18:51:35 2015 UTC (2 years, 2 months ago) by pinter
COMP: Fixed subject hierarchy build issue with CLI disabled

Fixes #4014

Revision 24407  Directory Listing
Modified Tue Jul 14 16:15:46 2015 UTC (2 years, 2 months ago) by pinter
ENH: Read and apply window/level found in DICOM volumes

The first window/level pair that is found in a DICOM volume file is applied to the display node.
Topic branch: https://github.com/cpinter/Slicer/tree/3467-read-and-apply-windowlevel-from-dicom

Fixes #3467

Revision 24403  Directory Listing
Modified Fri Jul 10 15:26:06 2015 UTC (2 years, 2 months ago) by jcfr
ENH: Added copy-paste linear transform Icons

Also made the translation/rotation order selector smaller and simpler.

From: Andras Lasso <lasso@queensu.ca>

Revision 24400  Directory Listing
Modified Tue Jul 7 19:14:07 2015 UTC (2 years, 2 months ago) by naucoin
BUG: add Scene null pointer check to copy

Testing showed that Copy can be called when the node isn't in a scene,
added a null pointer check to avoid crashing.

Issue #3965


Revision 24396  Directory Listing
Modified Tue Jul 7 17:54:45 2015 UTC (2 years, 2 months ago) by naucoin
BUG: after MRB save, reset storables to modified

When saving files into an MRB, the storable nodes are
marked as not modified since the last save. This is a problem
when new data was generated (for example via model maker) and
the new files were only saved in the now deleted MRB directory.
Reset all the storable nodes to modified since reads so that
saving the scene as a .mrml file and data files will succeed.
Will not affect multiple MRB savings.

Issue #3956

Revision 24393  Directory Listing
Modified Tue Jul 7 17:54:31 2015 UTC (2 years, 2 months ago) by naucoin
BUG: remove node SceneRootDir, use RootDirectory on MRML scene

The node ivar scene root directory wasn't staying updated when the root directory was changing on the scene. Updated the code to refer to the scene for the root directory.
One important change is that in the XML parser, the scene has to be set on a storage node before reading/writing it so that the absolute path can be determined.
 Also set the scene root dir more consistently
Updated the fiber bundle node test to use the testing macros since it was reproducing code.

Issue #3956

Revision 24392  Directory Listing
Modified Tue Jul 7 17:54:25 2015 UTC (2 years, 2 months ago) by naucoin
BUG: redo observations for volume loading with mini scene

Found during stress testing MRBs with file paths, the final
correct set of nodes used to load the volume need the storage and
display node observations reset after moving from the mini scene to the
main scene. The SampleData module wasn't finding the extra storage node
to remove it.

Issue #3956

Revision 24391  Directory Listing
Modified Tue Jul 7 17:54:22 2015 UTC (2 years, 2 months ago) by naucoin
BUG: fix moving volume nodes from test to main scene

In testing the Reporting extension, a bug was found where error messages were
being printed and the volume node had it's IJK to RAS matrix reset to identity.
Removing the nodes from the test scene before adding them to the main scene
seems to have fixed this, all relevant tests are passing now.
This change removes the following error messages:
GetNodeByID: Node is in the scene, but its ID is missing from the NodeIDs cache: vtkMRMLScalarVolumeNode3
ditto for vtkMRMLScalarVolumeDisplayNode2 and vtkMRMLVolumeArchetypeStorageNode2
and fixes the test py_ReportingRoundTripTest

Issue #3956

Revision 24387  Directory Listing
Modified Tue Jul 7 17:53:49 2015 UTC (2 years, 2 months ago) by naucoin
COMP: fix test name for label

Configuration was failing with the previous name for the new scripted self test.

Issue #3956

Revision 24386  Directory Listing
Modified Tue Jul 7 17:53:45 2015 UTC (2 years, 2 months ago) by naucoin
ENH: test adding storable data after a scene view is created

Add a fiducial, store a scene view, add a volume, restore the scene view.
To conform with the current implmentation, the new storable node
should not be present after the scene view is restored.
The test pops up an info window which times out after 15s (needed
during run time to let the user read it).

Issue #3956

Revision 24385  Directory Listing
Modified Tue Jul 7 17:53:41 2015 UTC (2 years, 2 months ago) by naucoin
ENH: factor out adding data io to the scene

Encapsulated setting up the remote IO logic and the data manager IO
in the application so that it can work as an example template.
Moved the hooking up of the data logic to the scene to the application
logic so that it can be called by classes with access to the
application logic, and use it in the volumes logic for the mini
scene.
Added some comments to direct developers to the places they need
to look to hook up a mini scene that can do data management both
locally and remotely.

Issue #3956

Revision 24384  Directory Listing
Modified Tue Jul 7 17:53:34 2015 UTC (2 years, 2 months ago) by naucoin
BUG: add support for remote IO

The crop volume module self test uses remote data, it was failing
with the mini scene in volumes logic until all the pieces were added
in to support remote IO.
TBD: update the infrastructure to make this more modular, test
without batch processing flags.

Issue #3956

Revision 24383  Directory Listing
Modified Tue Jul 7 17:53:31 2015 UTC (2 years, 2 months ago) by naucoin
BUG: use a mini scene for volume loading

The volumes logic was adding in multiple volume,
display, storage nodes as it tries to load a file. This
generated lots of node added/removed events so it was placed
inside of a batch processing state for the scene. This leads
to no node added event after the batch processing end
event so the warning about adding new storable nodes
to the scene after a scene view is already present wasn't
getting triggered.
This change uses a mini test scene to try loading data
(borrowing the main scene cache manager in case the data is remote)
and then adding the successful set of volume nodes to the main
scene, with an extra node added event after batch processing ends.

Issue #3956

Revision 24376  Directory Listing
Modified Tue Jul 7 17:53:01 2015 UTC (2 years, 2 months ago) by naucoin
BUG: avoid overwriting markup information on scene view restore

When a scene view is created in a running Slicer, the fiducial list
nodes in the scene views have correct per fiducial information
(visibility, position, etc).
When the scene is saved to disk, only one fiducial file is saved,
the current one for the main scene. The scene view nodes do
not hold per fiducial information now that all of that is saved
to disk.
The fiducials are now the same as volumes and models in terms of not
supporting data that's saved to disk changing between scene views. For
individual fiducials, this means:
position, orientation, visibility, selected, locked, label, description,
and the associated node ID

When loading a scene from disk and restoring a scene view, previously
the markups node in the Copy function would clear out the data that it
had been populated with via the storage node read. This change checks if
the scene view is restoring and the node in the scene view, from which
the data is going to get copied, has no fiducials in it, and in that
case, don't clear out the list.

Issue #3956

Revision 24371  Directory Listing
Modified Tue Jul 7 17:52:44 2015 UTC (2 years, 2 months ago) by naucoin
BUG: remove unreferenced storage node after loading sample data

When loading a sample data volume, the volume node stops observing it,
but the storage node was still in the scene. This change removes
the unneeded storage node to simplify scene saving debugging.

Issue #3956

Revision 24364  Directory Listing
Modified Sun Jun 28 02:01:25 2015 UTC (2 years, 2 months ago) by jcfr
COMP: Fix compilation of Segment subject hierarchy plugin with python disabled

This commit will fix the following error:

//--------------
[ 54%] Building CXX object Modules/Loadable/SubjectHierarchy/Widgets/CMakeFiles/qSlicerSubjectHierarchyModuleWidgets.dir/qSlicerSubjectHierarchySegmentPlugin.cxx.o
/Users/essert/DEV/Src/Slicer/Modules/Loadable/SubjectHierarchy/Widgets/qSlicerSubjectHierarchySegmentPlugin.cxx:59:10: fatal error: 'PythonQt.h' file
      not found
#include "PythonQt.h"
         ^
1 error generated.
//--------------

Reported-by: Caroline Essert <essert@unistra.fr>

Revision 24362  Directory Listing
Modified Thu Jun 25 23:49:13 2015 UTC (2 years, 3 months ago) by jcfr
COMP: Fix windows transforms module build error related to sqrt()

Following the update of ITK in r24360, the version of sqrt() function
accepting integer is probably not exposed anymore. This commit fixes
the following error by using an explicit cast:

// ---------------------
40>264>..\..\..\..\..\Slicer-1\Modules\Loadable\Transforms\qSlicerTransformsModuleWidget.cxx(447) : error C2668: 'sqrt' : ambiguous call to overloaded function

40>264>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\math.h(581): could be 'long double sqrt(long double)'
40>264>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\math.h(533): or       'float sqrt(float)'
40>264>        C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\math.h(128): or       'double sqrt(double)'
40>264>        while trying to match the argument list '(int)'
// ---------------------

Revision 24358  Directory Listing
Modified Wed Jun 24 16:12:59 2015 UTC (2 years, 3 months ago) by naucoin
ENH: signal end fiducial interaction in 3D

Update the fiducial 3D displayable manager to throw
the same end fiducial interaction event as the 2D manager,
PointEndInteractionEvent


Revision 24357  Directory Listing
Modified Wed Jun 24 15:57:18 2015 UTC (2 years, 3 months ago) by naucoin
ENH: remove unused Resolution setting on ruler node

Remove the Resolution setting as it's only used inside
the node, it has been superceded by the tick settings.


Revision 24355  Directory Listing
Modified Wed Jun 24 13:13:10 2015 UTC (2 years, 3 months ago) by jcfr
ENH: Update transforms module to support copy/paste of linear transforms.

This commit improve the transforms module to allow user to copy/paste
linear transforms to/from the clipboard. Matrix of size 2x2, 3x3 or
4x4 are supported.

Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Tested-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Fixes #4010

From: Adam Rankin <adam.rankin@gmail.com>

Revision 24354  Directory Listing
Modified Tue Jun 23 19:52:53 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Remove unused ivar from qSlicerSubjectHierarchyModuleWidget

The "ModuleWindowInitialized" ivar has been introduced as part of
commit r23235 (ENH: Subject hierarchy module added) and is not used
anywhere.

Revision 24353  Directory Listing
Modified Mon Jun 22 18:12:06 2015 UTC (2 years, 3 months ago) by jcfr
ENH: Expose SH plugin "setDisplayVisibility()" method to python

This commit will allow scripted module to update the visibility
associated with a given SubjectHierarchy node doing the following:

 shNode = [...]
 shPluginHandler = slicer.qSlicerSubjectHierarchyPluginHandler.instance()
 shPlugin = shPluginHandler.getOwnerPluginForSubjectHierarchyNode(shNode)
 shPlugin.setDisplayVisibility(shNode, visible)

Revision 24352  Directory Listing
Modified Mon Jun 22 10:53:16 2015 UTC (2 years, 3 months ago) by naucoin
BUG: expand null pointer checking

Extend ResampleVolumeToReferenceVolume to check that input and
reference volumes have transforms defined before trying to use
them.


Revision 24345  Directory Listing
Modified Fri Jun 19 18:53:24 2015 UTC (2 years, 3 months ago) by jcfr
BUG: Remove duplicate connection to node selector in Volumes module widget

Revision 24344  Directory Listing
Modified Fri Jun 19 15:31:45 2015 UTC (2 years, 3 months ago) by alexy
BUG: 3857. Fixed parallel/perpendicular diffusivity on glyphs, interactive seeding line display.

Revision 24342  Directory Listing
Modified Thu Jun 18 20:05:42 2015 UTC (2 years, 3 months ago) by naucoin
BUG: expand null pointer checking

Add a test for null image data in input and output images
in ResampleVolumeToReferenceVolume since it is not checked
before access in the method. 


Revision 24339  Directory Listing
Modified Wed Jun 17 17:22:49 2015 UTC (2 years, 3 months ago) by jcfr
BUG: Ensure effect FastGrowCut can use EditorLib.LabelEffectLogic

This commit fixes the following error:

//-----------
File "/home/jcfr/.config/NA-MIC/Extensions-24309/FastGrowCutEffect/lib/Slicer-4.4/qt-scripted-modules/FastGrowCutEffect.py", line 10, in <module>
  from EditorLib import LabelEffectLogic
ImportError: cannot import name LabelEffectLogic
//-----------

Revision 24337  Directory Listing
Modified Wed Jun 17 15:45:03 2015 UTC (2 years, 3 months ago) by jcfr
BUG: EditorLib: Avoid circular dependency and optimize effect imports

This commit has two roles:

(1) do not import "EditorLib" from module themselve imported in
"EditorLib/__init__.py"

(2) update effects to specify the __all__ attribute, this will
ensure only the expected objects are imported when calling
"from NameEffect import *" and will avoid clobbering the caller scope.

Revision 24336  Directory Listing
Modified Wed Jun 17 15:44:56 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-Effect: Simplify updateMRMLFromGUI using NodeModify context

Revision 24335  Directory Listing
Modified Wed Jun 17 15:44:54 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-EditColor: Use VTKObservationMixin for scene observation

Revision 24334  Directory Listing
Modified Wed Jun 17 15:44:52 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-EditOptions: Use VTKObservationMixin for scene observation

Revision 24333  Directory Listing
Modified Wed Jun 17 15:44:50 2015 UTC (2 years, 3 months ago) by jcfr
BUG: Editor-helpBox: Maintain backward compatibility for structures widget

This commit fixes PCampReview@b3d3d29 extension

Revision 24332  Directory Listing
Modified Wed Jun 17 15:44:48 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Refactor code adding LabelStructureListWidget

This commit move all functionality specific to "per-structure" management
into a reusable widget named "LabelStructureListWidget"

Revision 24331  Directory Listing
Modified Wed Jun 17 15:44:46 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Refactor and simplify code using VTKObservationMixin

Revision 24330  Directory Listing
Modified Wed Jun 17 15:44:44 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Refactor code adding "EditUtil.setActiveVolumes()"

Revision 24329  Directory Listing
Modified Wed Jun 17 15:44:41 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Remove extraneous "applicationLogic" ivar

Revision 24328  Directory Listing
Modified Wed Jun 17 15:44:39 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Update Editor effects and tests to directly use EditUtil

Revision 24327  Directory Listing
Modified Wed Jun 17 15:44:35 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-editUtil: Change EditUtil class method to be static

This simplifies the code avoiding to explicitly instantiate the EditUtil
class.

Revision 24326  Directory Listing
Modified Wed Jun 17 15:44:32 2015 UTC (2 years, 3 months ago) by jcfr
ENH: Editor-helperBox: Simplify UI using node selector for merge volume

This commit uses a node selector to (1) display the current merge volume
name, (2) allow the user to select a different one and (3) create a new
one if needed.

By using a node selector, it simplifies the code by:
 * removing the need for the "mergeName" HelperBox ivar
 * removing the need for the "merge" HelperBox ivar and instead add a property
 * removing the obsolete LabelSelectDialog dialog

Note that a custom "Create new " action is associated.

Revision 24325  Directory Listing
Modified Wed Jun 17 15:44:30 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Rename ivar "mergeFrame" to "mergeSelectorFrame"

Both "master" and "merge" frames are now consistently named

Revision 24324  Directory Listing
Modified Wed Jun 17 15:44:28 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Refactor code introducing LabelSelectDialog

Revision 24323  Directory Listing
Modified Wed Jun 17 15:44:25 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Refactor code introducing LabelCreateDialog

Revision 24322  Directory Listing
Modified Wed Jun 17 15:44:23 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Rename "colorSelect" into "labelCreate"

Revision 24321  Directory Listing
Modified Wed Jun 17 15:44:21 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Move "propagateVolumeSelection" to EditUtil

Revision 24320  Directory Listing
Modified Wed Jun 17 15:44:19 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Add "getNodeByName()" to slicer.util and rename it

Revision 24319  Directory Listing
Modified Wed Jun 17 15:44:16 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Simplify code reusing "slicer.util.errorDisplay()"

Revision 24318  Directory Listing
Modified Wed Jun 17 15:44:14 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Simplify code removing "items" ivar

Since r24228 (ENH: Update CTK to include new PythonQt C++/Python ownership
tracking feature), keeping track of locally instantiated QStandardItem is
not needed anymore.

Revision 24317  Directory Listing
Modified Wed Jun 17 15:44:12 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Remove unused "brushes" ivar

Revision 24316  Directory Listing
Modified Wed Jun 17 15:44:10 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Remove unused code

Revision 24315  Directory Listing
Modified Wed Jun 17 15:44:08 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-Effect: Specify event using vtk.vtkCommand instead of string

Revision 24314  Directory Listing
Modified Wed Jun 17 15:44:06 2015 UTC (2 years, 3 months ago) by jcfr
BUG: Editor: Do not call virtual method "setMRMLDefaults" in constructor

Virtual method should not be called from __init__ method. This commit
ensures that (1) the method in the leaf class will be called and
(2) the MRML defaults are effectively set.

Revision 24313  Directory Listing
Modified Wed Jun 17 15:44:04 2015 UTC (2 years, 3 months ago) by jcfr
STYLE: Editor-helperBox: Refactor code introducing "mergeVolumePostfix" ivar

Revision 24308  Directory Listing
Modified Tue Jun 16 05:04:53 2015 UTC (2 years, 3 months ago) by lassoan
BUG: Fixed DataProbe startup error

On Slicer built using VS2012 the following line fails:

qSize = qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)

Traceback (most recent call last):
  File "<console>", line 1, in <module>
ValueError: Could not find matching overload for given arguments:
(7, 7)
 The following slots are available:
QSizePolicy() -> QSizePolicy
QSizePolicy(QSizePolicy other) -> QSizePolicy
QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type) -> QSizePolicy
QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) -> QSizePolicy

This functionally equivalent few lines are more verbose but they work well:

qSize = qt.QSizePolicy()
qSize.setHorizontalPolicy(qt.QSizePolicy.Expanding)
qSize.setVerticalPolicy(qt.QSizePolicy.Expanding)

Revision 24307  Directory Listing
Modified Sat Jun 13 21:49:53 2015 UTC (2 years, 3 months ago) by alexy
BUG: 3857. Fixed scalar display on fibers.

Revision 24306  Directory Listing
Modified Fri Jun 12 12:50:52 2015 UTC (2 years, 3 months ago) by pieper
ENH: update volume rendering descriptions, remove out of date info

Revision 24304  Directory Listing
Modified Tue Jun 9 14:45:22 2015 UTC (2 years, 3 months ago) by lassoan
BUG: Fixed FOV reset during volume selection propagation

FOV of all slice views were reset during volume selection propagation. Even for views where volume selection propagation was disabled.

Fixes (at least partially) http://www.na-mic.org/Bug/view.php?id=4000

Revision 24296  Directory Listing
Modified Thu Jun 4 22:30:57 2015 UTC (2 years, 3 months ago) by jcfr
COMP: Fix missing "ctkcheckbox.h" compilation error on case-sensitive system

This commit fixes a regression introduced in r24290 (BUG: revert to not
showing tick labels on ruler by default) where the UI file
"qSlicerAnnotationModulePropertyDialog.ui" has been updated omitting the
customwidget specification. The header name associated with ctkCheckBox
was defaulting to "ctkcheckbox.h" which was causing problem on system
using case sensitive filesystem (Linux and MacOSX).

Revision 24293  Directory Listing
Modified Thu Jun 4 21:28:22 2015 UTC (2 years, 3 months ago) by pinter
ENH: Added labelmap node support to subject hierarchy

Subject hierarchy knew about the single vtkMRMLScalarVolumeNode class, but now that the vtkMRMLLabelMapVolumeNode has been introduced, a separate subject hierarchy plugin was created for labelmaps. This way it is cleaner that one role plugin assigns one icon and the same set of functionality to its owned nodes.

Fixed issue in sitkUtils: it created a scalar volume node regardless whether a labelmap was already created

Removed temporary contour references from model slice displayable manager (segmentations has its own displayable manager)

Added concept of virtual subject hierarchy branches, which is a branch for which its parent is solely reaponsible, i.e. the child nodes do not correspond to actual MRML nodes, but to items contained in the parent node to enable per-item handling from subject hierarchy (e.g. segments in segmentations and fiducials in markups)

Create and expose cloneSubjectHierarchyNode method in qSlicerSubjectHierarchyCloneNodePlugin to enable easy cloning of any node (clone SH node, data node, display and storage nodes)

Revision 24292  Directory Listing
Modified Thu Jun 4 21:10:56 2015 UTC (2 years, 3 months ago) by pinter
STYLE: Indentation fixes

Revision 24291  Directory Listing
Modified Thu Jun 4 20:12:02 2015 UTC (2 years, 3 months ago) by lassoan
ENH: Use vtkMRMLLabelMapVolumeNode class for labelmap volumes

Before vtkMRMLScalarVolumeNode was used for both scalar and label map
volumes and the LabelMap custom MRML node attribute was used for
distinguishing between them (0=scalar; 1=label map volume).
This made conversion between labelmap/scalar volumes very easy but made
it difficult to customize behavior, display, processing of segmentation
information.

Now a new vtkMRMLLabelMapVolumeNode class is used for storing segmentation
information (still using vtkMRMLScalarVolume used as base class for backward
compatibility; but in the future the base class may be changed to reflect
that segmentation can be represented in various ways, not just as volumes).

Notes:

A new "segmentation" node has been developed that is based on vtkMRMLLabelMapVolumeNode,
which can store segmentation information in various ways (not just labelmaps but planar
contours, closed surfaces, etc). To allow using of this new segmentation node,
first the vtkMRMLLabelMapVolumeNode has to be integrated into the Slicer core.

When reading a scene that was saved with an old version of Slicer, label maps are stored
in vtkMRMLScalarVolumeNode with label map attribute set to 1. Added a check for this case
and handle it by converting the vtkMRMLScalarVolumeNode to a vtkMRMLLabelMapVolumeNode during import.

Revision 24290  Directory Listing
Modified Thu Jun 4 19:39:10 2015 UTC (2 years, 3 months ago) by naucoin
BUG: revert to not showing tick labels on ruler by default

After svn 24288 tick labels started showing, this change turns
them off by default to preserve prior behaviour. When they're
on, can now use the text display node to over ride showing
both the measurement text and the label text.

Issue #3196

Revision 24288  Directory Listing
Modified Wed Jun 3 23:09:29 2015 UTC (2 years, 3 months ago) by naucoin
BUG: fix translucency rendering of ruler

The subclass vtkAnnotationRulerRepresentation3D needed to implement
HasTranslucentPolygonalGeometry in order to have rendering triggered when setting
the opacity on the ruler label -this fixes the problem where when the opacity was
set to anything other than 1, it was not rendered at all.
Fixed other opacity and color issues on the 2d and 3d rulers to make them behave
similarly.
Note: the label visibility being on now shows tick labels in 2D, turning it off
will hide both the tick labels and the measurement label. Setting text opacity
to 0 will do the same thing.
TODO: 2D font size is not changing when change the text scale.

Issue #3196

Revision 24286  Directory Listing
Modified Wed Jun 3 11:27:01 2015 UTC (2 years, 3 months ago) by pinter
COMP: Reverting faulty fix

I accidentally committed a fix that was only applicable in the branch that we were going to integrate just now. Reverting.

Revision 24285  Directory Listing
Modified Tue Jun 2 22:10:07 2015 UTC (2 years, 3 months ago) by pinter
BUG: Fixed crash when SH node dropped onto scene

Parent node is NULL but there was no check.

Revision 24284  Directory Listing
Modified Tue Jun 2 13:51:39 2015 UTC (2 years, 3 months ago) by alexy
ENH: added magnified slice view into DataProbe panel.

Revision 24282  Directory Listing
Modified Sun May 31 04:20:04 2015 UTC (2 years, 3 months ago) by lassoan
BUG: Fixed failure of disabling slice view annotations from another module

Revision 24280  Directory Listing
Modified Fri May 29 13:48:18 2015 UTC (2 years, 3 months ago) by lassoan
BUG: Fixed MRHead sample data download in CropVolumeSelfTest

On some computers the download failed. Using the SampleData module is simpler and seems to be more robust.

Revision 24279  Directory Listing
Modified Thu May 28 20:46:59 2015 UTC (2 years, 3 months ago) by pieper
ENH: Editor - Ensure a related merge volume is selected after a structure delete

ENH: Editor - Add function to select a structure in the structuresView and call it when deleting and adding structures

ENH: Editor - Select the 'next' structure in list instead of 0th on delete

From: Robin Weiss <robinweiss@uchicago.edu>

Revision 24278  Directory Listing
Modified Thu May 28 20:38:58 2015 UTC (2 years, 3 months ago) by naucoin
BUG: use ruler end point scale and opacity

The ruler displayble manager wasn't adjusting the scale and opacity
of the ruler end points, this change applies the point display
node glyph scale and opacity settings to the end point handles.

Issue #3195

Revision 24277  Directory Listing
Modified Wed May 27 21:14:26 2015 UTC (2 years, 4 months ago) by pinter
BUG: Better solution for previous quick fix for DICOM exportables

Instead of setting the slicer application as parent for exportables, they are handled in the same block where they are read out, and the export dialog itself is set as parent, so the exportables are destroyed when the export dialog is closed.

Revision 24276  Directory Listing
Modified Wed May 27 14:13:53 2015 UTC (2 years, 4 months ago) by pinter
BUG: Instantiate DICOM exportables with a parent to avoid deconstruction

The crash was in DICOM export, at the following line:
https://github.com/Slicer/Slicer/blob/master/Modules/Scripted/DICOMLib/Widgets/qSlicerDICOMExportDialog.cxx#L263
Also if there was no crash (sometimes it happened), the exportables were the same in the list (i.e. the same series is displayed 3 times instead of showing the 3 series in the study). The issue was most probably that the exportable objects get deconstructed during passing from python to C++. I downloaded a nightly just before this commit
https://github.com/Slicer/Slicer/commit/9b7171d097ad0cfa1fe89780a2ef0758cf2ae80e
and indeed, the crash was not there, the exportables showed up correctly. This commit fixes the issue, but may not be the best solution overall.

Revision 24275  Directory Listing
Modified Tue May 26 20:51:38 2015 UTC (2 years, 4 months ago) by pieper
BUG: #3994 fix issue switching between master volumes

Since subject hierarchy nodes have the same names, we filter
for volume nodes.

Revision 24274  Directory Listing
Modified Tue May 26 20:51:37 2015 UTC (2 years, 4 months ago) by pieper
ENH: only update Bg and Lb layers when switching editor volumes

Suggested and tested by Andrew Yung

Revision 24271  Directory Listing
Modified Thu May 21 15:37:31 2015 UTC (2 years, 4 months ago) by pieper
ENH: #3996 accept broader range of DICOM transfers

Adds flag to "accept all supported transfer syntaxes
other network options" to storescp.

Thanks to mcgee23 for the suggestion!

Revision 24267  Directory Listing
Modified Tue May 19 22:14:01 2015 UTC (2 years, 4 months ago) by pieper
BUG: Avoid error on shutdown

When the layoutManager is destroyed check that there is a new one
before trying to connect.

Traceback (most recent call last):
  File "/Users/pieper/slicer4/latest/Slicer-superbuild/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 232, in onLayoutManagerDestroyed
    self.layoutManager.connect("destroyed()", self.onLayoutManagerDestroyed)
AttributeError: 'NoneType' object has no attribute 'connect'

Revision 24266  Directory Listing
Modified Tue May 19 21:55:01 2015 UTC (2 years, 4 months ago) by pieper
BUG: #3954 fixes slicer bundle scene import/export

* zip file size could not be correctly passed, so now
there is an alternate encoding (hack) that works well.

* missing storage nodes prevented correct export

* export widget embedded python code had a missing
import of DICOMLib

Special Thanks to Xia, Wenyao <wenyao.xia@rmp.uhn.ca>
for his bug fixes!

Revision 24265  Directory Listing
Modified Tue May 19 21:17:58 2015 UTC (2 years, 4 months ago) by pinter
STYLE: Added doxygen comments to simple markups widget header

Also fixed compilation warning by removing Z order tag from ui file.
From: Matthew Holden

Revision 24264  Directory Listing
Modified Tue May 19 18:10:21 2015 UTC (2 years, 4 months ago) by pinter
BUG: Handle layout manager deletion in slice view annotations

Fix crash when closing Slicer, or when closing an application that uses custom layout manager with slice view annotations. It was caused by using an invalid instance of the layout manager that was previously destroyed.

Fixes 3995

Revision 24262  Directory Listing
Modified Sat May 16 16:01:45 2015 UTC (2 years, 4 months ago) by alexy
BUG: 3983. Reverted to version 23690 that fixes the crash introduced in the JC's commits since that revision.

Revision 24259  Directory Listing
Modified Fri May 15 16:51:32 2015 UTC (2 years, 4 months ago) by pinter
ENH: Enable slice view annotations to work on external layouts

Slicelets use a different layout manager than the default one in slicer.app. Option added to initialize SliceAnnotations with a different layout manager. If no layout manager is specified (no arguments for constructor), then it will use the slicer.app one as before.

Revision 24258  Directory Listing
Modified Fri May 15 15:49:35 2015 UTC (2 years, 4 months ago) by pinter
ENH: Added reusable simple markups widget

The simple markups widget facilitates using a markups list in external modules, e.g. slicelets or modules working with fiducials. This widget has been moved from https://github.com/SlicerIGT/SlicerIGT/tree/master/FiducialRegistrationWizard/Widgets after making minor changes.
Will also add a Qt designer plugin and doxygen documentation in the header.

Minor addition to DICOMWidgets, enclosing statements that tend to fail in try/except.

Fixes #3496

Revision 24255  Directory Listing
Modified Thu May 14 22:26:06 2015 UTC (2 years, 4 months ago) by pieper
BUG: use file name match, not regular expression #3994

Since mrml node names may contain characters that are meaningful
in regular expressions (such as parens) use a more limited
form of matching.

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24254  Directory Listing
Modified Thu May 14 19:41:20 2015 UTC (2 years, 4 months ago) by pieper
BUG: switching merge volumes was broken

Issue:
* enter editor, create label map
* pick Set... and the then create new
* Bug: old label map still displayed
* pick Set... and select label map (MRHead-lable_1)
* Bug: old label map still displayed

This commit fixes both issues.

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24253  Directory Listing
Modified Thu May 14 19:41:18 2015 UTC (2 years, 4 months ago) by pieper
BUG: fix variable name typo

This had no known side effects but was obviously incorrect.

Thanks Andrey for pointing it out!

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24243  Directory Listing
Modified Tue May 12 20:06:45 2015 UTC (2 years, 4 months ago) by pinter
BUG: Fix python errors when examining empty file lists

sort() calls in function isFileListInCheckedLoadables caused errors in case the file lists were empty. Not sure in exactly what scenario it occurs, but there is definitely no need for the further search if the file lists are empty.

Revision 24238  Directory Listing
Modified Mon May 11 23:06:48 2015 UTC (2 years, 4 months ago) by jcfr
BUG: Fix SliceViewAnnotations AttributeError happening on closing Slicer

This commit fixes the following error introducing a weak pointer to keep
track of the layout manager.

8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----
File "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 628, in updateCornerAnnotations
  sliceViewNames = slicer.app.layoutManager().sliceViewNames()
AttributeError: 'NoneType' object has no attribute 'sliceViewNames'
8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----

Revision 24237  Directory Listing
Modified Mon May 11 23:06:47 2015 UTC (2 years, 4 months ago) by jcfr
STYLE: Simplify SliceViewAnnotations using VTKObservationMixin

Also removes unused ivars "blNodeObserverTag" and "sliceLogicObserverTag"

Revision 24229  Directory Listing
Modified Mon May 11 02:51:36 2015 UTC (2 years, 4 months ago) by jcfr
ENH: Fix ownership management for subject hierarchy plugin registration

Revision 24227  Directory Listing
Modified Mon May 11 02:51:32 2015 UTC (2 years, 4 months ago) by jcfr
ENH: Simplify DICOM subject hierarchy plugin registration

By ensuring qSlicerSubjectHierarchyPluginHandler::instance() is wrapped,
this commit simplify the registration code by avoiding the creation of
an extra qSlicerSubjectHierarchyPluginHandler object.

Revision 24225  Directory Listing
Modified Fri May 8 23:04:16 2015 UTC (2 years, 4 months ago) by pieper
BUG: fix tooltips on editor effect buttons

Turns out that even though you can set the tooltip of
a QToolButton it gets overridden by the tooltip associated
with the QAction.  So we set the QAction's tooltip
instead.

Thanks to Csaba for pointing out that the tooltips were broken.

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24224  Directory Listing
Modified Fri May 8 20:43:51 2015 UTC (2 years, 4 months ago) by pinter
BUG: Fixed DICOM export crash

Nodes added to subject hierarchy now have a default level of 'Series' unless explicitly specified (if level of a data node is not Series then it cannot be exported to DICOM); Fixed crash when auto-selecting node in the DICOM export window subject hierarchy tree, due to a mismatch in model of given selection index and the model of the tree. Fixed by removing the selection code, as selection is made automatically by setCurrentNode call (it was not like this before; for the record, fixing the mismatch crash is possible by calling mapFromSource function of the sort filter proxy model with the main model index as argument, and setting selection with the sort filter model index)

Revision 24223  Directory Listing
Modified Fri May 8 20:11:16 2015 UTC (2 years, 4 months ago) by pieper
ENH: Adding ability to delete only the selected structure.

From: Robin Weiss <robinweiss@uchicago.edu>

Revision 24214  Directory Listing
Modified Tue May 5 19:45:28 2015 UTC (2 years, 4 months ago) by pieper
ENH: Add function to explicitly set label outline state on all nodes

From: Robin Weiss <robinweiss@uchicago.edu>

Revision 24213  Directory Listing
Modified Tue May 5 19:40:32 2015 UTC (2 years, 4 months ago) by naucoin
STYLE: update Volumes documentation to include outline thickness

Add a parameter description of the label outline thickness option
for label map volume display.

Issue #2267

Revision 24207  Directory Listing
Modified Fri May 1 18:44:45 2015 UTC (2 years, 4 months ago) by jcfr
BUG: Editor: Ensure label map is updated each time a master volume is selected

Before the commit, the following was failing:
(1) Go to SampleData -> Load MRHead
(2) Go to Editor -> Create GenericAnatomyColors label map
(3) Go to SampleData -> Load CTACardio
(4) Go to Editor -> Select CTACardio master volume -> Create GenericAnatomyColors label map
(5) Select MRHead master volume, select CTACardio master volume
-> Popup message with "Warning: Geometry of master and merge volumes do not match."
-> Label map associated with CTACardio is not selected

Note also that this problem is independent of commit r24202 (BUG: Pattern
matching for label volume does not account for underscore)

Revision 24203  Directory Listing
Modified Thu Apr 30 20:50:50 2015 UTC (2 years, 4 months ago) by naucoin
BUG: add outline thickness for label map outlines

Use the Outline setting on the image label outline filter to increase the
outline thickness.
The label outline value is used as the kernel size radius.
Added a GUI for the label outline integer, copied from the Models display GUI,
still using SliceIntersectionThickness as that's the display node setting that's
used by the filter.
Set the default slice intersection thickenss to 3 for label map volume
display nodes.

Issue #2267

Revision 24202  Directory Listing
Modified Thu Apr 30 07:10:05 2015 UTC (2 years, 4 months ago) by jcfr
BUG: Pattern matching for label volume does not account for underscore

This commit generalizes the function HelperBox.getNodeByName replacing
traversal of mrml nodes with call to slicer.mrmlScene.getFirstNode which
itself does the traversal and returns the first matching node.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Robin Weiss <robinweiss@uchicago.edu>

Revision 24199  Directory Listing
Modified Thu Apr 30 02:32:37 2015 UTC (2 years, 4 months ago) by jcfr
ENH: Make color selector search box case-insensitive

From: Robin Weiss <robinweiss@uchicago.edu>

Revision 24195  Directory Listing
Modified Tue Apr 28 03:05:46 2015 UTC (2 years, 4 months ago) by jcfr
STYLE: Remove obsolete comment in ResampleDTIVolume

Remove obsolete comment originally added in r12353 (ENH: Deformation
field transfoms added/if multiple transforms, merges them before applying
them/accepts float rigid and affine transforms)

Acked-by: Francois Budin <fbudin@unc.edu>

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24194  Directory Listing
Modified Tue Apr 28 03:05:43 2015 UTC (2 years, 4 months ago) by jcfr
BUG: Consider output image orientation when using "noMeasurementFrame" option

When not using a measurement frame to specify the tensor orientation,
but when instead using the image direction, the input image direction was
taken into account, but the output image information was not taken into
account. When resampling tensors in the same space then their original
space, if the direction matrix of the output space was not the identity
matrix, this was leading to the tensors being misaligned.

From: Francois Budin <fbudin@unc.edu>

Revision 24186  Directory Listing
Modified Wed Apr 22 12:41:12 2015 UTC (2 years, 5 months ago) by pieper
ENH: fix Diffusion dicom plugin; add utility function

* use a temp directory to isolate the diffusion series
so as not to confuse DWIConvert with dicom files that
are not part of the diffusion scan.

* increase the priority so that scans recognized as diffusion will
preferentially load using the converter.

* fix usage of DICOMLib

* add slicer.util.tempDirectory to easily access a scratch
area.

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24184  Directory Listing
Modified Tue Apr 21 02:44:42 2015 UTC (2 years, 5 months ago) by lassoan
BUG: Fixed sample data loading in PerformanceTests, errors in VR tests

slicer.app.mrmlApplicationLogic() was renamed to slicer.app.applicationLogic() but these tests have not been updated

Revision 24165  Directory Listing
Modified Thu Apr 9 07:23:42 2015 UTC (2 years, 5 months ago) by jcfr
STYLE: Fix typo in qSlicerVolumeRenderingModuleWidget

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 24163  Directory Listing
Modified Thu Apr 9 06:39:37 2015 UTC (2 years, 5 months ago) by jcfr
STYLE: Fix position of DataProbe display using monospace font and fixed width

This commit refactor and simplify the DataProbe widget to ensure the
display of viewer properties and layer information is displayed at the
same location.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Sergey Aleshin <4memph@gmail.com>

Revision 24161  Directory Listing
Modified Thu Apr 9 02:12:39 2015 UTC (2 years, 5 months ago) by jcfr
ENH: Extend ModulePanel API to control if Help&Ack section is visible

This commit adds the property allowing to programmatically show/hide
the Help & Acknowledgment collapsible button within the ModulePanel
widget.

If the current module doesn't have a help string, the section will remain
hidden.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Sergey Aleshin <4memph@gmail.com>

Revision 24155  Directory Listing
Modified Sat Apr 4 00:42:28 2015 UTC (2 years, 5 months ago) by jcfr
ENH: Fixes #3549. Import scripted module as python module

This will allow each scripted module to defined top-level variables that
will not clobber each other.

For example, if we consider these two modules:

8<----8<----8<----8<----8<----8<----8<----8<----
File: ModuleA.py

FOO = 1

class ModuleA(ScriptedLoadableModule):
  def __init__(self, parent):
    ModuleA.__init__(self, parent)
    [...]
  def doSomething(self):
    if FOO == 1:
      [...]
    else:
      [...]
8<----8<----8<----8<----8<----8<----8<----8<----

8<----8<----8<----8<----8<----8<----8<----8<----
File: ModuleB.py

FOO = 2

class ModuleB(ScriptedLoadableModule):
  def __init__(self, parent):
    ModuleB.__init__(self, parent)
    [...]
  def doSomething(self):
    if FOO == 1:
      [...]
    else:
      [...]
8<----8<----8<----8<----8<----8<----8<----8<----

Assuming ModuleA, and then ModuleB are imported. Before this commit,
both scripts were executed in the __main__ scope and FOO variable would
have the value associated with the last imported module.

After this commit, both module will see their own copy of the FOO
variable with the expected value.

It also avoid the hack when we explicitly save/set/restore
both "__name__" and "__file__" variable.

Changes to "DICOMScalarVolumePlugin" fixes the test failing test
"py_RSNAVisTutorial" and "py_SubjectHierarchyGenericSelfTest". It basically
fixes the following error by ensuring all object are imported:

//--------------
test_SubjectHierarchyGenericSelfTest_FullTest1 (SubjectHierarchyGenericSelfTest.SubjectHierarchyGenericSelfTestTest) ... Traceback (most recent call last):
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMLib/DICOMWidgets.py", line 615, in getLoadablesFromFileLists
    loadablesByPlugin[plugin] = plugin.examineForImport(fileLists)
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMScalarVolumePlugin.py", line 47, in examineForImport
    loadablesForFiles = self.examineFiles(files)
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMScalarVolumePlugin.py", line 71, in examineFiles
    loadable = DICOMLib.DICOMLoadable()
NameError: global name 'DICOMLib' is not defined
//--------------

Revision 24153  Directory Listing
Modified Fri Apr 3 04:23:42 2015 UTC (2 years, 5 months ago) by jcfr
ENH: Simplify DICOM plugin removing unneeded widget class.

This is made possible by previous commit (ENH: Extend module API
with "widgetRepresentationCreationEnabled" property)

Note that since the qSlicerScripedModule class can detect with a widget
class is available or not, there is no need to explicitly set
the "widgetRepresentationCreationEnabled" property.

Revision 24148  Directory Listing
Modified Thu Apr 2 19:08:53 2015 UTC (2 years, 5 months ago) by jcfr
STYLE: VectorToScalarVolume - Make sure all required object are imported

This will avoid issue when addressing issue #3549 (Import scripted module as python
module )

Revision 24143  Directory Listing
Modified Wed Apr 1 21:02:56 2015 UTC (2 years, 5 months ago) by jcfr
ENH: Adding label type column in Label Statistics

Reviewed-by: Steve Pieper <pieper@bwh.harvard.edu>
Tested-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Robin Weiss <robinweiss@uchicago.edu>

Revision 24138  Directory Listing
Modified Wed Apr 1 08:55:10 2015 UTC (2 years, 5 months ago) by jcfr
STYLE: Fix compilation warnings

This commit fixes the following warnings:

 * vtkAnnotationROIRepresentation2D.cxx:426: warning: missing braces around initializer for 'double [3]' [-Wmissing-braces]

 * qMRMLSortFilterSubjectHierarchyProxyModel.cxx:80: warning: unused variable 'd' [-Wunused-variable]

 * qSlicerApplication.cxx: In member function 'void qSlicerApplication::setupFileLogging()':
   qSlicerApplication.cxx:740: warning: format '%d' expects type 'int', but argument 2 has type 'size_t' [-Wformat]
   qSlicerApplication.cxx:740: warning: format '%d' expects type 'int', but argument 3 has type 'size_t' [-Wformat]

Revision 24137  Directory Listing
Modified Wed Apr 1 07:01:45 2015 UTC (2 years, 5 months ago) by jcfr
STYLE: Fix doxygen warning in vtkMRMLSubjectHierarchyNode

This commit fixes the following warnings:

/path/to/Modules/Loadable/SubjectHierarchy/MRML/vtkMRMLSubjectHierarchyNode.h:76: Warning: The following parameters of vtkMRMLSubjectHierarchyNode::GetSubjectHierarchyNodeByUID(vtkMRMLScene *scene, const char *uidName, const char *uidValue) are not documented:
  parameter 'scene'
  parameter 'uidName'
/path/to/Modules/Loadable/SubjectHierarchy/MRML/vtkMRMLSubjectHierarchyNode.h:80: Warning: The following parameters of vtkMRMLSubjectHierarchyNode::GetSubjectHierarchyNodeByUIDList(vtkMRMLScene *scene, const char *uidName, const char *uidValue) are not documented:
  parameter 'scene'
  parameter 'uidName'

Revision 24134  Directory Listing
Modified Wed Apr 1 03:15:45 2015 UTC (2 years, 5 months ago) by jcfr
BUG: Fix py_mainwindow_RestoreSceneViewWithoutCamera test failing on windows

Revision 24132  Directory Listing
Modified Tue Mar 31 03:05:04 2015 UTC (2 years, 5 months ago) by jcfr
ENH: Added option for setting the layoutManager in the main application

It is useful for slicelets, where the main window is not created and this the slicer.app.layoutManager() is not set.

Example for setting up a layout manager in a slicelet:

layoutWidget = slicer.qMRMLLayoutWidget()
layoutManager = slicer.qSlicerLayoutManager()
layoutManager.setMRMLScene(slicer.mrmlScene)
layoutManager.setScriptedDisplayableManagerDirectory(slicer.app.slicerHome + "/bin/Python/mrmlDisplayableManager")
layoutWidget.setLayoutManager(layoutManager)
slicer.app.setLayoutManager(layoutManager)
layoutWidget.setLayout(slicer.vtkMRMLLayoutNode.SlicerLayoutFourUpView)

somelayout.addWidget(layoutWidget)

From: Andras Lasso <lasso@queensu.ca>

Revision 24128  Directory Listing
Modified Fri Mar 27 22:05:21 2015 UTC (2 years, 6 months ago) by jcfr
ENH: Generalize Editor "propagationMode" to support arbitrary set of layers

This commit makes the Layer enum introduced in the r24106 public and uses
the Layer enum value to set the editor "propagationMode" value.

Reviewed-by: Andriy Fedorov <fedorov@bwh.harvard.edu>
Reviewed-by: Alireza Mehrtash <mehrtash@bwh.harvard.edu>
Reviewed-by: Steve Pieper <pieper@bwh.harvard.edu>

Revision 24127  Directory Listing
Modified Fri Mar 27 21:48:36 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Update SliceViewAnnotation to avoid error when restoring scene view

This commit avoid the test "py_RSNA2012ProstateDemo" to produce the errors
reported below.


Notes:

 (1) this commit does NOT fix the underlying issue. Indeed, after
restoring a scene view, no annotation are displayed.

 (2) after restoring the "" scene view, there is still error related to
     missing active camera:

       WorldToView: no active camera, cannot compute world to view, returning 0,0,0

 (3) after the test complete, when Slicer shutdown, the following warnings
     are still reported:

       Warning: In /path/to/VTKv6/Common/ExecutionModel/vtkAlgorithm.cxx, line 1421
       vtkOpenGLImageMapper (0x18a48f50): Attempt to get connection index 0 for input port 0, which has 0 connections.




The associated error messages were:

// ------------
Traceback (most recent call last):
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 622, in updateCornerAnnotations
    self.makeAnnotationText(caller)
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 808, in makeAnnotationText
    sliceViewName = sliceNode.GetLayoutName()
AttributeError: 'NoneType' object has no attribute 'GetLayoutName'
// ------------

and

// ------------
Restoring scene view Preoperative T2w MRI ...
test_RSNA2012ProstateDemo (RSNA2012ProstateDemo.RSNA2012ProstateDemoTest) ... Traceback (most recent call last):
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 605, in updateCornerAnnotations
    self.makeAnnotationText(caller)
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 808, in makeAnnotationText
    foregroundOpacity = sliceCompositeNode.GetForegroundOpacity()
AttributeError: 'NoneType' object has no attribute 'GetForegroundOpacity'
// ------------

Revision 24117  Directory Listing
Modified Thu Mar 26 21:08:52 2015 UTC (2 years, 6 months ago) by jcfr
ENH: Support for hiding most of DICOM Browser controls through settings

This commit makes it possible to selectively hide most of the controls
associated with the DICOM browser. To hide all controls expect the "Import"
and "Load" button, the following entries should be added under
the "[DICOM]" group in the Slicer settings:

ActionRepair.visible=false
ActionExport.visible=false
ActionQuery.visible=false
ActionSend.visible=false
ActionRemove.visible=false
ActionViewMetadata.visible=false
AdvancedViewCheckBox.visible=false
HorizontalViewCheckBox.visible=false
BrowserPersistentCheckBox.visible=false
DatabaseButton.visible=false
TableDensityComboBox.visible=false

Revision 24115  Directory Listing
Modified Thu Mar 26 17:19:07 2015 UTC (2 years, 6 months ago) by jcfr
ENH: Extend slicer.util API introducing 'settingsValue' and 'toBool'

Revision 24108  Directory Listing
Modified Wed Mar 25 08:37:20 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Fixed editor behaviour in restoring correct label.

To reproduce the issue:
* Load a volume, go to editor and create a merge labelmap.
* With Paint effect paint something with label 1.
* While on Label 1 select eraser, erase something and go back to painteffect.
* Select another label e.g 2.
* Paint something with painteffect. It works fine (paint with label 2).
* Choose another effect (e.g draw or want effect) and it would go back to the label 1 as it only stores the backup label when eraser is selected.

Fix: Backup label should also be set when a new color (not zero) is chosen not only after switching to eraser.

From: Alireza Mehrtash <mehrtash@bwh.harvard.edu>

Revision 24106  Directory Listing
Modified Wed Mar 25 07:27:35 2015 UTC (2 years, 6 months ago) by jcfr
ENH: Add option to control the PropagateVolumeSelection behavior

* Options added so volume selection can propagate only to background,
foreground and label layers.

* HelperBox and EditUtil were modified to use the new propagation mode.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Alireza Mehrtash <mehrtash@bwh.harvard.edu>

Revision 24105  Directory Listing
Modified Wed Mar 25 06:00:59 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Fix py_SubjectHierarchyGenericSelfTest

This commit re-adds function "onDatabaseDirectoryChanged" previously
removed by r24104 (ENH: Refactor DICOM module to allow DICOMDetailsPopup
standalone instantiation) and fixes the failing test.

Revision 24104  Directory Listing
Modified Tue Mar 24 21:44:38 2015 UTC (2 years, 6 months ago) by jcfr
ENH: Refactor DICOM module to allow DICOMDetailsPopup standalone instantiation

Revision 24103  Directory Listing
Modified Tue Mar 24 21:44:37 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove dead code related to DICOMDetailsPopup close button

Since r23005 (ENH: 1. A basic mode added with auto-examine) the button
was not added to the "actionButtonLayout".

Revision 24102  Directory Listing
Modified Tue Mar 24 21:44:35 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove commented code from "DICOMDetailsPopup"

Revision 24101  Directory Listing
Modified Tue Mar 24 21:44:34 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove code associated with broken "Send" action

This commit removes the function "onSendClicked" broken by commit
r22689 (ENH: dicom header viewer added to DICOMLib using
ctkDICOMObjectListWidget).

Note that it is not required to explicitly disable the Send button, it is
already the case within the ctkDICOMBrowser class since r22689.

Revision 24100  Directory Listing
Modified Tue Mar 24 21:44:32 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove code associated with broken "Send" action

This commit removes the function "onSendClicked" broken by commit
r22689 (ENH: dicom header viewer added to DICOMLib using
ctkDICOMObjectListWidget) and hide the associated button.

Revision 24099  Directory Listing
Modified Tue Mar 24 21:31:42 2015 UTC (2 years, 6 months ago) by alexy
BUG: 3857. Fixed displaying of Tensor properties and their ranges in Tractography display module for lines/tubes/glyphs

Revision 24098  Directory Listing
Modified Tue Mar 24 19:23:30 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Update DICOM module to use slicer.util.warningDisplay

The "messageBox()" has been deprecated and will be removed after Slicer 4.5

Revision 24097  Directory Listing
Modified Tue Mar 24 19:23:28 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove unused function question() and okayCancel() from DICOM module

Revision 24096  Directory Listing
Modified Tue Mar 24 19:23:27 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Removed unused DICOMTest / DICOMDemo classes from DICOM module

Revision 24095  Directory Listing
Modified Tue Mar 24 14:35:45 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Move dicom series selection code into DICOMDetailsPopup

Revision 24094  Directory Listing
Modified Tue Mar 24 14:35:43 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove obsolete code from DICOM module

Since r22689 (ENH: dicom header viewer added to DICOMLib using
ctkDICOMObjectListWidget), the dicom browser has been updated to use the
table view manager instead of using a tree view directly. This commit
removes:
  (1) the code that was setting MinimumHeight of the tree view
  (2) the setup of the context menu that doesn't work anymore.
  (3) the code handling series selection to open itself

Revision 24093  Directory Listing
Modified Mon Mar 23 22:26:02 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Rename DICOM ivar from 'showBrowser' to 'showBrowserButton'

Revision 24092  Directory Listing
Modified Mon Mar 23 22:17:25 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Update DICOM to use 'logging' python module

Revision 24091  Directory Listing
Modified Mon Mar 23 22:05:07 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove redundant code from DICOM module

This commit removes duplicated code that was connecting the FileMenu
action in addition of the action already directly retrieved by its name.

The duplication became unneeded after commit r23628 (ENH: Fixed issues
3579, 3798 and other dicom browser improvements) that changed
the string used to lookup the action from "actionLoadDICOM" to
"LoadDICOMAction".

Note that the action lookup has been first broken in r22763 (ENH: Consolidate
qSlicerAppMainWindow)

Revision 24090  Directory Listing
Modified Mon Mar 23 21:29:13 2015 UTC (2 years, 6 months ago) by jcfr
STYLE: Remove commented code from DICOMWidget

Revision 24089  Directory Listing
Modified Mon Mar 23 20:45:43 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Fix DataProbe loading error when NumPy is not available

This commit allows "SliceAnnotations" to gracefully handle the case
when the application is built without NumPy support.

The error fixed by this commit is the following:

//--------------
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbe.py", line 5, in <module>
    import DataProbeLib
  File "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/__init__.py", line 1, in <module>
    from SliceViewAnnotations import *
  File "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 2, in <module>
    import numpy as np
ImportError: No module named numpy
setPythonSource - Failed to execute file "/home/jcfr/Projects/Slicer-Debug/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DataProbe.py" !
Fail to instantiate module "DataProbe"
//--------------

Revision 24070  Directory Listing
Modified Sun Mar 15 00:51:33 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Support restoring of a sceneview not having a camera

Revision 24061  Directory Listing
Modified Thu Mar 12 20:10:10 2015 UTC (2 years, 6 months ago) by fedorov
BUG: Replaced re with fnmatch

regular expression fails to match expressions with special characters. Structures created for volume nodes containing parentheses and brackets would not show up in structures table.
fnmatch can match expressions containing these characters.

ENH: Left zero padding for structure numbers

Without left zero padding sorting the structure table based on structure number
is not as it is expected.

ENH: Resize per-structure table columns based on contens not fixed values.

ENH: Add new label for a structure only if it is not in the scene.

In the current behavior if one structure exist, adding the same structure will create duplicate labels.

Revision 24060  Directory Listing
Modified Thu Mar 12 15:18:07 2015 UTC (2 years, 6 months ago) by lassoan
ENH: Improve performance of node delete

When a node was deleted and it had a display or storage node then the nodes were deleted in a BatchProcess operation.
Entering/exiting BatchProcess is a very expensive operation (many modules re-parse the whole scene and resets displayable managers) and causes the screen to flicker as the layout is refreshed, which is not justified if only a few nodes are deleted.

Changed the code to only apply batch processing if more than 10 nodes are impacted.

Revision 24058  Directory Listing
Modified Wed Mar 11 13:52:15 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Support loading of SliceViewAnnotation if loadable module are disabled

This commit tweak SliceViewAnnotation to detect if 'vtkPVScalarBarActor'
is available independently of VTKv5, this will avoid runtime error when
starting Slicer with option "--disable-builtin-loadable-modules". This
option could be used to collect "startup time" performance stats as
detailed in [1]

[1] http://wiki.slicer.org/slicerWiki/index.php/Documentation/Labs/StartupTimeImprovement

Revision 24057  Directory Listing
Modified Wed Mar 11 13:52:13 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Fix regression introduced when adding VTKv5 ViewAnnotation support

Following r23941 (COMP: Fix VTKv5 build conditionally disabling
DataProbe/Logic), the SliceViewAnnotation module was able to fallback
to use "vtkScalarBarActor" instead of "vtkPVScalarBarActor" if Slicer was
built against VTKv5. This commit fixes the runtime complaining that
"colorScalarBarMaxWidthSlider" is missing by explicitly specifying
the value "50" was originally specifified in r23612 (ENH: Add method
vtkMRMLSliceLogic::GetForegroundWindowLevelAndRange)

Revision 24032  Directory Listing
Modified Mon Mar 9 03:00:01 2015 UTC (2 years, 6 months ago) by lassoan
ENH: Use Start/EndModify instead of manually calling InvokePendingModifiedEvent

Replaced obsolete DisabledModifiedEventOn/Off, InvokePendingModifiedEvent combination by Start/EndModify (it is simpler and works for nested Start/EndModify)

Revision 24031  Directory Listing
Modified Sun Mar 8 17:18:12 2015 UTC (2 years, 6 months ago) by lassoan
BUG: Fixed markup custom modification event notifications

Fixes http://www.na-mic.org/Bug/view.php?id=3961 (markups RemoveAllItems not working properly) and many other update issues.

Problem:
StartModify/EndModify mechanism works well for Modified() event compression. Such mechanism is desirable for custom, more specific modified events, too (such as when markups are added, removed, modified).
For example, the same mechanism was implemented for TransformModified and for MarkupAddedEvent, MarkupRemovedEvent, etc.

Solution:
To reduce code duplication and the chance of making mistakes (e.g., Markup modification event compression was implemented incorrectly), the mechanism is now available for custom modified events.
Usage is very simple instead of calling vtkMRMLNode::InvokeEvent on has to call vtkMRMLNode::InvokeCustomModifiedEvent. InvokeCustomModifiedEvent behaves the same way as InvokeEvent by default,
but if DisableModifiedEvent is enabled then InvokeCustomModifiedEvent only emits the event when EndModify is called (after invoking the pending standard Modified event).

Revision 24016  Directory Listing
Modified Wed Mar 4 20:49:09 2015 UTC (2 years, 6 months ago) by fedorov
ENH: set layout spacing to 9 to improve presentation

Revision 24015  Directory Listing
Modified Wed Mar 4 20:49:03 2015 UTC (2 years, 6 months ago) by fedorov
BUG: improve loading of DICOM referenced datasets

See issue http://www.na-mic.org/Bug/view.php?id=3952

* try to improve the sizing policy for the popup (works as expected on Mac)
* make popup modal
* add checks for the referenced datasets that will prevent them from being
   loaded when the list of files for the referenced dataset matches the one
   user already selected in the DICOM widget GUI

Revision 24014  Directory Listing
Modified Wed Mar 4 14:27:28 2015 UTC (2 years, 6 months ago) by jcfr
BUG: Do not attempt to create DICOM annotation if no local database exists

In case no local database has been created on the system, running test
"py_RSNAQuantTutorial" will fail because SliceViewAnnotation attempts
to use "slicer.dicomDatabase" object whereas non has been created. Error
like the following were reported:

551: Test using the PETCT module ... Traceback (most recent call last):
551:   File "/path/to/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 622, in updateCornerAnnotations
551:     self.makeAnnotationText(caller)
551:   File "/path/to/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 832, in makeAnnotationText
551:     self.makeDicomAnnotation(bgUid,fgUid)
551:   File "/path/to/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 901, in makeDicomAnnotation
551:     backgroundDicomDic = self.extractDICOMValues(bgUid)
551:   File "/path/to/lib/Slicer-4.4/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 1078, in extractDICOMValues
551:     value = slicer.dicomDatabase.instanceValue(uid,tag)

The steps to reproduce the problem independently of the test are the
following:

(1) clear Slicer settings:

  $ rm -rf ~/.config/NA-MIC

(2) start Slicer

  $ ./Slicer

(3) load PET_CT_pre-treatment.mrb that can be obtained after extracting the
zip archive available here: http://slicer.kitware.com/midas3/download?items=124185

Revision 24013  Directory Listing
Modified Tue Mar 3 23:27:43 2015 UTC (2 years, 6 months ago) by finetjul
BUG: Do not fire incorrect events when closing scene

* onNodeIDChanged() was using a never set "Quantity" property.
* The unitComboBox is not exposed to the user,
so the current node id can only be changed by the selection node.
Such workflow is already handled and does not need extra signal/slot connection.

It had the side effect of resetting the number of decimals to the slider
widget of the slice views when closing the scene. That would send (queued)
signals to set the slice offset to be 0.0 AFTER (because queued connection)
the new slice offset was initialized when loading a new scene.

Revision 24009  Directory Listing
Modified Mon Mar 2 22:53:15 2015 UTC (2 years, 6 months ago) by johan.andruejol
BUG: Do not disable the picking in 2D, widget is never pickable #3971

This prevent the following error to appear when using 2D projection:
ERROR: In c:\d\p\slicer-440-package\vtkv6\interaction\widgets\vtkWidgetRepresentation.h, line 176
vtkPointHandleRepresentation2D (0000000010537080): Subclass should allow enable/disable picking

The fix is to remove the DisablePicking call. It's not used since for the
2D projection, the widget is never enabled (i.e. it's visible but the user
cannot interact with it). For reference, the disable call is here at
line 783 of vtkMRMLMarkupsFiducialDisplayableManager2D.cxx.

Revision 24008  Directory Listing
Modified Mon Mar 2 22:42:24 2015 UTC (2 years, 6 months ago) by pieper
BUG: #1853 - fix issue where paint radius if forgotten switching effects

Now the calculation of the volume-dependent radius is done before
the mrml defaults are set.  This means that the first volume edited
will get a spacing-dependent radius, and from then on the radius
will remain at the user's setting no matter what volume is selected.
This is probably the right answer in most cases.

Revision 23981  Directory Listing
Modified Tue Feb 24 20:43:16 2015 UTC (2 years, 7 months ago) by jcfr
ENH: Fix 3943 and other enhancements for slice view annotations

* Fixed #3943 by replacing DICOM study date and study time with series date and
  series time.

* Moved slice view annotations settings gear from Data Probe small widget (main
  screen) to the Data probe module in order to preserve more screen real
  estate for the module UIs.

* Fixed problem with color scalarbar range labels.
* Added an option to change format of color scalarbar range label
  and save the user settings in application settings.

* Change ruler text font size and family according to other text
  annotations.

* Removed the settings gear

* Store previous status of ruler and colorscalarbar after enabling
  slice view annotations

From: Alireza Mehrtash <mehrtash@bwh.harvard.edu>

Revision 23979  Directory Listing
Modified Tue Feb 24 17:29:41 2015 UTC (2 years, 7 months ago) by alexy
BUG: 3936. Disabled multiple models selection in Models module since the widget does not support multiple nodes re-parenting.

Revision 23977  Directory Listing
Modified Fri Feb 20 17:41:32 2015 UTC (2 years, 7 months ago) by alexy
ENH: pass the hierarchy scene to the CLI module instead of external mrml file

Revision 23975  Directory Listing
Modified Tue Feb 17 23:46:16 2015 UTC (2 years, 7 months ago) by pieper
BUG: reset the default editor color node each time dialog is opened

This addresses an issue where the color combo box becomes unpopulated
when the scene is closed.

There is still an issue with the thumbnails of the colors are not visible
but this is an issue with the color combo box and not the editor.

Revision 23974  Directory Listing
Modified Tue Feb 17 16:17:26 2015 UTC (2 years, 7 months ago) by naucoin
BUG: fix restoring voxel based vs interpolation

When switching from a parameter node that had voxel based
turned on to one that didn't, the widget wasn't updating. This was
because of the way the radio buttons were set to toggle:
If a node had the voxel based flag on, the voxel based radio button had
checked set to true and the interpolation radio button had checked
set to false. Switching to the node with the voxel based flag set to false,
the previous commit was just setting the voxel based radio button to unchecked
but that was not forcing the interpolation radio button to be checked.
This change explicitly sets the checked flag to true for the mode, which
results in the other radio button in the group being set to unchecked.

Issue #3947

Revision 23973  Directory Listing
Modified Tue Feb 17 16:17:24 2015 UTC (2 years, 7 months ago) by naucoin
BUG: update management of crop volume parameters node

The module was holding a pointer to the parameter node that could get out of
date on scene changes and cause crashes. Switch to using a mrml node combo
box to manage the parameters node.
Adjusted the UI file to allow the generic module widget test to pass.
Update the widget more fully on enter and scene changes. Select a newly added
input volume or ROI if none already selected. When picking a new input volume,
or switching ot a new parameter set one, set it to be active in the slice viewers.
Update the parameters node constructor, destructor, read/write xml, copy and print
for missing calls. Make sure that the GUI updates the parameters node (was missing
the input volume and ROI node IDs).
Added a scene close to the self test, and add the CMake command to make it show
up as a self test in the GUI.
Added error checking, took out debugging print outs.

Tested against issues: #3947 #1764 #3313

Issue #3947

Revision 23966  Directory Listing
Modified Sat Feb 7 19:45:11 2015 UTC (2 years, 7 months ago) by lassoan
ENH: Improved performance of transform widget

Only update transform info string if transform info section is shown.
Prevent firing duplicate transform modified event from the transform slider (when the transform was modified, the slider was updated, and the slider fired a transform modified event; now the slider only fires modified if the transform is actually changed)

Revision 23965  Directory Listing
Modified Sat Feb 7 19:24:07 2015 UTC (2 years, 7 months ago) by lassoan
ENH: Make annotation ROI display about 10x faster (from a few 100 to a few 10 milliseconds)

Annotation ROI rendering was very very slow (several hundreds of milliseconds), mainly due to the slow performance of vtkCutter. This became an issue while doing real-time volume rendering of 4D ultrasound data. The volume rendering speed dropped from 15fps to a few fps when a transform is applied to the volume because of the ROI node that the volume renderer associates with each volume.

Solution: Replaced vtkCutter with a specific plane/plane intersection line computation and optimized the pipeline to only compute data when it is actually used.

How to see the speed improvement:
* Create a ROI
* Create a linear transform, apply it to the ROI
* Change the transform and measure the rendering time using the script below:

def roitest():
  transform = slicer.util.getNode('LinearTransform_3')
  transformYmin=-100
  transformYmax=100
  transformYinc=5
  matrix=vtk.vtkMatrix4x4()
  timer=vtk.vtkTimerLog()
  timer.StartTimer()
  for i in xrange(10):
    transform.GetMatrixTransformToParent(matrix)
    oldElem=matrix.GetElement(0 ,3)
    matrix.SetElement(0 ,3, -oldElem)
    oldElem=matrix.GetElement(1 ,3)
    oldElem=oldElem+transformYinc
    matrix.SetElement(1 ,3, oldElem)
    if oldElem > transformYmax or oldElem < transformYmin: 
      transformYinc=-transformYinc
    transform.SetMatrixTransformToParent(matrix)
    slicer.app.processEvents()
  timer.StopTimer()
  print timer.GetElapsedTime()

roitest()

Revision 23962  Directory Listing
Modified Thu Feb 5 15:02:04 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Fix ResampleDTIVolume build error on macosx

This commit fixes a build error happening without ITKV3_COMPATIBILITY
enabled. To address the error message reported below, the module now uses
the concrete class VersorRigid3DTransform instead of the base class
Rigid3DTransform.

//-----------
In file included from /path/to/Slicer/Modules/CLI/ResampleDTIVolume/ResampleDTIVolume.cxx:16:
In file included from /path/to/Slicer/Modules/CLI/ResampleDTIVolume/itkDiffusionTensor3DRigidTransform.h:68:
/path/to/Slicer/Modules/CLI/ResampleDTIVolume/itkDiffusionTensor3DRigidTransform.txx:53:42: error: no viable conversion from 'Pointer' (aka 'SmartPointer') to 'typename Rigid3DTransformType::Pointer' (aka 'SmartPointer')
  typename Rigid3DTransformType::Pointer rigidTransform = Rigid3DTransformType::New();
                                         ^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/path/to/Slicer-build/ITKv4/Modules/Core/Common/include/itkSmartPointer.h:65:3: note: candidate constructor not viable: no known conversion from 'Pointer' (aka 'SmartPointer') to 'const SmartPointer &' for 1st argument;
  SmartPointer (const SmartPointer< ObjectType > & p):
  ^
/path/to/Slicer-build/ITKv4/Modules/Core/Common/include/itkSmartPointer.h:70:3: note: candidate constructor not viable: no known conversion from 'Pointer' (aka 'SmartPointer') to 'ObjectType *' (aka 'itk::Rigid3DTransform *') for 1st argument;
  SmartPointer (ObjectType *p):
  ^
/path/to/Slicer-build/ITKv4/Modules/Core/Common/include/itkSmartPointer.h:86:3: note: candidate function
  operator ObjectType *() const
  ^
1 error generated.
//-----------

Revision 23961  Directory Listing
Modified Thu Feb 5 00:11:16 2015 UTC (2 years, 7 months ago) by jcfr
ENH: Improve build targets organization in IDE that support folders

This commit set the FOLDER property on all targets to group them
into meaningful "units". This will make development easier ensuring
it is possible to quickly re-build and open the source files associated
with the targets of either a given module, the core libraries or even
the Slicer application.

Currently the grouping is:
* App-SlicerApp
* CMakePredefinedTargets
* Core-Base
* Core-Libs
 * FreeSurfer
 * ITKFactoryRegistration
 * [...]
* Module-<NameOfModule>
* [...]

If for some reason, the folder organization needs to be disabled. Slicer
could be configured with Slicer_USE_FOLDERS set to OFF.

Projects updated in this commit:
* CTK
* SlicerExecutionModel
* OtsuThresholdImageFilter

Notes:

 (1) some of the targets (EMSegment, BRAINSTools, MultiVolume, ...)
are still associated to the root and not yet categorized.

 (2) ideally few more  macros/functions should be introduced: one to
easily configure subject hierarchy plugin, and one to easily configure
tests associated with a CLI.


CTK changes:

// -------------
commit commontk/CTK@ac1370e
Author: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Date:   Wed Feb 4 14:47:09 2015 -0500

    Add FOLDER parameter to ctkMacroBuildQtPlugin

    If specified, the target(s) associated with designer, icon engine and
    style plugins will be added into the specified folder when the project is
    configured for an IDE supporting it.

    For more details, see http://www.cmake.org/cmake/help/v2.8.9/cmake.html#prop_tgt:FOLDER
// -------------


SlicerExecutionModel changes:

// -------------
commit Slicer/SlicerExecutionModel@0b780eb
Author: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Date:   Wed Feb 4 18:06:25 2015 -0500

    ENH: SEMMacroBuildCLI - Add possibility to associate FOLDER with CLI targets

    In project building a lot of modules (i.e Slicer), whenever possible, it
    is better to keep the huge list of targets organized. To help with this,
    CMake allows to set a FOLDER target property.

    See http://www.cmake.org/cmake/help/v2.8.3/cmake.html#prop_tgt:FOLDER

    This commit extends the SEMMacroBuildCLI API to accept an optional FOLDER
    parameter. If not set, the folder name will default to:

      <SlicerExecutionModel_DEFAULT_CLI_TARGETS_FOLDER_PREFIX><MODULE_NAME>

    By default the prefix is set to an empty string and the folder will be
    named after the module name.

    There are two ways to specify a default prefix value:

     (1) Set the variable SlicerExecutionModel_DEFAULT_CLI_TARGETS_FOLDER_PREFIX
    in the current scope before calling 'SEMMacroBuildCLI'

     (2) Configure the SlicerExecutionModel project with the option
    SlicerExecutionModel_DEFAULT_CLI_TARGETS_FOLDER_PREFIX

    Note that:
     - FOLDER support has been introduced in CMake >= 2.8.3
    and
     - it can optionally be enabled in a project by setting the global
    property named USE_FOLDERS.

    See http://www.cmake.org/cmake/help/v2.8.3/cmake.html#prop_global:USE_FOLDERS

    Finally, to associate CLI test expected to be in the same "FOLDER",
    a variable named <MODULE_NAME>_TARGETS_FOLDER is conveniently set in the
    current scope each time the macro SEMMacroBuildCLI is called.

commit Slicer/SlicerExecutionModel@e84d231
Author: Matt McCormick <matt.mccormick@kitware.com>
Date:   Thu Aug 7 11:09:39 2014 -0400

    BUG: Fix ModuleDescriptionParser test data dir.

    Fixes Parser1Test{1,2}.

    Simplify by consolidation of variables.
// -------------


OtsuThresholdImageFilter changes:

// -------------
commit :Slicer/Slicer-OtsuThresholdImageFilter@5efe412
Author: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Date:   Wed Feb 4 18:08:28 2015 -0500

    Associate folder with test targets.
    [...]
// -------------

Revision 23957  Directory Listing
Modified Tue Feb 3 19:24:59 2015 UTC (2 years, 7 months ago) by pinter
BUG: Fix python parse error when DICOM loading

vtkMRMLSubjectHierarchyConstants was used without specifying containing python module

Revision 23955  Directory Listing
Modified Tue Feb 3 17:06:12 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Workaround to fix HAVE_STAT redefined warning in SlicerDICOMExportDialog

This commit fixes the following warning:

//-----------
In file included from /path/to/Slicer-build/DCMTK/dcmdata/include/dcmtk/dcmdata/dcdatset.h:26:0,
                 from /path/to/Slicer-build/CTK/Libs/DICOM/Core/ctkDICOMItem.h:28,
                 from /path/to/Slicer-build/CTK/Libs/DICOM/Core/ctkDICOMDatabase.h:29,
                 from /path/to/Slicer/Modules/Scripted/DICOMLib/Widgets/qSlicerDICOMExportDialog.cxx:55:
/path/to/Slicer-build/DCMTK-build/config/include/dcmtk/config/osconfig.h:540:0: warning: "HAVE_STAT" redefined [enabled by default]
 #define HAVE_STAT 1
 ^
In file included from /path/to/Slicer-build/python-install/include/python2.7/Python.h:58:0,
                 from /path/to/Slicer-build/CTK-build/CMakeExternals/Install/include/PythonQt/PythonQtPythonInclude.h:93,
                 from /path/to/Slicer-build/CTK-build/CMakeExternals/Install/include/PythonQt/PythonQtInstanceWrapper.h:45,
                 from /path/to/Slicer-build/CTK-build/CMakeExternals/Install/include/PythonQt/PythonQt.h:46,
                 from /path/to/Slicer/Modules/Scripted/DICOMLib/Widgets/qSlicerDICOMExportDialog.cxx:46:
/path/to/Slicer-build/python-install/include/python2.7/pyport.h:361:0: note: this is the location of the previous definition
 #define HAVE_STAT
 ^
//-----------

Revision 23953  Directory Listing
Modified Tue Feb 3 06:55:35 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Fix unused variable warning in qSlicerModelsModuleWidget

Fix commit fixes the following warning:

//-------------
Modules/Loadable/Models/qSlicerModelsModuleWidget.cxx:390: warning: unused variable 'scene' [-Wunused-variable]
//-------------

Revision 23949  Directory Listing
Modified Tue Feb 3 06:07:11 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Fix overloaded-virtual warnings in itkAnisotropicSimilarity3DTransform

This commit fixes the following warning:

//--------
In file included from /path/to/Slicer-SuperBuild-Debug/ITKv4/Modules/Core/Transform/include/itkRigid3DTransform.h:223:0,
                 from /path/to/Slicer-SuperBuild-Debug/ITKv4/Modules/Core/Transform/include/itkVersorTransform.h:22,
                 from /path/to/Slicer-SuperBuild-Debug/ITKv4/Modules/Core/Transform/include/itkVersorRigid3DTransform.h:22,
                 from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkAnisotropicSimilarity3DTransform.h:22,
                 from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkInitialImageToImageRegistrationMethod.h:28,
                 from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkImageToImageRegistrationHelper.h:25,
                 from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ExpertAutomatedRegistration.cxx:3:
/path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkAnisotropicSimilarity3DTransform.h: In instantiation of ‘class itk::AnisotropicSimilarity3DTransform<double>’:
/path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkInitialImageToImageRegistrationMethod.txx:80:37:   required from here
/path/to/Slicer-SuperBuild-Debug/ITKv4/Modules/Core/Transform/include/itkRigid3DTransform.hxx:89:1: warning: ‘void itk::Rigid3DTransform<TScalar>::SetMatrix(const MatrixType&, double) [with TScalar = double; itk::Rigid3DTransform<TScalar>::MatrixType = itk::Matrix<double, 3u, 3u>]’ was hidden [-Woverloaded-virtual]
 Rigid3DTransform< TScalar >
 ^
In file included from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkAnisotropicSimilarity3DTransform.h:160:0,
                 from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkInitialImageToImageRegistrationMethod.h:28,
                 from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkImageToImageRegistrationHelper.h:25,
                 from /path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ExpertAutomatedRegistration.cxx:3:
/path/to/Slicer/Modules/CLI/ExpertAutomatedRegistration/ITKRegistrationHelper/itkAnisotropicSimilarity3DTransform.txx:80:1: warning:   by ‘void itk::AnisotropicSimilarity3DTransform<TScalarType>::SetMatrix(const MatrixType&) [with TScalarType = double; itk::AnisotropicSimilarity3DTransform<TScalarType>::MatrixType = itk::Matrix<double, 3u, 3u>]’ [-Woverloaded-virtual]
 AnisotropicSimilarity3DTransform<TScalarType>
//--------

Revision 23947  Directory Listing
Modified Tue Feb 3 05:35:02 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Fix sign-compare warning in vtkSlicerVolumesLogic

This commit fixes are a warning introduced by r23934 (BUG: avoid false
positives on geometry check)

// -----------
/path/to/Slicer/Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx:96:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < fractional.length(); ++i)
                                         ^
/path/to/Slicer/Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx:114:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (i == fractional.length() - 1)
// -----------                                    ^

Revision 23945  Directory Listing
Modified Tue Feb 3 04:39:37 2015 UTC (2 years, 7 months ago) by jcfr
BUG: Fix IndentationError in DICOMPlugin.py

This commit fixes regression introduced in r23939 (ENH: Transfer
referencedInstanceUIDs to the MRML attribute).

Runtime error:

// -------------
Fail to instantiate module "DICOMSlicerDataBundlePlugin"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/MultiVolumeImporterPlugin.py", line 4, in <module>
    from DICOMLib import DICOMPlugin
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMLib/__init__.py", line 5, in <module>
    from DICOMPlugin import *
  File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMLib/DICOMPlugin.py", line 208
    referencedInstanceUIDs += instanceUID + " "
                         ^
IndentationError: expected an indented bloc
// -------------

Revision 23942  Directory Listing
Modified Tue Feb 3 04:24:20 2015 UTC (2 years, 7 months ago) by jcfr
ENH: Use the latest vtkImageReslice filter instead of vtkImageResliceMask

Features:

* Performance optimization: about 2x speed increase in slice rendering
  speed when the volume is linearly transformed (e.g., transformed MRHead
  refresh rate 25fps -> 50fps)

* Thick slices, MIP, DRR, etc. display modes are available (no GUI yet,
  but already can be enabled using Python), see the code samples below

Implementation:

* Convert composite transform to simple linear filter before setting it
  in the reslice filter (because vtkImageResliceMask can do some additional
  optimizations if it gets a simple linear transform)

* Use the latest vtkImageReslice filter instead of vtkImageResliceMask:
** mask output of vtkImageReslice is a stencil, therefore slice processing
   pipeline is simplified: vtkImageCast filter is not needed anymore and
   the more efficient vtkImageStencil is used instead of vtkImageMathematics
** custom vtkImageResliceMask class is removed: no need to maintain it
   any longer, etc.

Thick slice:

sliceNode = slicer.mrmlScene.GetNodeByID('vtkMRMLSliceNodeRed')
appLogic = slicer.app.applicationLogic()
sliceLogic = appLogic.GetSliceLogic(sliceNode)
sliceLayerLogic = sliceLogic.GetBackgroundLayer()
reslice = sliceLayerLogic.GetReslice()
reslice.SetSlabModeToMean()
reslice.SetSlabNumberOfSlices(10)
reslice.SetSlabSliceSpacingFraction(0.3)
sliceNode.Modified()

Maximum intensity projection (MIP):

sliceNode = slicer.mrmlScene.GetNodeByID('vtkMRMLSliceNodeRed')
appLogic = slicer.app.applicationLogic()
sliceLogic = appLogic.GetSliceLogic(sliceNode)
sliceLayerLogic = sliceLogic.GetBackgroundLayer()
reslice = sliceLayerLogic.GetReslice()
reslice.SetSlabModeToMax()
reslice.SetSlabNumberOfSlices(600)
reslice.SetSlabSliceSpacingFraction(0.5)
sliceNode.Modified()

Conflicts:
	Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx

From: Andras Lasso <lasso@queensu.ca>

Revision 23941  Directory Listing
Modified Tue Feb 3 04:21:17 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Fix VTKv5 build conditionally disabling DataProbe/Logic

When building against VTKv5, this commit partially revert Slicer r23675
to remove the need for class "vtkPVScalarBarActor" depending on VTKv6
features.

If fixes the compile error related to missing "vtkScalarBarActorInternal.h"

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 23940  Directory Listing
Modified Tue Feb 3 04:21:13 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Build FiberTractMeasurements only if diffusion support is enabled

This commit fixes a build error ensuring that the module
FiberTractMeasurements first introduced in r23831 (ENH: Added first
implementation of FiberTractMeasurements CLI module) is build only
when needed.

Build error:

[...]
[ 34%] Built target vtkSlicerSubjectHierarchyModuleMRMLPythonD
/path/to/Slicer/Modules/CLI/FiberTractMeasurements/FiberTractMeasurements.cxx:23:36: fatal error: vtkMRMLFiberBundleNode.h: No such file or directory
 #include <vtkMRMLFiberBundleNode.h>
[...]

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 23939  Directory Listing
Modified Mon Feb 2 22:55:39 2015 UTC (2 years, 7 months ago) by pinter
ENH: Transfer referencedInstanceUIDs to the MRML attribute

If DICOM import plugin wants to store referenced instance UIDs, then it fills referencedInstanceUIDs attribute in the loadable. This commit makes sure this is transferred to the loaded subject hierarchy node so that the referenced nodes are highlighted in subject hierarchy.

Revision 23938  Directory Listing
Modified Mon Feb 2 22:39:08 2015 UTC (2 years, 7 months ago) by pinter
ENH: Highlight nodes in subject hierarchy referenced by DICOM

SOP instance UIDs are saved in subject hierarchy nodes in DICOMPlugin::addSeriesInSubjectHierarchy.
As long as this function is called from the DICOM import plugin to create subject hierarchy nodes for the loaded loadables, and the referencedInstanceUIDs attribute is filled in the loadable by the same plugin, the referenced nodes are highlighted in subject hierarchy when a node is selected.
For details see https://www.assembla.com/spaces/slicerrt/tickets/696

Revision 23937  Directory Listing
Modified Mon Feb 2 18:20:26 2015 UTC (2 years, 7 months ago) by pinter
BUG: Fixed crash in volumes logic due to uninitialized variable

Revision 23934  Directory Listing
Modified Thu Jan 29 21:34:03 2015 UTC (2 years, 7 months ago) by naucoin
BUG: avoid false positives on geometry check

Add an epsilon value to the volumes logic and use it in the fuzzy compare instead
of the VTK default value. Add a precision calculation from the epsilon so that
any warning messages are printed out with the same precision as was used to
check the values.
Added a sanity check to see if the smallest volume spacing is within 3-10 orders
of magnitude of epsilon and print a warning if not.
Use a copy of the CTK significant decimals utility method to calculate the
precision with which to display differences in compared volumes.
Use a copy of the CTK order of magnitude utility method to compare the
spacing of the volumes with the current epsilon being used to
check them.
To avoid CTK includes which pull in a dependency on Qt, rehome the CTK
core utility methods here in the anonymous namespace until they get ported
to VTK. Reimplemented significantDecimals and orderOfMagnitude using standard
strings and stringstreams rather than Qt strings.
Added a python test to exercise the epsilon, precision and geometry check.

TBD: GUI for setting epsilon or just always use a volume spacing based value.

Revision 23933  Directory Listing
Modified Thu Jan 29 08:54:15 2015 UTC (2 years, 7 months ago) by jcfr
ENH: Extend volume rendering logic API adding GetPresetByName function

This commit add a convenience function allowing to retrieve a volume
rendering preset given its name.

Co-authored-by: Sergey Aleshin <4memph@gmail.com>

Revision 23928  Directory Listing
Modified Thu Jan 29 04:13:44 2015 UTC (2 years, 7 months ago) by jcfr
ENH: Add handling of loadable.referencedInstanceUIDs

This topic has been discussed at SLC2015 Project Week, see:

http://www.na-mic.org/Wiki/index.php/2015_Winter_Project_Week:DICOM_References

The implementation follows the plan outlined during the project week.

The idea is the following:
1) plugins will populate referencedInstanceUIDs in loadable during Examine
2) on Load, referencedInstanceUIDs corresponding to the selected loadables is
checked, and the files matching those UIDs are located
3) plugins selected (by the user) are invoked to identify loadables corresponding
to the referenced file lists
4) popup dialog with the list of identified loadables (only those 'selected' by
plugins are considered) and the checkboxes allowing the user to cancel loading
5) when the user hits 'Done' button in the popup, selected referenced loadables
are added to the pluginsByLoadable dictionary, and all loadables are loaded per
usual procedure

From: Andrey Fedorov <fedorov@bwh.harvard.edu>

Revision 23922  Directory Listing
Modified Wed Jan 28 18:07:35 2015 UTC (2 years, 7 months ago) by pinter
ENH: Store StudyInstanceUID and StudyID to support adding exported series to existing study

These two tags are stored in the study subject hierarchy nodes as tags; Fixed misleading variable name in scalar volume plugin; Reduced default size of DICOM export window (after request).

Related to #3937

Revision 23920  Directory Listing
Modified Mon Jan 26 20:56:28 2015 UTC (2 years, 7 months ago) by jcfr
ENH: Update VolumeRendering code to exclude mangled mesa with VTK6

Mangled Mesa has been removed from VTK6. See the
following commits:
  kitware/VTK@3977699
  kitware/VTK@0659c80

Note that this commit does NOT address any particular build issue. It
simply re-organize the code for sake of readability.

Revision 23919  Directory Listing
Modified Mon Jan 26 20:56:26 2015 UTC (2 years, 7 months ago) by jcfr
STYLE: Re-organize includes in vtkSlicerOpenGLRayCastImageDisplayHelper

Revision 23918  Directory Listing
Modified Mon Jan 26 20:56:24 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Remove unused vtkSlicerMesaRayCastImageDisplayHelper classes

This class first introduced by commit r4673 (ENH: Integrated VTK ray
cast classes, started with modifications for incremental update) has been
copied in the code based but was not compiled.

Then, none of following commit (See [1][2][3]) related to this class
updated the CMakeLists.txt to compile the file.

This commit takes care of removing this unused files.

[1] r5517: ENH: Create own dll for vtkReplacements
[2] r9952: ENH: added new volume rendering module
[3] r15837: ENH: added first cut of VolumeRendering module

Revision 23917  Directory Listing
Modified Mon Jan 26 18:31:06 2015 UTC (2 years, 7 months ago) by jcfr
COMP: Remove unused class vtkSlicerGPUVolumeMapper

Following commit r23888 (ENH: Remove unused NCI volume rendering classes)
this class is not used anymore.

Revision 23902  Directory Listing
Modified Thu Jan 22 08:29:49 2015 UTC (2 years, 8 months ago) by jcfr
COMP: Fix sign-compare warnings in FiberTractMeasurements

This commit fixes the sign-compare warning reported below and also use
vtkIdType where it applies.

// ---------
/path/to/Slicer/Modules/CLI/FiberTractMeasurements/FiberTractMeasurements.cxx:208:45: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for (int o=0; o<operations.size(); o++)
                                             ^
/path/to/Slicer/Modules/CLI/FiberTractMeasurements/FiberTractMeasurements.cxx:223:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for (int i=0; i<fiberNodes.size(); i++)
                                       ^
/path/to/Slicer/Modules/CLI/FiberTractMeasurements/FiberTractMeasurements.cxx:232:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int o=0; o<operations.size(); o++)
                                         ^
/path/to/Slicer/Modules/CLI/FiberTractMeasurements/FiberTractMeasurements.cxx:280:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for (int o=0; o<operations.size(); o++)
                                       ^
/path/to/Slicer/Modules/CLI/FiberTractMeasurements/FiberTractMeasurements.cxx:306:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for (int o=0; o<operations.size(); o++)
                                       ^
// ---------

Revision 23892  Directory Listing
Modified Tue Jan 20 03:36:43 2015 UTC (2 years, 8 months ago) by lassoan
BUG: Fixed markups module widget layout when advanced is closed

Markups module widget looked strangely expanded when advanced section was closed. E.g., the single line of Offset/Centered/Show Slice Intersections text took up space of about 10-15 lines and the markup list could only show 6 markups.

Changed the markup list to use the available space.

Revision 23891  Directory Listing
Modified Tue Jan 20 02:13:55 2015 UTC (2 years, 8 months ago) by jcfr
ENH: Add Slicer_VTK_RENDERING_BACKEND configure option

By default set to "OpenGL", this commit introduces an option allowing
to build VTK using the new "OpenGL2" backend.

Note that the VTK build directory have to be completely removed when
switching between "OpenGL" and "OpenGL2" backend.

See http://www.kitware.com/source/home/post/144

Revision 23889  Directory Listing
Modified Tue Jan 20 00:18:39 2015 UTC (2 years, 8 months ago) by jcfr
ENH: Remove unused NCI MultiVolume rendering classes

This commit removes the code associated NCI multi volume rendering
mapper disabled in r20474

Revision 23888  Directory Listing
Modified Tue Jan 20 00:18:35 2015 UTC (2 years, 8 months ago) by jcfr
ENH: Remove unused NCI volume rendering classes

This commit remove the code associated with the NCI volume rendering
mapper disabled in r23026

Revision 23887  Directory Listing
Modified Tue Jan 20 00:18:32 2015 UTC (2 years, 8 months ago) by jcfr
ENH: Remove unused Texture based volume rendering classes

This commit remove the code associated with the texture volume rendering
mapper disabled in r23026

Revision 23885  Directory Listing
Modified Tue Jan 20 00:18:27 2015 UTC (2 years, 8 months ago) by jcfr
COMP: Fix "sign-compare" warning in qSlicerModelsModuleWidget.cxx

Revision 23884  Directory Listing
Modified Tue Jan 20 00:18:26 2015 UTC (2 years, 8 months ago) by jcfr
COMP: Fix "empty-body" warning in vtkSlicerFiberBundleLogic.cxx

This commit fixes the following warning:

vtkSlicerFiberBundleLogic.cxx:171: warning: suggest braces around empty
body in an 'if' statement [-Wempty-body]
     if (!this->SetPolyDataTensors(fiberBundleNode));
                                                    ^

Revision 23883  Directory Listing
Modified Tue Jan 20 00:18:21 2015 UTC (2 years, 8 months ago) by jcfr
COMP: Fix unused variable warnings

Revision 23881  Directory Listing
Modified Sat Jan 17 12:26:13 2015 UTC (2 years, 8 months ago) by lassoan
ENH: Added common HDF5 file extensions to transform file reader

Revision 23880  Directory Listing
Modified Fri Jan 16 18:50:39 2015 UTC (2 years, 8 months ago) by alexy
ENH: added field separator selection, print points and fibers first.

Revision 23879  Directory Listing
Modified Fri Jan 16 06:01:24 2015 UTC (2 years, 8 months ago) by lassoan
ENH: Allow SurfaceToolbox to use higher than 0.9 decimation reduction

Revision 23878  Directory Listing
Modified Thu Jan 15 16:26:16 2015 UTC (2 years, 8 months ago) by naucoin
STYLE: : update Markups documentation with new features

Add information about measuring with fiducials, showing the
transformed coordinates, hiding the coordinates in the table,
refocussing the 3D view.


Revision 23870  Directory Listing
Modified Fri Jan 9 07:09:40 2015 UTC (2 years, 8 months ago) by jcfr
ENH: Split camera refocus on markup into two levels. Fixes #3683

Add method to refocus one camera and call it from the
method that refocuses all 3D cameras.

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Nicole Aucoin <nicole@bwh.harvard.edu>

Revision 23869  Directory Listing
Modified Fri Jan 9 07:09:36 2015 UTC (2 years, 8 months ago) by jcfr
ENH: Add ability to refocus 3d cameras on a fiducial. Fixes #3683

Added a right click context menu option to refocus the 3D camera to the
first selected fiducal. This can help localise the fiducial in a large scene.
Added logic method to get all camera nodes and set the focal point on them.
Added the call to a self test.

From: Nicole Aucoin <nicole@bwh.harvard.edu>

Revision 23868  Directory Listing
Modified Fri Jan 9 06:50:09 2015 UTC (2 years, 8 months ago) by jcfr
BUG: Fixed loading of DICOM image from files containing special characters

Got some DICOM files that contained a special character in the file names
and in the patient name.
Slicer failed to load them because lack of proper encoding before using
them.

Solution:
* Encode strings to latin1 before using them in VTK set functions.
* Encode file names to a byte stream before sending them to hashlib.

From: Andras Lasso <lasso@queensu.ca>

Revision 23867  Directory Listing
Modified Fri Jan 9 06:50:05 2015 UTC (2 years, 8 months ago) by jcfr
ENH: Re-factor code introducing "slicer.util.toVTKString"

Co-authored-by: Andras Lasso <lasso@queensu.ca>

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 23860  Directory Listing
Modified Thu Jan 8 22:23:47 2015 UTC (2 years, 8 months ago) by jcfr
BUG: SliceViewAnnotation: Show scalarbar for windows < 1.0. Fixes #3881

This will fix the bug which hides the sliceview annotations scalarbar
for window width values less than 1.

Revision 23857  Directory Listing
Modified Thu Jan 8 17:49:00 2015 UTC (2 years, 8 months ago) by jcfr
COMP: Deprecate ITK function ::Zero and ::One to fix clang link error

These were deprecated in 2012; just before the ITK 4.2 release.
ZeroValue() and OneValue() should be used instead.

-- This coforms to ITKv4 changes made in
    InsightSoftwareConsortium/ITK@6c23e1da
    InsightSoftwareConsortium/ITK@3f712cd0

When building with clang on 10.9 where ITKv4 is a shared library,
a linking error occured for unfound symbols: NumericTraits<
OutputPixelType >::Zero but using the
NumericTraits< OutputPixelType >::ZeroValue() allows linkage to occur properly.

From: Hans Johnson <hans-johnson@uiowa.edu>

Revision 23855  Directory Listing
Modified Wed Jan 7 23:23:53 2015 UTC (2 years, 8 months ago) by jcfr
BUG: Fix Models module scrolling. Fixes #3927

This commit partially reverts the changes to the models UI file introduced
in r23788 and restore the proper functioning of the scrolling ensuring
the "orientations" property of the ctkExpandableWidget is set.

Co-authored-by: Alex Yarmarkovich <alexy@bwh.harvard.edu>

Revision 23854  Directory Listing
Modified Wed Jan 7 20:44:53 2015 UTC (2 years, 8 months ago) by alexy
BUG: fixed handling null polydata, more meaningful names, and output format fixes

Revision 23851  Directory Listing
Modified Mon Jan 5 20:52:08 2015 UTC (2 years, 8 months ago) by naucoin
BUG: fix models modules tests

A lot of the Models module tests are done with minimal scenes and
the selection node may be null or there are no fiber bundles are present.
This fix adds some null pointer testing to get the tests to pass,
fixing the problem that was introduced in svn 23788.

Issue #3678


Revision 23849  Directory Listing
Modified Mon Jan 5 18:59:09 2015 UTC (2 years, 8 months ago) by naucoin
ENH: fix typo, simplify code

Fixed a comment typo and simplified code in response
to comments.

Issue #1898

Revision 23848  Directory Listing
Modified Mon Jan 5 18:59:06 2015 UTC (2 years, 8 months ago) by naucoin
BUG: fix coordinate display and add distance

The right click menu on the Markups GUI wasn't always showing the
correct coordinates as there were some assumptions about how the
selected items mapped to rows. Take out the assumptions, iterate
through every selected item and collect unique rows.

Show the summed linear distance between selected fiducials.

Issue #1898

Revision 23847  Directory Listing
Modified Mon Jan 5 18:20:25 2015 UTC (2 years, 8 months ago) by naucoin
BUG: fix markups in views test

Update python self test to not use the old GetSliceNode call,
updated it to use GetMRMLSliceNode as determined by svn revision 23842.



Revision 23842  Directory Listing
Modified Mon Dec 22 18:28:50 2014 UTC (2 years, 9 months ago) by jcfr
ENH: Remove redundant markups displayable manager method

This commit remove the method "GetSliceNode" and instead make
use of the existing method "GetMRMLSliceNode"

Revision 23835  Directory Listing
Modified Sat Dec 20 22:37:58 2014 UTC (2 years, 9 months ago) by alexy
ENH: Added row or column based output format options

Revision 23834  Directory Listing
Modified Thu Dec 18 20:01:37 2014 UTC (2 years, 9 months ago) by alexy
BUG: Workaround of bug in vtkXMLPolyDataReader while reading multiple files

Revision 23833  Directory Listing
Modified Wed Dec 17 16:29:26 2014 UTC (2 years, 9 months ago) by naucoin
COMP: fix compiler error with string vector

Fix parameter mismatch in call to computeScalarMeasurements
by creating an empty operations vector.


Revision 23832  Directory Listing
Modified Tue Dec 16 23:58:54 2014 UTC (2 years, 9 months ago) by alexy
ENH: Added cluster aggregation based on hierarchy to FiberTractMeasurements CLI module.

Revision 23831  Directory Listing
Modified Tue Dec 16 16:01:05 2014 UTC (2 years, 9 months ago) by alexy
ENH: Added first implementation of FiberTractMeasurements CLI module.

Revision 23829  Directory Listing
Modified Fri Dec 12 18:20:51 2014 UTC (2 years, 9 months ago) by pinter
BUG: Subject hierarchy does not try to remove non-SH hierarchy nodes when data node is deleted

When a (non-SH) node is removed, the related subject hierarchy node is removed with it, so that it's not left dangling and become invalid. Previously the occasional other type hierarchy nodes were removed as well. This has caused problems when deleting the nodes in other modules handling hierarchies due to different handling of node deletion, so this feature has been removed.

Fixes #3918

Revision 23825  Directory Listing
Modified Wed Dec 10 19:56:40 2014 UTC (2 years, 9 months ago) by pinter
BUG: Fix backwards compatibility for DICOM plugins

Fixed issue discussed here:
http://slicer-devel.65872.n3.nabble.com/DICOM-plugins-are-not-called-td4033045.html
Now the DICOM plugins that don't use the new naming of the plugin functions (examine was renamed to examineForImport to avoid ambiguity due to adding examineForExport) work without any changes.

Revision 23824  Directory Listing
Modified Wed Dec 10 19:33:06 2014 UTC (2 years, 9 months ago) by pinter
BUG: Fix subject hierarchy node creation bug and automatic tests

Bug reported in this thread
http://slicer-users.65878.n3.nabble.com/DICOM-RT-Export-td4028406.html
fixed, now subject hierarchy nodes are also created before the user visits the SH module (only if auto-generate is turned on, or if loaded from DICOM).

Revision 23821  Directory Listing
Modified Tue Dec 9 15:35:55 2014 UTC (2 years, 9 months ago) by pinter
BUG: Fix mixing subject hierarchy with other hierarchies

Two fixes have been applied. One is to enforce nested associations if there is a conflict of two hierarchy nodes associating to one data node.
Reminder: Nested associations prevent the scenario when two hierarchy nodes associate to the same data node, which leads to non-determinism if GetAssociatedHierarchyNode is called. In this case instead of the connections (SH --assoc--> Model <--assoc-- ModelHierarchy), this structure is created: SH --assoc--> ModelHierarchy --assoc--> Model
The other fix is to ensure reparenting to the same type of hierarchy nodes. If this proves to be too strict, then we may allow reparenting to base classes, or the alternative is to subclass the scene hierarchy model to the hierarchy types.

Also a subject hierarchy bug was fixed that occurred because the widget was created when instantiating the module (which is udesirable by itself), and this caused creation of context menu actions before external plugins had the chance to register. Now the widget is not created early, but the right connections are made at the right time.

Fixes #3911

Revision 23817  Directory Listing
Modified Fri Dec 5 17:25:20 2014 UTC (2 years, 9 months ago) by pinter
ENH: Subject hierarchy nodes not auto-created by default

Subject hierarchy auto-creation has caused problems in other modules (like Models, see referred ticket), and some users won't use subject hierarchy, so the supported data nodes are not added to the hierarchy automatically.
Now when the user enters subject hierarchy, and there are supported nodes (i.e. there is an SH plugin that can handle the node) in the scene, a question pops up whether the user wants to create subject hierarchy. If they say no, the hierarchy remains empty and unusable, if they choose yes, then the hierarchy is created once, if they choose yes to all, then a setting is saved and auto-creation is turned on, which means every added node that is supported by SH is automatically added. The users who use subject hierarchy often, should choose this option.

Related to #3911

Revision 23816  Directory Listing
Modified Wed Dec 3 22:12:27 2014 UTC (2 years, 9 months ago) by pinter
ENH: Make subject hierarchy plugin method addNodeToSubjectHierarchy non-virtual

Now that subject hierarchy nodes are automatically created when a supported data node (i.e. there exists an SH plugin that can add it to the tree) is added to the scene, the qSlicerSubjectHierarchyAbstractPlugin::addNodeToSubjectHierarchy method lost its purpose, so although it's still used as a convenience function, it cannot be overridden any more.
Minor fixes: comments, checks, typos

Revision 23813  Directory Listing
Modified Tue Dec 2 20:45:15 2014 UTC (2 years, 9 months ago) by alexy
BUG: 3911. Fixed crash on change of visibility of ModelHierarchy nodes introduced by making them part of SubjectHierarchy.

Revision 23812  Directory Listing
Modified Tue Dec 2 19:06:17 2014 UTC (2 years, 9 months ago) by pinter
COMP: Fixed linux build warnings

Also fix Subject Hierarchy failing python self tests.

Fixes #3910

Revision 23811  Directory Listing
Modified Tue Dec 2 00:24:08 2014 UTC (2 years, 9 months ago) by pinter
COMP: Fixed export directive in DICOM subject hierarchy plugin

Revision 23810  Directory Listing
Modified Tue Dec 2 00:09:44 2014 UTC (2 years, 9 months ago) by pinter
ENH: Add new DICOM export feature and scalar volume plugin

DICOM export dialog and tag editor widget are new widgets for DICOM export of all kinds of data in the new DICOMLib directory of the Scripted module folder. The existing DICOM plugin mechanism is used, but extended with an export function. Although the existing DICOMLoadable python object still works, C++ containers have been added to ensure C++ support of DICOM import/export. DICOMDataExchange.py was split into DICOMExportScalarVolume.py and DICOMExportScene.py.
See all details, including design considerations and usage information here:
http://www.slicer.org/slicerWiki/index.php/Documentation/Labs/DICOMExport

Closes #3163

Revision 23809  Directory Listing
Modified Mon Dec 1 19:12:14 2014 UTC (2 years, 9 months ago) by jcfr
BUG: Ensure RemoveAllMarkups also invoke MarkupRemovedEvent

This commit improve the API consistency by ensuring the event will
be sent also if RemoveAllMarkups is called.

Similarly, the function "SetLocked" is called instead of directly
setting the ivar, doing so will ensure that the LockModifiedEvent
is also invoked.

Note that the pair StartModify/EndModify is used to ensure the ModifedEvent
associated with the markups node is invoked at the end if it applies.

For sake of consistency, the function RemoveAllTexts() has been added.
Since no text is added/removed when function Add/RemoveMarkup are called,
it doesn't make sense to clear the text when removing markups.

Running the test py_AddManyMarkupsFiducialTest doesn't show any decrease
in time with/without this patch. (Ubuntu 13.10 / debug build)

With: 24.17 sec, 26.65 sec, 24.01 sec (3 runs)
Without: 26.59 sec, 27.04 sec, 24.72 sec (3 runs)

Revision 23807  Directory Listing
Modified Thu Nov 27 03:39:59 2014 UTC (2 years, 9 months ago) by lassoan
BUG: Fixed composite transform problems

By hardening a non-linear transform on a vtkMRMLLinearTransformNode makes the contents of the linear transform node non-linear. This causes errors in many places in the code where linearity of the transform is tested by checking the class type instead of calling transform->IsLinear() or transform->IsTransformToParentLinear().

In the long term all specific transform nodes (linear, bspline, grid) should be removed and only the generic vtkMRMLTransformNode should be used everywhere. The specific classes are already “empty”, they do not contain any useful functionality, but they are be used in extensions (and still have not removed from everywhere in the Slicer core), so they have to be phased out gradually.

Specific problems:
* If affine transform is applied to bspline then bspline component is ignored
* If affine transform is applied to bspline and affine is hardened then the bspline component is lost.
* Hardening multiple nonlinear transforms on a transform sometimes results in incorrect composite transform

Fixes:
* Instead of casting to vtkMRMLLinearTransform IsLinear or IsTransformToWorldLinear has to be called to decide if a transform is linear (checking the class type does not work correctly for composite transforms)
* Fixed vtkMRMLTransformNode::ApplyTransform
* Moved full implementation of get/set transform matrix functions in vtkMRMLTransformNode (it further prepares removal of obsolete linear/bspline/grid transform node classes)

Enhancements:
* Allow splitting of composite transforms to its components (Transforms module: Split button – only displayed for composite transforms)

Revision 23798  Directory Listing
Modified Mon Nov 24 20:48:27 2014 UTC (2 years, 10 months ago) by pinter
ENH: Subject hierarchy tree headers show icons instead of text

The text in the narrow columns ('Vis' and 'Tr') looked quite bad, so instead it shows the show/hide icon for the visualization column, and a transform icon in the transforms column. The columns are now not resized when exiting then entering the module.

Revision 23796  Directory Listing
Modified Fri Nov 21 23:28:35 2014 UTC (2 years, 10 months ago) by pinter
BUG: Subject hierarchy nodes now created if importing old scene

If a scene was imported which was created before the implementation of automatic subject hierarchy node creation, then the SH nodes were not created. Many users use such scenes and they would consider this a bug. Now this is fixed.

Fixes #3902

Revision 23795  Directory Listing
Modified Thu Nov 20 22:12:06 2014 UTC (2 years, 10 months ago) by pinter
ENH: Update parse local data to follow changes in subject hierarchy

Parse local data ('Create hierarchy from local directory structure' context menu action for scene in subject hierarchy) now creates folder nodes instead of subject and study, because we cannot guarantee that the number of directory levels accommodates this condition.
Removed the concept of ChildLevelMap and related code, due to fewer levels (now we only have Subject, Study and Folder, there is no separate Patient and Generic series) and the general nature of Folder (there is no need now to create a new type of hierarchy node for every grouping concept).

Fixes #3892

Revision 23794  Directory Listing
Modified Wed Nov 19 22:45:33 2014 UTC (2 years, 10 months ago) by pinter
ENH: Add generic folder plugin to subject hierarchy

The new plugin allows the user to create arbitrary folders, instead of the fixed hierarchy of levels. Also now patient and subject nodes are strictly separated.

Fixes #3898

Revision 23793  Directory Listing
Modified Wed Nov 19 18:23:40 2014 UTC (2 years, 10 months ago) by pinter
BUG: Volume visibility controls for subject hierarchy fixed.

The visibility controls did not work well in subject hierarchy, now it is fixed. Also fixed bug when importing scene: due to the automatic subject hierarchy node creation duplicate SH nodes were created when scene was imported. Simplified DICOM object naming in subject hierarchy: the name of the loadable is used instead of assembling the very same name from the same tags.

Fixes #3893

Revision 23791  Directory Listing
Modified Wed Nov 19 01:16:28 2014 UTC (2 years, 10 months ago) by pinter
COMP: Removed constant added back for backwards compatibility

Constant was renamed in subject hierarchy due to removal of the concept of potential nodes altogether. Adding back to ensure backwards compatibility.

Revision 23790  Directory Listing
Modified Tue Nov 18 18:42:36 2014 UTC (2 years, 10 months ago) by pinter
ENH: Added Transforms subject hierarchy plugin

Now the transforms are also displayed in subject hierarchy as nodes. Their tooltip shows relevant information, can be visualized via the regular show/hide buttons, and context menu includes Invert and Reset to identity features.

Revision 23788  Directory Listing
Modified Tue Nov 18 15:19:13 2014 UTC (2 years, 10 months ago) by alexy
BUG 3678. Fixed multiple issues with Tractography Fibers in the Models module. Added support for Fiber Hierarchies in the Models Module. Added Line/Tube/Glyph selection for display node tree view and display property editors in Models module. Made global visibility work for Fibers and the hierarchies of fibers. Synchronized tree view and display property editor. Added Line/Tube/Glyph selection to vtkMRMLSelection node, it is used in the tree view and display property editors and DisplayableManager.Also added generic Get/SetDisplayClassVisibility() methods to vtkMRMLDisplayNode.

Revision 23786  Directory Listing
Modified Mon Nov 17 17:50:55 2014 UTC (2 years, 10 months ago) by pinter
BUG: Change size hint of subject hierarchy items to hide second scrollbar

Set uniformRowHeights to false, and change the size hint of the item delegate for subject hierarchy. Fix typo in Data module widget name.
Fixes #3895

Revision 23784  Directory Listing
Modified Sat Nov 15 02:17:37 2014 UTC (2 years, 10 months ago) by pinter
ENH: Subject hierarchy nodes automatically created for supported types

If a data node is added that is supported in subject hierarchy, it is automatically inserted in the tree. The notion of potential nodes completely removed. This reduces confusion about why certain nodes in the subject hierarchy tree don't have full functionality and icons. Generally, both code and usage became simpler.
Fixes #3891

Revision 23783  Directory Listing
Modified Thu Nov 13 22:25:55 2014 UTC (2 years, 10 months ago) by pinter
STYLE: Fixed typo in DataProbe member variable name

Revision 23782  Directory Listing
Modified Tue Nov 11 20:50:31 2014 UTC (2 years, 10 months ago) by pinter
BUG: Checks added for slice view annotations

Slice view annotations generated many pages of error messages in case of slicelets, where custom layout managers are used

Revision 23781  Directory Listing
Modified Thu Nov 6 19:06:37 2014 UTC (2 years, 10 months ago) by naucoin
BUG: adjust resample interpolation type for label maps

The volumes logic method ResampleVolumeToReferenceVolume can be
called with an input label map scalar volume, check for that case.
For label maps we don't want to do a linear interpolation over any data
present as that could result in values not defined in the color look
up table, so use the nearest neighbour filter option instead.

Revision 23779  Directory Listing
Modified Thu Nov 6 02:15:17 2014 UTC (2 years, 10 months ago) by jcfr
ENH: Added "Enable developer mode" option to ExtensionWizard

Developer mode is quite important for scripted module developers, as
it enables showing of the "Reload and test" section in scripted module
GUI.

To make sure developers not forget to enable developer mode, added a
checkbox to enable developer mode to the scripted module auto-load dialog.
The checkbox is checked by default and it is only shown if developer mode
is not enabled already.

From: Andras Lasso <lasso@queensu.ca>

Revision 23778  Directory Listing
Modified Wed Nov 5 11:45:17 2014 UTC (2 years, 10 months ago) by pieper
BUG: fix compilation of failing test for VTKv5

The test always returns fail now on purpose to indicate
that this functionality is not available.

Revision 23773  Directory Listing
Modified Sun Nov 2 15:07:38 2014 UTC (2 years, 10 months ago) by jcfr
ENH: Update Documentation to 4.4

Revision 23771  Directory Listing
Modified Sat Nov 1 02:53:23 2014 UTC (2 years, 10 months ago) by jcfr
COMP: Fix VS2013 compilation issue removing unused "isnan" define.

From: Dzenan Zukic <dzenan.zukic@kitware.com>

Revision 23767  Directory Listing
Modified Thu Oct 30 09:07:40 2014 UTC (2 years, 10 months ago) by jcfr
COMP: Fix VS2013 compilation error including missing algorithm header

From: Dzenan Zukic <dzenan.zukic@kitware.com>

Revision 23764  Directory Listing
Modified Wed Oct 29 21:49:14 2014 UTC (2 years, 10 months ago) by naucoin
BUG: get the screenshot type without making a widget

From JC: avoid creation an instance of the widget to get the
value of the enum

Issue #3879

Revision 23763  Directory Listing
Modified Wed Oct 29 21:49:07 2014 UTC (2 years, 10 months ago) by naucoin
BUG: fix crash when editing scripted screen shots

Fixed the default screen shot type to use the defined full layout
integer.
Added checks to avoid crashes for scripts that are in extensions.

The default screen shot type was set to -1 in the python scripts
and templates, but in the Qt widget, the screen shot type was
only defined from 0-4. Trying to open the scripted screen shot
node in the Qt widget would cause a crash since the -1 type was
cast to the enumerated WidgetType in qMRMLScreenShotDialog
resulting in an invalid number and a null widget.

Issue #3879

Revision 23762  Directory Listing
Modified Wed Oct 29 16:06:25 2014 UTC (2 years, 10 months ago) by naucoin
ENH: link resample and check methods, add a test

Added documentation links between the method that checks
for geometry mismatch and the one that resamples to fix it.
Added basic tests for the new logic methods.

Revision 23761  Directory Listing
Modified Wed Oct 29 16:06:21 2014 UTC (2 years, 10 months ago) by naucoin
ENH: generalise comparing volume geometries

Added CompareVolumeGeometry and call it from CheckForLabelVolumeValidity

Revision 23758  Directory Listing
Modified Wed Oct 29 04:15:12 2014 UTC (2 years, 10 months ago) by jcfr
ENH: Fixed error message occurring after disabling SliceViewAnnotations

This commit fixes error message like this one:

Traceback (most recent call last):
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 596, in updateCornerAnnotations
    self.makeAnnotationText(caller)
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 838, in makeAnnotationText
    self.drawCornerAnnotations()
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/DataProbeLib/SliceViewAnnotations.py", line 993, in drawCornerAnnotations
    sliceCornerAnnotation = self.sliceCornerAnnotations[self.currentSliceViewName]
KeyError: 'Red'

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 23757  Directory Listing
Modified Wed Oct 29 04:15:09 2014 UTC (2 years, 10 months ago) by jcfr
BUG: Fixed exception, added tooltip

Slice annotation failed with an exception when series time was empty.
Added tooltip to "Background DICOM annotations persistence" checkbox, as it was very difficult to figure out what was it for.

From: Andras Lasso <lasso@queensu.ca>

Revision 23756  Directory Listing
Modified Wed Oct 29 04:15:06 2014 UTC (2 years, 10 months ago) by jcfr
BUG: Fixed two minor issues of slice view annotations

* Fixed the error in the terminal No scalar values found for texture input!
* New slices that are added to the layout would have the same font
 settings as the other slices.

From: Alireza Mehrtash <mehrtash@bwh.harvard.edu>

Revision 23751  Directory Listing
Modified Mon Oct 20 17:52:23 2014 UTC (2 years, 11 months ago) by jcfr
BUG: The items in the label statistics table should not be edit-able

From: Bradley Lowekamp <blowekamp@mail.nih.gov>

Revision 23743  Directory Listing
Modified Thu Oct 16 19:24:15 2014 UTC (2 years, 11 months ago) by pieper
BUG: #3873 lingering vtk5 code broke module

Need to use the newer pipeline calls for vtk 6

Revision 23742  Directory Listing
Modified Thu Oct 16 19:14:38 2014 UTC (2 years, 11 months ago) by pinter
BUG: Prevent SliceViewAnnotations from dividing by zero

It can happen in some cases and it is important to recover gracefully, not just get a long python error.

Revision 23737  Directory Listing
Modified Fri Oct 10 21:32:45 2014 UTC (2 years, 11 months ago) by naucoin
BUG: fix loading of derived items

A typo in a python call was masked by the catching
off an attribute error meant to catch if there
were no derived items. Fixed the call to processEvents
and now derived items will load.

Issue 3806

Revision 23735  Directory Listing
Modified Thu Oct 2 19:07:51 2014 UTC (2 years, 11 months ago) by naucoin
COMP: fix linux compilation of Models test

Remove include of QPushButton which is causing a compilation
error on the linux factories.

File added in svn 23734.


Revision 23734  Directory Listing
Modified Wed Oct 1 03:30:39 2014 UTC (2 years, 11 months ago) by finetjul
BUG: Do not use QItemSelectionModel::currentRowChanged()

The signal is not reliable, ot might not be triggered at the right time.
Indeed the signal is for "key" events and has not a "selection" role.
The lack of trigger can lead to a crash due to widgets still observing
nodes that are not in the scene anymore.

Revision 23726  Directory Listing
Modified Wed Sep 24 21:55:01 2014 UTC (3 years ago) by pinter
BUG: Fixed minor issues in subject hierarchy parse local data plugin

Show/hide icons didn't show up for non-volume displayables; If the user did a parsing, loaded further data and did a new parsing, the first batch appeared twice in the list. Both issues have been fixed.

Revision 23722  Directory Listing
Modified Wed Sep 24 16:33:59 2014 UTC (3 years ago) by pinter
BUG: Re-enable scrollbar for Subject hierarchy tree view

It's better to have a double scrollbar than being confused about the layout (if there are many nodes in the tree, then a scrollbar is added to both the module widget and the tree view), so I re-add the scrollbar temporarily until a better fix is made.

Revision 23721  Directory Listing
Modified Tue Sep 23 04:43:52 2014 UTC (3 years ago) by jcfr
ENH: Set objectName with editor PaintEffect UI element

This is particularly useful when recording macro using QtTesting or
when one need to get a reference to a widget associated with the effect
using its name.

Revision 23715  Directory Listing
Modified Sat Sep 20 02:52:48 2014 UTC (3 years ago) by jcfr
COMP: N4ITKBiasFieldCorrection - Fix compilation error with ITK_USE_64BITS_IDS

Similar to the change to vtkITK applied in previous commit (r23714), this
commit fixes the build error happening on windows when building
the CLI module N4ITKBiasFieldCorrection with the option ITK_USE_64BITS_IDS
enabled.

From: Gib Bogle <g.bogle@auckland.ac.nz>

Revision 23713  Directory Listing
Modified Fri Sep 19 18:22:36 2014 UTC (3 years ago) by jcfr
ENH: DICOM2FullBrainTractography now supports setting a new scene.

Revision 23712  Directory Listing
Modified Fri Sep 19 18:22:33 2014 UTC (3 years ago) by jcfr
BUG: Reference parent when creating DICOM2FullBrainTractography workflow

Prior to this commit, the layout was incorrectly used as a the parent
widget. This was working because the function "QLayout::layout()" return
the layout that would be otherwise returned by "parent.layout().

Revision 23711  Directory Listing
Modified Fri Sep 19 18:22:31 2014 UTC (3 years ago) by jcfr
BUG: Fix memory leak in SlicerDICOM2FullBrainTractographyModuleGenericTest

This commit sets the parent for the workflow. Doing so will ensure the
workflow and its children will be deleted.

Revision 23705  Directory Listing
Modified Thu Sep 18 08:51:18 2014 UTC (3 years ago) by jcfr
BUG: Fix crash when setting null scene on Markups widget.

This commit re-organizes the code associate with function
"onActiveMarkupMRMLNodeChanged" to prevent a crash and avoid displaying
warnings when setting a null scene.

Revision 23703  Directory Listing
Modified Thu Sep 18 08:51:14 2014 UTC (3 years ago) by jcfr
STYLE: Simplify RegisterNodes implementation in Markups and Annotation logic

This commit updates the code to use smart pointer.

Revision 23700  Directory Listing
Modified Wed Sep 17 22:28:42 2014 UTC (3 years ago) by jcfr
ENH: Simplify vtkMRMLFiberBundleNode::Add(Line/Tube/Glyph)DisplayNode methods

This commit update the functions Add(Line/Tube/Glyph)DisplayNode methods
to return null if no scene has been set. Doing so will prevent memory leak
ensuring new node are always added to the scene.

Revision 23698  Directory Listing
Modified Wed Sep 17 22:28:38 2014 UTC (3 years ago) by jcfr
STYLE: Use vtkNew in vtkSeedTract/vtkDiffusionTensorGlyph/...

This commit simplifies code using vtkNew where it makes sense.

Revision 23697  Directory Listing
Modified Wed Sep 17 19:59:43 2014 UTC (3 years ago) by pieper
ENH: improve dicom warning and tooltip for loadables

Revision 23696  Directory Listing
Modified Wed Sep 17 19:59:41 2014 UTC (3 years ago) by pieper
BUG: #3847 create subseries based on image orientation in DICOM

Because the image orientation patient value can include a
comma, the logic to track the distinct values in a collection
of files failed to recognize different orientation values.
This led the only available loading option in slicer being one
with a mix of orientations, leading to incorrect geometry.
This fix allows the plugin to generate independent loadables
for each orientation, thus removing the incorrect behavior.

The issue remains that the loadable with the geometry warning
is still the highest confidence loadable which could lead
to errors.  Will address that independently.

Revision 23692  Directory Listing
Modified Wed Sep 17 12:40:40 2014 UTC (3 years ago) by jcfr
ENH: Do not set workaround to associate scalar with input tensor field.

This is not required when using VTK6.

Revision 23691  Directory Listing
Modified Wed Sep 17 12:40:38 2014 UTC (3 years ago) by jcfr
STYLE: Remove commented code from Tractography seeding modules

Revision 23690  Directory Listing
Modified Wed Sep 17 12:40:36 2014 UTC (3 years ago) by jcfr
BUG: Re-organize tractography seeding pipeline to work with VTK6. See #3845

This commit fixes pipeline incorrectly setup in r23121 by using output
port instead pipeline information (InputROIPipelineInfo)

Revision 23686  Directory Listing
Modified Tue Sep 16 07:24:05 2014 UTC (3 years ago) by jcfr
BUG: Fix qMRMLVolumePropertyNodeWidgetTest1

This commit fixes the failing test by ensuring the vtkRenderingContextOpenGL
module is initialized.

The following error was occurring on all three platforms:

// ----------
Generic Warning: In /path/to/VTKv6/Rendering/Context2D/vtkContextDevice2D.cxx, line 27
Error: no override found for 'vtkContextDevice2D'.
// ----------

For more details, see:
  http://www.vtk.org/Wiki/VTK/Build_System_Migration#How_Implementation_Modules_Are_Initialized
  http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Factories_now_require_defines


Finally, let's also note that the test executable was compiled with:

-DvtkRenderingContext2D_AUTOINIT="1(vtkRenderingContextOpenGL)"
-DvtkRenderingCore_AUTOINIT="4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)"
-DvtkRenderingFreeType_AUTOINIT="1(vtkRenderingFreeTypeFontConfig)"
-DvtkRenderingVolume_AUTOINIT="1(vtkRenderingVolumeOpenGL)"

and was linked against vtkRenderingContextOpenGL.

Revision 23685  Directory Listing
Modified Tue Sep 16 03:50:18 2014 UTC (3 years ago) by jcfr
COMP: Update ModelToLabelMap and remove unused dependency to ITKDeprecated

In r23660, the dependency to AnalyzeImageIO headers has been removed.
This commit also removes the now unneeded dependency to "ITKDeprecated".

Thanks to "Gib Bogle <g.bogle@auckland.ac.nz>" for reporting the problem.

Co-authored-by: Bradley Lowekamp <blowekamp@mail.nih.gov>

Revision 23684  Directory Listing
Modified Tue Sep 16 03:28:40 2014 UTC (3 years ago) by jcfr
BUG: Fix OtsuThresholdImageFilterTest on Windows

This commit ensures that "SEM_LAUNCH_COMMAND" variable will be defined
for both CLIs and remote modules.

Revision 23682  Directory Listing
Modified Tue Sep 16 02:57:09 2014 UTC (3 years ago) by jcfr
COMP: Remove unused dependency to ITKDeprecated from ResampleDTIVolume

The dependency was probably added by "mistake" when the module
"Utilities/Maintenance/WhatModulesITK.py" was used to create the list of
dependent modules (r23413). Since the header "itkSemaphore.h" was
specified in the code but was commented, "WhatModulesITK" reported its
associated module ITKDeprecated as required.

This commit removes the commented code and updates the CMakeLists.txt

Thanks to "Gib Bogle <g.bogle@auckland.ac.nz>" for reporting the problem.

Revision 23681  Directory Listing
Modified Tue Sep 16 00:51:29 2014 UTC (3 years ago) by lassoan
BUG: Fixed ExtensionWizard immediate scripted module loading

Problem was that settingsList returned a tuple, which is not mutable and therefore rawSearchPaths.append failed.

Revision 23676  Directory Listing
Modified Sun Sep 14 11:28:09 2014 UTC (3 years ago) by jcfr
ENH: Added icon loading for scripted module base class

Python scripted modules that use the ScriptedLoadableModule base class
now load their icon from Resources/Icons/<ModuleName>.png.
If the icon file does not exist then the default icon is kept.
Modules can override the icon setting in the module __init__ function to
use any other custom icon.

Updated extension wizard template and extension test.

Updated one more module (VectorToScalarVolume) to use
ScriptedLoadableModule base class.

From: Andras Lasso <lasso@queensu.ca>

Revision 23675  Directory Listing
Modified Sat Sep 13 03:07:33 2014 UTC (3 years ago) by jcfr
ENH: Fixed color scalar bar by using vtkPVScalarBarActor

* Color scalar bar was enhanced and the bugs were fixed by adding Paraview vtkPVScalarBarActor to module's logic
* Replaced vtkScalarBarActor with vtkPVScalarBarActor
* Made the logic sensitive to dicom volume. (for none dicom volumes the
 color scalar bar would occupy 100% of the view's width)
* Change the format of foreground volume and label opacities to percentage
(e.g. from 0.4 to 40%)

From: Alireza Mehrtash <mehrtash@bwh.harvard.edu>

Revision 23673  Directory Listing
Modified Sat Sep 13 03:07:26 2014 UTC (3 years ago) by jcfr
COMP: Slicer welcome: Fix location of qrc files in UI file.

From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Revision 23672  Directory Listing
Modified Fri Sep 12 05:30:49 2014 UTC (3 years ago) by jcfr
ENH: Update AddMarkup/Fiducial API to optionally accept the label.

When calling the AddMarkup/AddFiducial method, a default
label is associated. That said, it is not uncommon to create markup
or fiducial with a custom label.

For example, within a python script, before this commit, the following
could be done to add a fiducial and set its label:

  fiducialIndex = markups.AddFiducial(x, y, z)
  markups.SetNthMarkupLabel(fiducialIndex, "Foo")

The first issue is that the event 'MarkupAddedEvent' was triggered before the
label was set. Since when the markup is added an hypothetical callback
could retrieve other data structure based on the label, it is more
complex to do the book-keeping if the callback can't make use of the
label.

This commit ensures that callback connected to "MarkupAddedEvent" will
be able to get the custom label value.

The second issue is that the "Markup" structure is not wrapped in python.
That means it is not possible to pre-initialize a markup structure
before adding it using "AddMarkup(Markup markup)"

Note that ideally, it should be possible to pass other properties
to initialize the markup in python or c++ before the "MarkupAddedEvent"
is invoked. This commit is a trade-off between changing the Markup
structure into a more heavy weight vtkObject (so that it is wrapped) and
not being able to set the label before "MarkupAddedEvent" is invoked.

Revision 23671  Directory Listing
Modified Fri Sep 12 05:05:44 2014 UTC (3 years ago) by jcfr
ENH: Change 'AddMarkup' to also return the markupIndex on success.

This commit updates the function 'AddMarkup' to behave similarly
to 'AddMarkupWithNPoints' function.

Revision 23670  Directory Listing
Modified Thu Sep 11 20:33:00 2014 UTC (3 years ago) by naucoin
BUG: fix crash when showing transformed markups

The module widget was getting the world coordinates by passing in a 3
element array, not a 4 element array. On some machines this was
triggering a crash. This fix avoids that by properly passing
a four element point array and then reassigning the values to
the three element array for display.

Issue #3756

Revision 23669  Directory Listing
Modified Thu Sep 11 20:04:24 2014 UTC (3 years ago) by jcfr
BUG: Consistently invoke MarkupAddedEvent specifying the markup index.

Revision 23668  Directory Listing
Modified Thu Sep 11 19:40:59 2014 UTC (3 years ago) by naucoin
BUG: fixing fiducial projections

Turning them on for the first time was causing a null pointer crash in the
VTK 6 rendering pipeline. The glyph source hadn't been updated and the points
were undefined in the default circle glyph.

Also call the displayable manager superclass on scene close to ensure that the
fiducial projections are removed from the render window.

Issue #3821

Revision 23665  Directory Listing
Modified Wed Sep 10 07:05:08 2014 UTC (3 years ago) by jcfr
BUG: Proceed to MarkupsFiducial picking manager configuration only for VTK6.

This commit fixes regression introduced in r23648 that was preventing
Slicer from being compiled against VTK5.

Revision 23661  Directory Listing
Modified Tue Sep 9 20:56:52 2014 UTC (3 years ago) by jcfr
ENH: Change required ITK version from 4.5 to 4.6

Starting with r23373 ITK 4.6.x is used to build and test Slicer.

$ git shortlog c127db8..6b5fa1a SuperBuild/External_ITKv4.cmake
jcfr (8):
      ENH: Update (1) ITKv4 from v4.5.2 to v4.6rc01 and (2) update BRAINSTools
      BUG: Update ITKv4 project to backport fix related to GDCMIO
      BUG: Update ITKv4 - Attempt to fix ResampleDTI tests
      COMP: Update ITKv4 - Fix "unused-local-typedefs" warning
      COMP: Move most of find_package calls into each Slicer sub-project.
      ENH: Move ITKv4 towards 4.6.0rc20140719
      ENH: Update ITKv4 and BRAINSTools
      BUG: Update ITKv4 and BRAINSTools - BRAINSFit performance improvement.

Revision 23660  Directory Listing
Modified Tue Sep 9 19:54:01 2014 UTC (3 years ago) by jcfr
ENH: Remove ITK AnalyzeImageIO registration

Originally introduced in r824, the ITK AnalyzeImageIO have been
deprecated. The NIFTI ImageIO implementation is now able to read
analyze .img or .hdr files as well as the original Analyze ImageIO.

From: Bradley Lowekamp <blowekamp@mail.nih.gov>

Revision 23659  Directory Listing
Modified Mon Sep 8 07:08:36 2014 UTC (3 years ago) by jcfr
BUG: Fix crash in AddArchetypeScalarVolume checking MRMLScene validity

Revision 23657  Directory Listing
Modified Sat Sep 6 20:28:02 2014 UTC (3 years ago) by jcfr
ENH: Added a test for the ExtractSkeleton CLI. Fixes #3333

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

From: Dirk Padfield <padfield@ge.com>

Revision 23656  Directory Listing
Modified Sat Sep 6 19:29:46 2014 UTC (3 years ago) by pieper
BUG: 3808: fix failing test - add some pointer checks

Fixes regression detected here:

http://slicer.cdash.org/testDetails.php?test=5704490&build=266935

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 23652  Directory Listing
Modified Fri Sep 5 22:00:17 2014 UTC (3 years ago) by jcfr
ENH: Update GetCoefficientImage to GetCoeffiecientImages

Function renamed, and only available with ITKv3 compatibility.

From: Bradley Lowekamp <blowekamp@mail.nih.gov>

Revision 23651  Directory Listing
Modified Fri Sep 5 22:00:15 2014 UTC (3 years ago) by jcfr
ENH: Update to Testing::ComparisionImageFilter

Update deprecated usage of ComparisonImageFilter to
TestingComparisonImageFilter.

Migration:
http://itk.org/migrationv4/index.php?action=artikel&cat=3&id=113&artlang=en&highlight=ComparisonImageFilter

From: Bradley Lowekamp <blowekamp@mail.nih.gov>

Revision 23649  Directory Listing
Modified Fri Sep 5 20:58:45 2014 UTC (3 years ago) by pieper
ENH: fixed issue #2771 kill preivious storescp executables

The new logic will get the os process list and if (other) storescps are on
the list, it would warn the user and through a dialog asks for killing
these executables. The start listener button is checkable now and it is only
checked when the listner is running.

From: Alireza Mehrtash <mehrtash@bwh.harvard.edu>

Revision 23648  Directory Listing
Modified Fri Sep 5 20:16:45 2014 UTC (3 years ago) by pieper
BUG: fixes for 3808 fiducial picking issue

See http://na-mic.org/Bug/view.php?id=3808

Note that fixing this requires the corresponding fixes
to VTKv6 and LandmarkRegistration

https://github.com/pieper/LandmarkRegistration/commit/d9393f515b4798d9904fdd0383d959b91fc1edfb

https://github.com/pieper/VTK/commit/f3d6cc2503375724e60dd73d9a93ba9c764be26e

COMP: fix repository url and error macro usage

From: Steve Pieper <pieper@bwh.harvard.edu>

Revision 23646  Directory Listing
Modified Fri Sep 5 16:00:20 2014 UTC (3 years ago) by pieper
STYLE: add comments to SampleData class

Revision 23645  Directory Listing
Modified Wed Sep 3 21:17:51 2014 UTC (3 years ago) by lassoan
BUG: Fixed slice annotation not displayed for patient names containing international characters

Error log before the fix:

[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) - Traceback (most recent call last):
[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) -   File "C:/S4D/Slicer-build/lib/Slicer-4.3/qt-scripted-modules\DataProbeLib\SliceViewAnnotations.py", line 594, in updateCornerAnnotations
[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) -     self.makeAnnotationText(caller)
[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) -   File "C:/S4D/Slicer-build/lib/Slicer-4.3/qt-scripted-modules\DataProbeLib\SliceViewAnnotations.py", line 825, in makeAnnotationText
[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) -     self.drawCornerAnnotations()
[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) -   File "C:/S4D/Slicer-build/lib/Slicer-4.3/qt-scripted-modules\DataProbeLib\SliceViewAnnotations.py", line 976, in drawCornerAnnotations
[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) -     sliceCornerAnnotation.SetText(i, cornerAnnotation)
[INFO][Stream] 03.09.2014 17:00:41 [] (unknown:0) - TypeError: SetText argument 2: (unicode conversion error)

Revision 23639  Directory Listing
Modified Sun Aug 31 02:45:34 2014 UTC (3 years ago) by jcfr
BUG: EditBox: Ensure state variable are initialized before calling "create()"

This commit fixes regression introduced by r23636.

The following tests are now passing:
 * py_StandaloneEditorWidgetTest
 * py_ThresholdThreadingTest
 * py_NeurosurgicalPlanningTutorialMarkupsSelfTest

The associated error was:

Traceback (most recent call last):
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/Editor.py", line 244, in setup
    self.createEditBox()
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/Editor.py", line 280, in createEditBox
    self.toolsBox = EditorLib.EditBox(self.editBoxFrame, optionsFrame=self.effectOptionsFrame)
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/EditorLib/EditBox.py", line 74, in __init__
    self.create()
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/EditorLib/EditBox.py", line 289, in create
    self._onParameterNodeModified(self.editUtil.getParameterNode())
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/EditorLib/EditBox.py", line 105, in _onParameterNodeModified
    self._onEffectChanged(caller.GetParameter("effect"))
  File "/path/to/Slicer-build/lib/Slicer-4.3/qt-scripted-modules/EditorLib/EditBox.py", line 336, in _onEffectChanged
    if self.currentOption:
AttributeError: 'EditBox' object has no attribute 'currentOption'

Revision 23636  Directory Listing
Modified Fri Aug 29 19:01:53 2014 UTC (3 years ago) by jcfr
ENH: Editor: Effects are checkable and updated based on the parameter node

This commit ensures the button effect are checked or unchecked based
on the 'effect' property stored in the parameter node.

It also extends the EditUtil API adding function allowing to more easily
set and get the 'EraseLabel' state.

Revision 23635  Directory Listing
Modified Fri Aug 29 19:01:50 2014 UTC (3 years ago) by jcfr
ENH: EditBox: Simplify observation introducing the use of VTKObservationMixin

Revision 23632  Directory Listing
Modified Fri Aug 29 18:23:48 2014 UTC (3 years ago) by jcfr
COMP: Always set SOURCE_DIR variable for CLI modules

This commit will allow ResampleScalarVectorDWIVolume to be built
even if ResampleDTI is disabled.

This is needed because ResampleScalarVectorDWIVolume references
the source of ResampleDTI using the variable ResampleDTI_SOURCE_DIR

Revision 23628  Directory Listing
Modified Wed Aug 27 22:39:24 2014 UTC (3 years ago) by pieper
ENH: Fixed issues 3579, 3798 and other dicom browser improvements

Improvements:
* Added the table density control to the slicer dicom browser for
 controlling table densities in three levels: comact, cozy and
 comfortable. The default value would be compact. Changing the settings
 would be saved in slicer user settings.
* Re-arranged the patient, study and series search boxex so that the
 search box will be on the top of tables for both horizontal and vertical
 cases (This will add more space to dicom tables)
tables)
* The bug with browser size change on advanced view is fixed (issue #3