Browse Source

Adding standard CT window level buttons

Andrej Studen 2 years ago
parent
commit
f0e024ddf0
1 changed files with 66 additions and 1 deletions
  1. 66 1
      slicerModules/imageBrowser.py

+ 66 - 1
slicerModules/imageBrowser.py

@@ -52,6 +52,7 @@ class imageBrowserWidget(ScriptedLoadableModuleWidget):
         self.addSetupSection()
         self.addPatientsSelector()
         self.addSegmentEditor()
+        self.addWindowManipulator()
 
     def addInfoSection(self):  
         #a python overview of json settings
@@ -231,7 +232,23 @@ class imageBrowserWidget(ScriptedLoadableModuleWidget):
         segEditorNode=slicer.vtkMRMLSegmentEditorNode()
         slicer.mrmlScene.AddNode(segEditorNode)
         self.segmentEditorWidget.setMRMLSegmentEditorNode(segEditorNode)
-        
+       
+    def addWindowManipulator(self):
+        windowManipulatorCollapsibleButton=ctk.ctkCollapsibleButton()
+        windowManipulatorCollapsibleButton.text="CT Window Manipulator"
+        self.layout.addWidget(windowManipulatorCollapsibleButton)
+
+        hLayout=qt.QHBoxLayout(windowManipulatorCollapsibleButton)
+
+        ctWins={'CT:bone':self.onCtBoneButtonClicked,
+            'CT:air':self.onCtAirButtonClicked,
+            'CT:abdomen':self.onCtAbdomenButtonClicked,
+            'CT:brain':self.onCtBrainButtonClicked,
+            'CT:lung':self.onCtLungButtonClicked}
+        for ctWin in ctWins:
+            ctButton=qt.QPushButton(ctWin)
+            ctButton.clicked.connect(ctWins[ctWin])
+            hLayout.addWidget(ctButton)
 
     def onSetupListChanged(self,i):
         status=self.logic.setConfig(self.setupList.currentText)
@@ -351,6 +368,21 @@ class imageBrowserWidget(ScriptedLoadableModuleWidget):
     def onPatientSaveButtonClicked(self):
         self.logic.saveSegmentation()
 
+    def onCtBoneButtonClicked(self):
+        self.logic.setWindow('CT:bone')
+
+    def onCtAirButtonClicked(self):
+        self.logic.setWindow('CT:air')
+
+    def onCtAbdomenButtonClicked(self):
+        self.logic.setWindow('CT:abdomen')
+
+    def onCtBrainButtonClicked(self):
+        self.logic.setWindow('CT:brain')
+
+    def onCtLungButtonClicked(self):
+        self.logic.setWindow('CT:lung')
+
     def cleanup(self):
         pass
 
@@ -585,6 +617,8 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
 
         #mimic abdominalCT standardized window setting
         self.volumeNode['CT'].GetScalarVolumeDisplayNode().\
+              SetAutoWindowLevel(False)
+        self.volumeNode['CT'].GetScalarVolumeDisplayNode().\
               SetWindowLevel(1400, -500)
         #set colormap for PET to PET-Heat (this is a verbatim setting from
         #the Volumes->Display->Lookup Table colormap identifier)
@@ -727,6 +761,37 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
         #self.reviewResult={}
         #self.aeList={}
 
+    def setWindow(self,windowName):
+
+        #default
+        w=1400
+        l=-500
+        
+        if windowName=='CT:bone':
+            w=1000
+            l=400
+
+        if windowName=='CT:air':
+            w=1000
+            l=-426
+        
+        if windowName=='CT:abdomen':
+            w=350
+            l=40
+
+        if windowName=='CT:brain':
+            w=100
+            l=50
+
+        if windowName=='CT:lung':
+            w=1400
+            l=-500
+
+
+        self.volumeNode['CT'].GetScalarVolumeDisplayNode().\
+              SetWindowLevel(w,l)
+        
+        print('setWindow: {} {}/{}'.format(windowName,w,l))
 
 class imageBrowserTest(ScriptedLoadableModuleTest):