1 from SlicerVMTKAdvancedPageSkeleton import SlicerVMTKAdvancedPageSkeleton
2 from Slicer import slicer
3
4 vtkKWPushButton_InvokedEvent = 10000
5 vtkKWExtent_EndChangeEvent = 10002
6
7
8
10
11 - def __init__(self,parentFrame,parentClass):
12 SlicerVMTKAdvancedPageSkeleton.__init__(self,parentFrame,parentClass)
13
14
15 self._firstRowFrame = slicer.vtkKWFrame()
16
17
18 self._secondRowFrame = slicer.vtkKWFrame()
19
20
21 self._thresholdFrame = slicer.vtkKWFrameWithLabel()
22 self._thresholdSlider = slicer.vtkKWExtent()
23
24 self._startButton = slicer.vtkKWPushButton()
25 self._resetButton = slicer.vtkKWPushButton()
26
27
29 SlicerVMTKAdvancedPageSkeleton.Destructor(self)
30
31 self._firstRowFrame.SetParent(None)
32 self._firstRowFrame = None
33 self._secondRowFrame.SetParent(None)
34 self._secondRowFrame = None
35 self._thresholdFrame.SetParent(None)
36 self._thresholdFrame = None
37 self._thresholdSlider.SetParent(None)
38 self._thresholdSlider = None
39
40 self._startButton.SetParent(None)
41 self._startButton = None
42 self._resetButton.SetParent(None)
43 self._resetButton = None
44
45
46
48 SlicerVMTKAdvancedPageSkeleton.BuildGUI(self)
49
50 self._firstRowFrame.SetParent(self._parentFrame)
51 self._firstRowFrame.Create()
52
53 self._secondRowFrame.SetParent(self._parentFrame)
54 self._secondRowFrame.Create()
55
56 self._thresholdFrame.SetParent(self._parentFrame)
57 self._thresholdFrame.Create()
58
59
60 self._thresholdSlider.SetParent(self._thresholdFrame.GetFrame())
61 self._thresholdSlider.Create()
62
63
64 self._startButton.SetParent(self._parentFrame)
65 self._startButton.Create()
66
67
68 self._resetButton.SetParent(self._parentFrame)
69 self._resetButton.Create()
70
71 self.UpdateGUIByState()
72
73 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 2 -in %s" % (self._firstRowFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))
74 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 2 -in %s" % (self._secondRowFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))
75
76 slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 2 -in %s" % (self._startButton.GetWidgetName(), self._parentFrame.GetWidgetName()))
77 slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 2 -in %s" % (self._resetButton.GetWidgetName(), self._parentFrame.GetWidgetName()))
78
79 slicer.TkCall("pack %s -side left -expand y -padx 2 -pady 2 -in %s" % (self._thresholdFrame.GetWidgetName(), self._secondRowFrame.GetWidgetName()))
80 slicer.TkCall("pack %s -side top -expand n -padx 2 -pady 2" % (self._thresholdSlider.GetWidgetName()))
81
82
83
85 SlicerVMTKAdvancedPageSkeleton.UpdateMRML(self)
86
87 node = self._parentClass.GetScriptedModuleNode()
88
89 extentValues = self._thresholdSlider.GetExtent()
90 node.SetParameter('TH_lowerThreshold', extentValues[0])
91 node.SetParameter('TH_higherThreshold', extentValues[1])
92
102
103
105
106 self._thresholdFrame.AllowFrameToCollapseOff()
107 self._thresholdFrame.SetLabelText("Threshold of Gray Values")
108 self._thresholdFrame.SetReliefToSunken()
109
110
111 inVolumeNode = self._parentClass._inVolumeSelector.GetSelected()
112
113 if inVolumeNode:
114
115
116 imageMaxValue = round(inVolumeNode.GetImageData().ToArray().max(),0)
117 imageMinValue = round(inVolumeNode.GetImageData().ToArray().min(),0)
118 self._parentClass.SetUpdatingOn()
119 self._thresholdSlider.SetExtentRange(imageMinValue, imageMaxValue, 0, 100, 0, 100)
120 self._thresholdSlider.SetExtent(imageMinValue, imageMaxValue, 0, 100, 0, 100)
121 self._parentClass.SetUpdatingOff()
122
123 else:
124
125 self._parentClass.SetUpdatingOn()
126 self._thresholdSlider.SetExtentRange(0, 100, 0, 100, 0, 100)
127 self._thresholdSlider.SetExtent(0, 100, 0, 100, 0, 100)
128 self._parentClass.SetUpdatingOff()
129
130
131 self._thresholdSlider.SetReliefToSunken()
132 self._thresholdSlider.ZExtentVisibilityOff()
133 self._thresholdSlider.YExtentVisibilityOff()
134 self._thresholdSlider.GetXRange().SetLabelText("Gray Values of Vessels")
135
136 self._startButton.SetEnabled(1)
137 self._startButton.SetActiveBackgroundColor(0.9,0.9,0.9)
138 self._startButton.SetReliefToRaised()
139 self._startButton.SetBackgroundColor(0.9,0.9,0.9)
140 self._startButton.SetText("Start!")
141 self._startButton.SetWidth(8)
142 self._startButton.SetHeight(2)
143 self._startButton.SetBalloonHelpString("Click to start")
144
145 self._resetButton.SetEnabled(1)
146 self._resetButton.SetActiveBackgroundColor(0.9,0.9,0.9)
147 self._resetButton.SetReliefToRaised()
148 self._resetButton.SetBackgroundColor(0.9,0.9,0.9)
149 self._resetButton.SetText("Cancel")
150 self._resetButton.SetWidth(8)
151 self._resetButton.SetHeight(2)
152 self._resetButton.SetBalloonHelpString("Click to reset")
153
162
163
164
166 SlicerVMTKAdvancedPageSkeleton.RemoveGUIObservers(self)
167
168
169 self._parentClass.RemoveObserver(self._thresholdSliderTag)
170
171
172 self._parentClass.RemoveObserver(self._startButtonTag)
173 self._parentClass.RemoveObserver(self._resetButtonTag)
174
175
176
177
192
193
213
214
215
220