Package SlicerVMTKLevelSet :: Module SlicerVMTKInitializationIsosurfaceGUI
[hide private]
[frames] | no frames]

Source Code for Module SlicerVMTKLevelSet.SlicerVMTKInitializationIsosurfaceGUI

  1  from SlicerVMTKAdvancedPageSkeleton import SlicerVMTKAdvancedPageSkeleton 
  2  from Slicer import slicer 
  3   
  4  vtkKWPushButton_InvokedEvent = 10000 
  5  vtkKWThumbWheel_ValueChangedEvent = 10001 
  6  ### 
  7  ### fast marching initialization page (derived from skeleton) 
  8  ### 
9 -class SlicerVMTKInitializationIsosurfaceGUI(SlicerVMTKAdvancedPageSkeleton):
10
11 - def __init__(self,parentFrame,parentClass):
12 SlicerVMTKAdvancedPageSkeleton.__init__(self,parentFrame,parentClass) 13 14 self._firstRowFrame = slicer.vtkKWFrame() 15 16 self._isosurfaceLevelFrame = slicer.vtkKWFrameWithLabel() 17 18 self._isosurfaceLevelThumbWheel = slicer.vtkKWThumbWheel() 19 20 self._startButton = slicer.vtkKWPushButton() 21 22 23 self._resetButton = slicer.vtkKWPushButton()
24 25
26 - def Destructor(self):
27 SlicerVMTKAdvancedPageSkeleton.Destructor(self) 28 29 self._firstRowFrame.SetParent(None) 30 self._firstRowFrame = None 31 self._isosurfaceLevelFrame.SetParent(None) 32 self._isosurfaceLevelFrame = None 33 self._isosurfaceLevelThumbWheel.SetParent(None) 34 self._isosurfaceLevelThumbWheel = None 35 self._startButton.SetParent(None) 36 self._startButton = None 37 self._resetButton.SetParent(None) 38 self._resetButton = None
39
40 - def UpdateMRML(self):
41 SlicerVMTKAdvancedPageSkeleton.UpdateMRML(self) 42 43 44 node = self._parentClass.GetScriptedModuleNode() 45 46 node.SetParameter('IS_value', self._isosurfaceLevelThumbWheel.GetValue())
47
48 - def UpdateGUI(self):
49 SlicerVMTKAdvancedPageSkeleton.UpdateGUI(self) 50 51 node = self._parentClass.GetScriptedModuleNode() 52 53 self.UpdateGUIByState() 54 55 self._parentClass.SetUpdatingOn() 56 self._isosurfaceLevelThumbWheel.SetValue(node.GetParameter("IS_value")) 57 self._parentClass.SetUpdatingOff()
58 59 60 # belongs to UpdateGUI
61 - def UpdateGUIByState(self):
62 63 self._isosurfaceLevelFrame.AllowFrameToCollapseOff() 64 self._isosurfaceLevelFrame.SetLabelText("Isosurface Level of Gray Values") 65 self._isosurfaceLevelFrame.SetReliefToSunken() 66 67 self._isosurfaceLevelThumbWheel.ClampMinimumValueOn() 68 self._isosurfaceLevelThumbWheel.ClampMaximumValueOn() 69 #self._isosurfaceLevelThumbWheel.ClampResolutionOn() 70 self._isosurfaceLevelThumbWheel.SetLength(150) 71 72 inVolumeNode = self._parentClass._inVolumeSelector.GetSelected() 73 74 if inVolumeNode: 75 76 imageMaxValue = round(inVolumeNode.GetImageData().ToArray().max(),1) 77 imageMinValue = round(inVolumeNode.GetImageData().ToArray().min(),1) 78 self._parentClass.SetUpdatingOn() 79 self._isosurfaceLevelThumbWheel.SetRange(imageMinValue,imageMaxValue) 80 self._isosurfaceLevelThumbWheel.SetValue(round(imageMaxValue/2)) 81 self._parentClass.SetUpdatingOff() 82 83 else: 84 85 self._parentClass.SetUpdatingOn() 86 self._isosurfaceLevelThumbWheel.SetRange(0,100) 87 self._isosurfaceLevelThumbWheel.SetValue(15) 88 self._parentClass.SetUpdatingOff() 89 90 self._isosurfaceLevelThumbWheel.SetResolution(100) 91 self._isosurfaceLevelThumbWheel.DisplayLabelOn() 92 self._isosurfaceLevelThumbWheel.DisplayEntryOn() 93 self._isosurfaceLevelThumbWheel.DisplayEntryAndLabelOnTopOff() 94 self._isosurfaceLevelThumbWheel.GetLabel().SetText("Isosurface Level") 95 96 self._startButton.SetEnabled(1) 97 self._startButton.SetActiveBackgroundColor(0.9,0.9,0.9) 98 self._startButton.SetReliefToRaised() 99 self._startButton.SetBackgroundColor(0.9,0.9,0.9) 100 self._startButton.SetText("Start!") 101 self._startButton.SetHeight(2) 102 self._startButton.SetWidth(8) 103 self._startButton.SetBalloonHelpString("Click to start") 104 105 self._resetButton.SetEnabled(1) 106 self._resetButton.SetActiveBackgroundColor(0.9,0.9,0.9) 107 self._resetButton.SetReliefToRaised() 108 self._resetButton.SetBackgroundColor(0.9,0.9,0.9) 109 self._resetButton.SetText("Cancel") 110 self._resetButton.SetHeight(2) 111 self._resetButton.SetWidth(8) 112 self._resetButton.SetBalloonHelpString("Click to reset")
113
114 - def BuildGUI(self):
115 self._firstRowFrame.SetParent(self._parentFrame) 116 self._firstRowFrame.Create() 117 118 self._isosurfaceLevelFrame.SetParent(self._parentFrame) 119 self._isosurfaceLevelFrame.Create() 120 121 self._isosurfaceLevelThumbWheel.SetParent(self._isosurfaceLevelFrame.GetFrame()) 122 self._isosurfaceLevelThumbWheel.Create() 123 124 self._startButton.SetParent(self._parentFrame) 125 self._startButton.Create() 126 127 self._resetButton.SetParent(self._parentFrame) 128 self._resetButton.Create() 129 130 self.UpdateGUIByState() 131 132 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 2 -in %s" % (self._firstRowFrame.GetWidgetName(), self._parentFrame.GetWidgetName())) 133 134 slicer.TkCall("pack %s -side left -expand y -padx 2 -pady 2 -in %s" % (self._isosurfaceLevelFrame.GetWidgetName(), self._firstRowFrame.GetWidgetName())) 135 slicer.TkCall("pack %s -side left -expand y -padx 2 -pady 2" % (self._isosurfaceLevelThumbWheel.GetWidgetName())) 136 137 slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 2 -in %s" % (self._startButton.GetWidgetName(), self._parentFrame.GetWidgetName())) 138 slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 2 -in %s" % (self._resetButton.GetWidgetName(), self._parentFrame.GetWidgetName()))
139
140 - def AddGUIObservers(self):
141 SlicerVMTKAdvancedPageSkeleton.AddGUIObservers(self) 142 143 self._isosurfaceLevelThumbWheelTag = self._parentClass.AddObserverByNumber(self._isosurfaceLevelThumbWheel,vtkKWThumbWheel_ValueChangedEvent) 144 145 self._startButtonTag = self._parentClass.AddObserverByNumber(self._startButton,vtkKWPushButton_InvokedEvent) 146 147 self._resetButtonTag = self._parentClass.AddObserverByNumber(self._resetButton,vtkKWPushButton_InvokedEvent)
148 149 150 151
152 - def RemoveGUIObservers(self):
153 SlicerVMTKAdvancedPageSkeleton.RemoveGUIObservers(self) 154 155 self._parentClass.RemoveObserver(self._isosurfaceLevelThumbWheelTag) 156 self._parentClass.RemoveObserver(self._startButtonTag) 157 self._parentClass.RemoveObserver(self._resetButtonTag)
158 159 160 161
162 - def ProcessGUIEvents(self,caller,event):
163 SlicerVMTKAdvancedPageSkeleton.ProcessGUIEvents(self,caller,event) 164 165 if caller == self._startButton and event == vtkKWPushButton_InvokedEvent: 166 167 self._parentClass.GetHelper().debug("StartButton clicked..") 168 169 self.Execute() 170 171 elif caller == self._resetButton and event == vtkKWPushButton_InvokedEvent: 172 173 self._parentClass.GetHelper().debug("ResetButton clicked..") 174 175 self.Reset() 176 177 elif caller == self._isosurfaceLevelThumbWheel == vtkKWThumbWheel_ValueChangedEvent: 178 179 self.UpdateMRML()
180 181 182
183 - def Execute(self):
184 185 self._parentClass.SetUpdatingOn() 186 187 inVolumeNode = self._parentClass._inVolumeSelector.GetSelected() 188 isosurfaceValue = self._isosurfaceLevelThumbWheel.GetValue() 189 190 myLogic = self._parentClass.GetMyLogic() 191 resultContainer = myLogic.ExecuteIsosurface(inVolumeNode,isosurfaceValue) 192 resultContainer = self._parentClass.GetHelper().SetAndMergeInitVolume(resultContainer) 193 self._parentClass.GetHelper().GenerateInitializationModel(resultContainer) 194 195 self._parentClass.SetUpdatingOff() 196 self._parentClass._state = 1 197 self._parentClass.UpdateGUIByState() 198 self._parentClass.UpdateMRML() # save the results
199 200
201 - def Reset(self):
205