View Issue Details

IDProjectCategoryView StatusLast Update
0003956Slicer4Core: MRMLpublic2018-03-02 11:06
Reporterkikinis Assigned Tonicole  
PriorityhighSeverityblockReproducibilityhave not tried
Status closedResolutionfixed 
Product VersionSlicer 4.4.0 
Target VersionSlicer 4.5.0-1Fixed in VersionSlicer 4.5.0-1 
Summary0003956: Repeated saves of MRBs cause corruption
Description

From Ron and Sonia:
re-saving an MRB causes the fiducial list files to be empty (header is correct, no entries), and scene view thumbnails saved to the wrong directory level, file names with appended extensions (usually ones that have double extensions like .nii.gz), and fileListMember entries with incorrect relative paths.

Steps To Reproduce

To be simplified later, the key seems to be restoring a scene view:

Download sample data MRHead
Add fiducials
Save as MRB.
Close scene.
Reload the MRB
Add fiducials to the list, make a scene view.
Save the MRB again: related bug for save location: 3689, changing the save dir to a new dir, the paths for unmodified data don't get updated away from the temp expansion directory.
Close the scene.
Open the second MRB
Save to MRB again (resetting the dir this time doesn't change the path to the fids file).
Open the third MRB.
Restore the scene view.
Save a fourth MRB.
Close scene.
Load the fourth MRB - no fiducials

TagsNo tags attached.

Relationships

related to 0003689 closedjcfr MRB saving - remember last save location 
related to 0003961 closednicole Problem with removing all markups from a fiducial list 
related to 0002816 feedbackalexy Restoring scene views from MRB 
related to 0003992 closednicole LUT lost when changing scene views 
related to 0003584 closednicole Don't create VolumeNode when reading fails 
related to 0004033 closednicole Duplicated event when a new vtkMRMLScalarVolumeNode is added to the scene 
related to 0003888 closedjcfr Double .vtk extension when saving models with .vtk in the name 

Activities

nicole

nicole

2015-02-10 10:33

administrator   ~0012904

Test written showing simplified steps to reproduce this bug:
Set up a scene with a volume and a fiducial list.
Save scene views.
Save to MRB.
Close scene, reload MRB, restore scene view, save to MRB.
Reload the MRB (fiducial list size is zero)

https://github.com/naucoin/Slicer/commit/eb05c4fae83166c1704df22aa40228db41add442

nicole

nicole

2015-02-13 10:46

administrator   ~0012910

Added more fixes to the branch:
https://github.com/naucoin/Slicer/commits/3956-Repeated-saves-of-MRBs-cause-corruption
Fixed file names so that they're not getting longer and longer.
Removed an extra storage node from sample data.
Update the file list members when saving to MRB.

nicole

nicole

2015-02-17 12:31

administrator   ~0012918

Getting closer to the empty fid list:
Set up a scene with a volume and a fiducial list.
Save scene views.
Save to MRB.
Close scene, reload MRB, restore scene view, the fid list is empty here but fids are still showing in 2d and 3d. Relates to bug 3961.

nicole

nicole

2015-02-18 11:05

administrator   ~0012921

When a new fiducial list is made, no storage node is added. If you then make a new scene view, the scene view also doesn't contain a fiducial storage node (same thing for loading a sample data volume after my change to clear out the storage node properly).
Then when you save the scene to disk, the main scene fiducial node gets a new storage node (added as soon as you hit the save button as the save dialog updates nodes and ensures every storable has a storage node) so that the fids file can be written to disk, but there's still no storage node in the scene view. So when you restore that scene view, the fiducials get cleared out in the Copy method but not added back in because there's no storage node from which to read (another issue regarding if storables should have their storage nodes in the scene views).
A few possible approaches:

  • on store scene you can detect that storable nodes are missing storage nodes, add them in to the main scene and the scene view scene there
  • create default storage nodes for all storables on construction (too pervasive)
  • on saving the scene and writing the scene view, update/add storage nodes as needed from the main scene? this might over write wanted changes
  • does the volume node work okay when restoring a scene view that doesn't have a storage node? can we make the fiducial node mirror that? (current dev copy crashing after going to volumes module, so suspect not working)

Exploring the first option.

nicole

nicole

2015-02-18 12:58

administrator   ~0012922

First option didn't help much, on restore scene the scene view copy of the fid list doesn't have any fiducials.

nicole

nicole

2015-02-19 11:36

administrator   ~0012923

Found a different option that works: when the scene is restoring and the scene view fiducial list is empty, don't clear out the data in teh current node. See verbose commit messages on this branch:
https://github.com/naucoin/Slicer/commits/3956-Repeated-saves-of-MRBs-cause-corruption
especially this commit:
https://github.com/naucoin/Slicer/commits/3956-Repeated-saves-of-MRBs-cause-corruption
I added the commit that adds missing storage nodes, but it's optional, and I'll be getting some more developer feedback before pushing the changes to Slicer.

nicole

nicole

2015-02-19 11:39

administrator   ~0012924

Reminder sent to: jcfr, pieper

Feedback requested on the 8 commits on the branch:
https://github.com/naucoin/Slicer/commits/3956-Repeated-saves-of-MRBs-cause-corruption

Steve: this runs into the scene view restore with different data having been saved to a scene view than in the scene. I'm not tied to the last commit (adding missing storage nodes) because it doesn't make a functional difference as far as I can tell but it makes the mrml files more "correct".

pieper

pieper

2015-02-19 13:26

administrator   ~0012925

Hmm, looks like you are on the right track but I don't really have the cycles to fully digest this right now. Having more extensive tests is definitely a great thing, so we can define the behavior we would expect to have when everything is working.

I see you have added a new test but having some more would be helpful I think, like running the save/restore many times in a loop and seeing what happens to the scene. Also adding various node types (maybe one of each Storable) to confirm they load and save correctly. This might, I hope, expose some patterns of behavior that would help us better understand how the detail issues are working.

As you note there is a lot going on here!

nicole

nicole

2015-02-19 13:50

administrator   ~0012926

I think the main issues with MRBs and scene views are still the things from bug 2816 - changes to data that's only saved on disk won't get restored. That bug is still in feedback right now though, I don't think we ever agreed on a final solution. My fixes on this branch fix a few of the book keeping issues but there's a larger semantic one. I'll add it to the developer hangout agenda for next week.
I narrowed down most of the issues to be reproducible in one round of create scene views, save to disk, close scene, load, restore scene views, and the test on this branch exercises that. Granted, there may be more cases I didn't find (there's still a big to do in terms of dealing with one of the default scene views on MRB save), but it does test two different kinds of storable nodes.

pieper

pieper

2015-02-19 13:56

administrator   ~0012927

Okay, yes, discussing it in the hangout should help. Maybe you can screenshare and show the test and the behaviors that are/aren't working correctly. Maybe you can focus on coming up with a concise description of the semantic issue you find with scene views. Now might be the time to change the behavior so that they are well defined with respect to storables and mrbs.

nicole

nicole

2015-02-23 12:22

administrator   ~0012929

Added notes to the developer meeting about the semantic issues, let me know if it needs another clarifying pass:
http://www.slicer.org/slicerWiki/index.php/Developer_Meetings/20150224

nicole

nicole

2015-02-24 07:34

administrator   ~0012933

Master Scene View is getting skipped for path updates, see this commit:
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=22325
Current code if you:
add sample data
save to MRB
there is no master scene view, the data bundle scene view is added and then removed.
You only seem to get a master scene view if you save to mrml first, then save to MRB. Between the save to mrml and the save to MRB you could have closed the scene and reopened it and done other things, so the master scene view does need to also get updated.
The master scene view gets explicitly skipped in:
Base/QTGUI/qSlicerNodeWriter.cxx
Base/QTGUI/qSlicerSaveDataDialog.cxx
Libs/MRML/Logic/vtkMRMLApplicationLogic.cxx

Larger question: should there only be one master scene view per scene, or should they be renamed to show the save date/time if there are multiple ones? The MRB save process seems to ensure only one data bundle scene view, and does enforce a unique name.

nicole

nicole

2015-04-28 10:47

administrator   ~0013025

Current git hub branch:
https://github.com/naucoin/Slicer/tree/3956-Repeated-saves-of-MRBs-cause-corruption-rebase

nicole

nicole

2015-06-10 11:39

administrator   ~0013123

Pull request with 27 commits:
https://github.com/Slicer/Slicer/pull/288

nicole

nicole

2015-07-07 10:28

administrator   ~0013173

Integrated as of SVN 24399:
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24399

nicole

nicole

2015-07-28 14:59

administrator   ~0013195

Topic branch warning users when scene view restore will delete data, with option to save data to the scene view:
https://github.com/naucoin/Slicer/tree/3956-warn-when-sceneview-restore-will-delete-data

jcfr

jcfr

2015-07-28 15:45

administrator   ~0013196

+1 Topic "3956-warn-when-sceneview-restore-will-delete-data " looks good

nicole

nicole

2015-08-04 08:17

administrator   ~0013225

Squashed, rebased, pull request: https://github.com/Slicer/Slicer/pull/313

nicole

nicole

2015-08-12 10:01

administrator   ~0013239

Integrated in svn 24491 (CTK version bump) and 24493 (warning the user on scene view restore):
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24491
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24493

nicole

nicole

2015-09-15 10:23

administrator   ~0013273

Pull request for fixing missed volume property files:
https://github.com/Slicer/Slicer/pull/341

nicole

nicole

2015-09-28 10:06

administrator   ~0013322

Added the general check in the save data dialogue to the pull request:
https://github.com/naucoin/Slicer/commit/079a417891d351cee9300ae2b0d8d628713167d8

nicole

nicole

2015-09-29 14:24

administrator   ~0013324

Integrated:
Volume property file fix
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24583
Save data dialog fix
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24584

Related Changesets

Import 2017-06-07 23:51:09: master 64f2ebc2

2015-07-07 13:52:40

naucoin

Details Diff
BUG: adding a test to show MRB and scene view bug

Set up a scene with a volume and a fiducial list.
Save scene views.
Save to MRB.
Close scene, reload MRB, restore scene view, save to MRB.
Reload the MRB and make sure that the volume and fiducial
list are as expected - when this bug is not fixed, the
fiducial list size will be zero at this point.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24370 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Applications/SlicerApp/Testing/Python/CMakeLists.txt Diff File
add - Applications/SlicerApp/Testing/Python/SlicerMRBMultipleSaveRestoreTest.py Diff File

Import 2017-06-07 23:51:09: master 9d3738d1

2015-07-07 13:52:44

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24371 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Scripted/SampleData/SampleData.py Diff File

Import 2017-06-07 23:51:09: master 3fd97443

2015-07-07 13:52:48

naucoin

Details Diff
BUG: check for compressed file names

Get the complete extension when files have paths that end in X.gz.
This fixes bugs that came from multiple saves where a file might
end up with the name brain.nii.nii.nii.nii.gz.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24372 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/QTGUI/qSlicerNodeWriter.cxx Diff File
mod - Base/QTGUI/qSlicerSaveDataDialog.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLStorageNode.cxx Diff File

Import 2017-06-07 23:51:09: master 17f2807b

2015-07-07 13:52:51

naucoin

Details Diff
BUG: update file list members when saving MRBs

The file lists were not getting updated when volumes with
multiple files listed were saved in the default format of nrrd.
This change saves and restores the file list around MRB saving.
Fixed the unique file name to not just append .nrrd to the end
of the current file name.
TODO: deal with the file lists in the storage nodes in the
master scene view (problem when save a scene as mrml then
save it to mrb).

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24373 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.cxx Diff File
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.h Diff File

Import 2017-06-07 23:51:09: master 43e94a5a

2015-07-07 13:52:54

naucoin

Details Diff
BUG: fix scene view storage leak on MRB save

The new scene view storage node that was created to
save a scene view snapshot for a new MRB wasn't being
removed from the scene due to a variable scoping issue.
Renamed the variable and stopped it from being hidden and
remove it from the scene and delete as necessary.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24374 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.cxx Diff File

Import 2017-06-07 23:51:09: master f07b0fbe

2015-07-07 13:52:58

naucoin

Details Diff
BUG: update test with more correct visibility toggles

Digging into the missing fiducials data I realised that on MRB
load and then scene view restore the individual fiducial visibility
will not get saved/restored in scene views since that information is
saved in the file on disk, only the list level visibility is saved.
Updated the test to only test list level fiducial visibility.

TBD: find a backward compatible way to move the per markup visibility
into the markups display node. This behaviour is confusing since
from a freshly started Slicer in which you create new scene views, the
per markup visibility toggling does work (node copies are in memory),
it will just cease to work once the scene is saved to disk and then
re-opened.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24375 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Applications/SlicerApp/Testing/Python/SlicerMRBMultipleSaveRestoreTest.py Diff File

Import 2017-06-07 23:51:09: master 1440084b

2015-07-07 13:53:01

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24376 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Markups/MRML/vtkMRMLMarkupsNode.cxx Diff File

Import 2017-06-07 23:51:09: master 7718bca3

2015-07-07 13:53:04

naucoin

Details Diff
BUG: add missing storage nodes on scene view save

This is an optional fix, the issue is fixed without it but it
is something that I ran across while digging into the series
of bugs that needed fixing. If you open up Slicer, add a fiducial
and a downloaded sample data volume, then save a scene view, the scene view
is missing storage nodes for those nodes since they haven't been saved yet.
Then when you save the scene to disk, storage nodes are created
(usually by the save data dialog) and added to the main scene.
Now there's a mismatch between the nodes in the main scene, the scene
view saved at the save to disk moment, and the old scene view.

This change checks for storable nodes that are to go into a scene view and
adds storage nodes for them to avoid that node mismatch.

The reason it's optional is that on scene load, the storage nodes are not
triggered to read (and they currently all point to the same file name anyway).
The MRB-Scene View multiple saves and restores test passes without this, but it
makes the mrml file more clean to have matching storage nodes in all scene views.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24377 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Core/vtkMRMLSceneViewNode.cxx Diff File

Import 2017-06-07 23:51:09: master b62148ee

2015-07-07 13:53:07

naucoin

Details Diff
BUG: use smart pointers for leaking storage node

Thanks to JC for pointing out a better way to manage the
new scene view storage node, this change switches to
using a smart pointer.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24378 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.cxx Diff File

Import 2017-06-07 23:51:09: master b51b8c79

2015-07-07 13:53:11

naucoin

Details Diff
BUG: use smart pointers for new storage nodes

From JC, use smart pointers for new storable node
storage nodes being added to scene views.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24379 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Core/vtkMRMLSceneViewNode.cxx Diff File

Import 2017-06-07 23:51:09: master c6d6ec14

2015-07-07 13:53:15

naucoin

Details Diff
BUG: implement a Slicer specific Qt file suffix

In the MRML storage node it is dealing correctly with tricky
file names like brain.1.nii.gz to return the proper suffix. In
Qt we were relying on completeSuffix but that was returning
everything after the first dot in the file name and would fail
on that example case. This change leverages the storage nodes
to gather a list of valid file suffixes and compares them against
the file name endings and returns a matching one. Special case
included if .* is a valid Slicer suffix, that goes back to
Qt's completeSuffix call.
Note: tried calling fileWriterExtensions and ran into a crash
as it was trying to add new storage nodes to the scene.
Use the new suffix in the save data dialog and node writer.
Added testing, more file name cases can be added easily.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24380 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/QTCore/Testing/Cxx/qSlicerCoreIOManagerTest1.cxx Diff File
mod - Base/QTCore/qSlicerCoreIOManager.cxx Diff File
mod - Base/QTCore/qSlicerCoreIOManager.h Diff File
mod - Base/QTGUI/qSlicerNodeWriter.cxx Diff File
mod - Base/QTGUI/qSlicerSaveDataDialog.cxx Diff File

Import 2017-06-07 23:51:09: master 7666fb8a

2015-07-07 13:53:20

naucoin

Details Diff
BUG: function name clarification, add getting readable extensions

Thanks to comments from JC:
Renamed completeSlicerSuffix to ompleteSlicerWritableFileNameSuffix
in order to make it explicit that this was only checking writable extensions.
Renamed allFileExtensions to allWritableFileExtensions to be more clear
as well as adding the equivalent call for readable extensions, allReadableFileExtensions

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24381 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/QTCore/Testing/Cxx/qSlicerCoreIOManagerTest1.cxx Diff File
mod - Base/QTCore/qSlicerCoreIOManager.cxx Diff File
mod - Base/QTCore/qSlicerCoreIOManager.h Diff File
mod - Base/QTGUI/qSlicerNodeWriter.cxx Diff File
mod - Base/QTGUI/qSlicerSaveDataDialog.cxx Diff File

Import 2017-06-07 23:51:09: master 68a6db7c

2015-07-07 13:53:24

naucoin

Details Diff
BUG: warn the user when they add storable data after scene views

When a storable node is added to the scene after scene views,
warn the user that restoring a scene view will lose the newly
added data.

To avoid too many pop ups, don't warn during batch processing.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24382 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.cxx Diff File
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.h Diff File

Import 2017-06-07 23:51:09: master 785b4454

2015-07-07 13:53:31

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24383 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx Diff File
mod - Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.h Diff File

Import 2017-06-07 23:51:09: master cc0cc610

2015-07-07 13:53:34

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24384 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx Diff File

Import 2017-06-07 23:51:09: master ab2676a1

2015-07-07 13:53:41

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24385 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/Logic/vtkSlicerApplicationLogic.cxx Diff File
mod - Base/Logic/vtkSlicerApplicationLogic.h Diff File
mod - Base/QTCore/qSlicerCoreApplication.cxx Diff File
mod - Base/QTCore/qSlicerCoreApplication.h Diff File
mod - Base/QTCore/qSlicerCoreApplication_p.h Diff File
mod - Libs/MRML/Logic/vtkMRMLRemoteIOLogic.cxx Diff File
mod - Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx Diff File

Import 2017-06-07 23:51:09: master 9d69cc06

2015-07-07 13:53:45

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24386 3bd1e089-480b-0410-8dfb-8563597acbee
add - Modules/Loadable/SceneViews/Testing/Python/AddStorableDataAfterSceneViewTest.py Diff File
mod - Modules/Loadable/SceneViews/Testing/Python/CMakeLists.txt Diff File

Import 2017-06-07 23:51:09: master b651869b

2015-07-07 13:53:49

naucoin

Details Diff
COMP: fix test name for label

Configuration was failing with the previous name for the new scripted self test.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24387 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/SceneViews/Testing/Python/CMakeLists.txt Diff File

Import 2017-06-07 23:51:09: master 904f2c42

2015-07-07 13:53:56

naucoin

Details Diff
BUG: reduce message noise

When adding a storable node to the scene after a scene view has
been added, make sure that only nodes that are saved with the
scene generate the warning.
Cleaned up debugging messages by changing warning to debug macros.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24389 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.cxx Diff File
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.cxx Diff File

Import 2017-06-07 23:51:09: master 1721c0ef

2015-07-07 13:54:03

naucoin

Details Diff
ENH: stress test saving and restoring MRBs, util methods added

Add a test to save and restore MRBs in a loop, fixing the bug note in the
save restore test as well.
Clean up the testing of saving and loading MRBs by exposing the core io
manager loadScene method to Python, and adding a saveScene one. This will
simplify testing since it uses detects that it needs to use the scene writer
which will use the application logic save to MRB bundle directory + zip calls,
so from python you won't need to make the two calls with attendant managing of
temporary directories. Added a note to the application logic header file
pointing to saveScene for general use.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24390 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Applications/SlicerApp/Testing/Python/CMakeLists.txt Diff File
add - Applications/SlicerApp/Testing/Python/SlicerMRBMultipleSaveRestoreLoopTest.py Diff File
mod - Applications/SlicerApp/Testing/Python/SlicerMRBMultipleSaveRestoreTest.py Diff File
mod - Base/QTCore/qSlicerCoreIOManager.cxx Diff File
mod - Base/QTCore/qSlicerCoreIOManager.h Diff File
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.h Diff File

Import 2017-06-07 23:51:09: master 5a954215

2015-07-07 13:54:22

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24391 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx Diff File

Import 2017-06-07 23:51:09: master ad493e38

2015-07-07 13:54:25

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24392 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Volumes/Logic/vtkSlicerVolumesLogic.cxx Diff File

Import 2017-06-07 23:51:09: master e6477abb

2015-07-07 13:54:31

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24393 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Core/Testing/vtkMRMLFiberBundleNodeTest1.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLCoreTestingMacros.h Diff File
mod - Libs/MRML/Core/vtkMRMLNode.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLNode.h Diff File
mod - Libs/MRML/Core/vtkMRMLParser.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLScene.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLStorageNode.cxx Diff File
mod - Modules/Loadable/Data/qSlicerSceneWriter.cxx Diff File

Import 2017-06-07 23:51:09: master d34213e3

2015-07-07 13:54:36

naucoin

Details Diff
BUG: Add a test that checks file paths after MRML and MRB save/load

Add a test that checks the paths in the scene with saving to mrml (have to force
a write of a sample data node since the saveScene call only writes out the MRML file,
no storage nodes are triggered to write) and MRB and reloading and saving to MRB.
Remove skipping the master scene view as paths of storage nodes there do need to be updated.
TBD: fix the paths after saving the MRB a second time (they get reset to the deleted bundle directory from the first MRB save).

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24394 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Applications/SlicerApp/Testing/Python/CMakeLists.txt Diff File
add - Applications/SlicerApp/Testing/Python/SlicerMRBSaveRestoreCheckPathsTest.py Diff File
mod - Libs/MRML/Core/vtkMRMLSceneViewNode.cxx Diff File
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.cxx Diff File

Import 2017-06-07 23:51:09: master b29d28c9

2015-07-07 13:54:42

naucoin

Details Diff
BUG: update file list members, scene vars, update test

Update the MRB save/restore test to use the slicer util delayDisplay method,
as well as not counting file paths that point to the deleted bundle
expansion directory.
In scene view nodes make sure to also reset the file list
Restore the url and root direcotry after saving a scene to the data bundle
directory so that absolute paths can be calculatediproperly

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24395 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Applications/SlicerApp/Testing/Python/SlicerMRBSaveRestoreCheckPathsTest.py Diff File
mod - Base/QTCore/qSlicerSceneBundleReader.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLSceneViewNode.cxx Diff File
mod - Libs/MRML/Logic/vtkMRMLApplicationLogic.cxx Diff File

Import 2017-06-07 23:51:09: master bed28d5a

2015-07-07 13:54:45

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24396 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/Data/qSlicerSceneWriter.cxx Diff File

Import 2017-06-07 23:51:09: master 1589f1c2

2015-07-07 13:54:49

naucoin

Details Diff
BUG: only time out extra storable message during testing

The pop up window that gives the user feedback about how
not to lose new storable data after creating a scene view
was timing out before some testers could finish reading
and understanding the information. Added a boolean property
to the capture tool bar, popupsTimeOut, that the main
window can set to true when the enable testing attribute
has been turned on. Verified that the test
AddStorableDataAfterSceneViewTest
still passes and doesn't hang.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24397 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Applications/SlicerApp/qSlicerAppMainWindow.cxx Diff File
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.cxx Diff File
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.h Diff File

Import 2017-06-07 23:51:09: master 96d3e073

2015-07-07 13:54:52

naucoin

Details Diff
STYLE: add blank lines to warning message

Make the message more readable by adding white space.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24398 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.cxx Diff File

Import 2017-06-07 23:51:09: master ce8488e6

2015-07-07 13:55:01

naucoin

Details Diff
BUG: remove storable added after scene view message

Testing showed that this was confusing, remove the observation
on node added events from the capture toolbar as well as the
pop up message. Leaves the popup timeout flag for future messages.
TODO: move the test to on scene view about to be restored.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24399 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.cxx Diff File
mod - Libs/MRML/Widgets/qMRMLCaptureToolBar.h Diff File

Import 2017-06-07 23:51:09: master 399bc48a

2015-07-07 15:30:53

naucoin

Details Diff
BUG: update test to fix regression

Update the scene view node store test to take into
account the newly added storage nodes in scene view scenes.

Issue 0003956



git-svn-id: http://svn.slicer.org/Slicer4/trunk@24401 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Core/Testing/vtkMRMLSceneViewNodeStoreSceneTest.cxx Diff File

Import 2017-06-07 23:51:09: master cfd202cb

2015-07-07 15:39:24

naucoin

Details Diff
BUG: fix regression introduced by adding storage nodes to scene views

Update the test to check for the correct number of nodes, 3 to include
the added storage node in the scene view.

Issue 0003956



git-svn-id: http://svn.slicer.org/Slicer4/trunk@24402 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Core/Testing/vtkMRMLSceneViewNodeImportSceneTest.cxx Diff File

Import 2017-06-07 23:51:09: master a1b0691e

2015-08-11 19:09:33

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24493 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Libs/MRML/Core/vtkMRMLSceneViewNode.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLSceneViewNode.h Diff File
mod - Libs/MRML/Widgets/qMRMLSceneViewMenu.cxx Diff File
mod - Modules/Loadable/SceneViews/GUI/qSlicerSceneViewsModuleWidget.cxx Diff File
mod - Modules/Loadable/SceneViews/Logic/vtkSlicerSceneViewsModuleLogic.cxx Diff File
mod - Modules/Loadable/SceneViews/Logic/vtkSlicerSceneViewsModuleLogic.h Diff File
mod - Modules/Loadable/SceneViews/Testing/Python/AddStorableDataAfterSceneViewTest.py Diff File

Import 2017-06-07 23:51:09: master 4f65338f

2015-09-29 17:48:02

naucoin

Details Diff
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 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24583 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Modules/Loadable/VolumeRendering/Logic/Testing/Cxx/CMakeLists.txt Diff File
add - Modules/Loadable/VolumeRendering/Logic/Testing/Cxx/vtkSlicerVolumeRenderingLogicAddFromFileTest.cxx Diff File
mod - Modules/Loadable/VolumeRendering/Logic/vtkSlicerVolumeRenderingLogic.cxx Diff File
mod - Modules/Loadable/VolumeRendering/MRML/vtkMRMLVolumePropertyStorageNode.cxx Diff File
mod - Modules/Loadable/VolumeRendering/MRML/vtkMRMLVolumePropertyStorageNode.h Diff File

Import 2017-06-07 23:51:09: master c44f73b3

2015-09-29 17:48:06

naucoin

Details Diff
ENH: remove doubled extenions before saving

Some nodes when they are read in by the node readers end up with names that
include the extension, such as vol.vp. This change ensures that the
known extension will not be added to the end of the name to create a file
name with a doubled extension, such as vol.vp.vp.
Fixed a typo in a variable name.

Issue 0003956

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24584 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/QTGUI/qSlicerSaveDataDialog.cxx Diff File

Issue History

Date Modified Username Field Change
2015-02-10 05:38 nicole New Issue
2015-02-10 05:38 nicole Status new => assigned
2015-02-10 05:38 nicole Assigned To => nicole
2015-02-10 05:39 nicole Reporter nicole => kikinis
2015-02-10 05:39 nicole Relationship added related to 0003689
2015-02-10 10:33 nicole Note Added: 0012904
2015-02-13 10:46 nicole Note Added: 0012910
2015-02-17 12:30 nicole Relationship added related to 0003961
2015-02-17 12:31 nicole Note Added: 0012918
2015-02-18 11:05 nicole Note Added: 0012921
2015-02-18 12:58 nicole Note Added: 0012922
2015-02-19 11:36 nicole Note Added: 0012923
2015-02-19 11:39 nicole Note Added: 0012924
2015-02-19 11:41 nicole Relationship added related to 0002816
2015-02-19 13:26 pieper Note Added: 0012925
2015-02-19 13:50 nicole Note Added: 0012926
2015-02-19 13:56 pieper Note Added: 0012927
2015-02-23 12:22 nicole Note Added: 0012929
2015-02-24 07:34 nicole Note Added: 0012933
2015-04-28 10:41 nicole Relationship added related to 0003992
2015-04-28 10:47 nicole Note Added: 0013025
2015-06-10 11:39 nicole Note Added: 0013123
2015-07-07 10:28 nicole Note Added: 0013173
2015-07-07 10:28 nicole Status assigned => resolved
2015-07-07 10:28 nicole Fixed in Version => Slicer 4.5.0-1
2015-07-07 10:28 nicole Resolution open => fixed
2015-07-28 14:59 nicole Note Added: 0013195
2015-07-28 15:45 jcfr Note Added: 0013196
2015-08-03 23:02 jcfr Relationship added related to 0003584
2015-08-04 08:17 nicole Note Added: 0013225
2015-08-12 10:01 nicole Note Added: 0013239
2015-08-18 12:46 nicole Relationship added related to 0004033
2015-09-09 08:29 jcfr Target Version Slicer 4.4.1 => Slicer 4.5.0-1
2015-09-15 10:23 nicole Note Added: 0013273
2015-09-28 10:06 nicole Note Added: 0013322
2015-09-29 14:24 nicole Note Added: 0013324
2015-11-30 18:20 jcfr Relationship added has duplicate 0003888
2015-11-30 18:20 jcfr Relationship deleted has duplicate 0003888
2015-11-30 18:20 jcfr Relationship added related to 0003888
2017-06-10 08:51 Changeset attached => Slicer master c44f73b3
2017-06-10 08:51 Changeset attached => Slicer master 4f65338f
2017-06-10 08:51 Changeset attached => Slicer master a1b0691e
2017-06-10 08:51 Changeset attached => Slicer master cfd202cb
2017-06-10 08:51 Changeset attached => Slicer master 399bc48a
2017-06-10 08:51 Changeset attached => Slicer master ce8488e6
2017-06-10 08:51 Changeset attached => Slicer master 96d3e073
2017-06-10 08:51 Changeset attached => Slicer master 1589f1c2
2017-06-10 08:51 Changeset attached => Slicer master bed28d5a
2017-06-10 08:51 Changeset attached => Slicer master b29d28c9
2017-06-10 08:51 Changeset attached => Slicer master d34213e3
2017-06-10 08:51 Changeset attached => Slicer master e6477abb
2017-06-10 08:51 Changeset attached => Slicer master ad493e38
2017-06-10 08:51 Changeset attached => Slicer master 5a954215
2017-06-10 08:51 Changeset attached => Slicer master 1721c0ef
2017-06-10 08:51 Changeset attached => Slicer master 904f2c42
2017-06-10 08:51 Changeset attached => Slicer master b651869b
2017-06-10 08:51 Changeset attached => Slicer master 9d69cc06
2017-06-10 08:51 Changeset attached => Slicer master ab2676a1
2017-06-10 08:51 Changeset attached => Slicer master cc0cc610
2017-06-10 08:51 Changeset attached => Slicer master 785b4454
2017-06-10 08:51 Changeset attached => Slicer master 68a6db7c
2017-06-10 08:51 Changeset attached => Slicer master 7666fb8a
2017-06-10 08:51 Changeset attached => Slicer master c6d6ec14
2017-06-10 08:51 Changeset attached => Slicer master b51b8c79
2017-06-10 08:51 Changeset attached => Slicer master b62148ee
2017-06-10 08:51 Changeset attached => Slicer master 7718bca3
2017-06-10 08:51 Changeset attached => Slicer master 1440084b
2017-06-10 08:51 Changeset attached => Slicer master f07b0fbe
2017-06-10 08:51 Changeset attached => Slicer master 43e94a5a
2017-06-10 08:51 Changeset attached => Slicer master 17f2807b
2017-06-10 08:51 Changeset attached => Slicer master 3fd97443
2017-06-10 08:51 Changeset attached => Slicer master 9d3738d1
2017-06-10 08:51 Changeset attached => Slicer master 64f2ebc2
2018-03-02 11:06 jcfr Status resolved => closed