1. 26 Aug, 2010 5 commits
  2. 24 Aug, 2010 2 commits
  3. 23 Aug, 2010 1 commit
  4. 20 Aug, 2010 1 commit
  5. 17 Aug, 2010 2 commits
  6. 16 Aug, 2010 3 commits
    • haehn's avatar
      BUG: Prevent assert to kill Slicer when Python is not enabled. · 6e8ff9c0
      haehn authored
      git-svn-id: http://svn.slicer.org/Slicer4/trunk@14592 3bd1e089-480b-0410-8dfb-8563597acbee
      6e8ff9c0
    • pieper's avatar
      ENH: expose access to the interactor style for the sliceview · 72415d64
      pieper authored
      git-svn-id: http://svn.slicer.org/Slicer4/trunk@14587 3bd1e089-480b-0410-8dfb-8563597acbee
      72415d64
    • jcfr's avatar
      ENH: Added vtkMRMLScriptedDisplayableManager class · b0944f48
      jcfr authored
      Since it's not possible to derive a VTK class in python (and for that same
      reason rely on polymorphism), the vtkMRMLScriptedDisplayableManager C++
      class is a "proxy" allowing to interface a DisplayableManager written in python.
      
      A scripted DisplayableManager should expose the following methods:
         - Create
         - GetMRMLSceneEventsToObserve
         - ProcessMRMLEvents
         - RemoveMRMLObservers
         - UpdateFromMRML
         - OnInteractorStyleEvent
         - OnMRMLDisplayableNodeModifiedEvent
      
      In addition to register vtk class names, the MRMLDisplayableManager factory
      can now register scripted displayableManager represented by a path
      to a python script ending with ".py".
      
      qSlicerLayoutManager now provide method setScriptedDisplayableManagerDirectory
      allowing to set from which directory the scripted displayableManager
      should be "sourced" from.
      Similarly, the code in qMRMLSliceWidget and qMRMLThreeDView allowing to
      register the displayableManager have been factored out into a method named:
       - registerDisplayableManagers(const QString& scriptedDisplayableManagerDirectory);
      
      
      Below are more details explaining how a scripted displayable manager could
      be implemented:
       The constructor has one parameter named 'parent' corresponding to the associated instance of
       vtkScriptedDisplayableManager in the C++ world.
      
       The python methods listed above corresponds to the implementation of the virtual method
       available in vtkScriptedDisplayableManager.
      
       The only exception is the virtual method SetMRMLSceneInternal, the python class only needs to
       implement the method GetMRMLSceneEventsToObserve. This later one just return a list of integer
       representing the eventid to observe.
      
       It's also possible to access the API of the associated C++ instance using the self.Parent
       For example:
         self.Parent.RemoveInteractorStyleObservableEvent(26) # vtkCommand::MouseWheelForwardEvent
      
       Make also sure NOT to call the corresponding C++ method from it's python equivalent, it will
       result in an infinite loop.
       The following statement will likely lead to an unstable state:
          def Create(self): self.Parent.Create()
      
       If a a method isn't implemented, the following syntax should be used:
         def Create(self): pass
      
       NOTE
         Ideally, a DisplayableManager should deal only with MRMLNodes. Incriminated code should
       be moved either in the DisplayableManager itself, in the associated MRML Node or
       in a MRMLNode helper class.
      
       TODO
         While porting existing code, to overcome this problem, the following need to be done:
           - DisplayableManager abstract base class should have a reference to the current MRMLApplicationLogic
          - The MRMLApplicationLogic should contain a map of logics
          - The list of logic internally used by the qSlicerLayoutManager should be removed and
           the list from the MRMLApplicationLogic used instead.
      
      git-svn-id: http://svn.slicer.org/Slicer4/trunk@14581 3bd1e089-480b-0410-8dfb-8563597acbee
      b0944f48
  7. 12 Aug, 2010 1 commit
  8. 11 Aug, 2010 1 commit
  9. 10 Aug, 2010 3 commits
  10. 07 Aug, 2010 4 commits
  11. 06 Aug, 2010 2 commits
  12. 05 Aug, 2010 7 commits
  13. 04 Aug, 2010 2 commits
  14. 02 Aug, 2010 1 commit
  15. 28 Jul, 2010 5 commits