Exemple #1
0
 def __init__( self, stepid ):
   self.initialize( stepid )
   self.setName( '5. Place Screws' )
   self.setDescription( 'Load screw models and change orientation using sliders' )
   self.screwPath = None
   self.screwName = None
   self.coords = [0,0,0]
   self.matrix1 = vtk.vtkMatrix3x3()
   self.matrix2 = vtk.vtkMatrix3x3()
   self.matrix3 = vtk.vtkMatrix3x3()
   self.matrixScrew = vtk.vtkMatrix4x4()
   self.fiduciallist = []
   self.screwSummary = []
   
   self.screwList = []
   self.currentFidIndex = 0
   self.currentFidLabel = None
             
   self.fidNode = slicer.vtkMRMLMarkupsFiducialNode()
   
   self.valueTemp1 = 0
   self.valueTemp2 = 0
   self.driveTemp = 0
   
   self.__loadScrewButton = None
   self.__parent = super( ScrewStep, self )
   
   self.timer = qt.QTimer()
   self.timer.setInterval(2)
   self.timer.connect('timeout()', self.driveScrew)
   self.timer2 = qt.QTimer()
   self.timer2.setInterval(2)
   self.timer2.connect('timeout()', self.reverseScrew)
   self.screwInsert = 0.0
Exemple #2
0
    def __init__(self, parent=None):
        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parent
        self.layout = self.parent.layout()
        self.transformNode = None
        self.transformNodeObserverTag = None
        self.transformObserverTag = None
        self.transform = None
        self.acquireButtonFlag = False
        self.collectSignal = False
        self.pointerPosition = np.zeros(3)
        self.pointsCounts = 0
        self.recordedpoint = np.zeros(3)

        self.statusTimer = qt.QTimer()
        self.statusTimer.setInterval(100)
        self.statusTimer.connect('timeout()', self.changeTrackerStatus)

        if not parent:
            self.setup()
            self.parent.show()
Exemple #3
0
    def __init__(self, parent=None):
        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
        else:
            self.parent = parent

        self.layout = self.parent.layout()

        # this flag is 1 if there is an update in progress
        self.__updating = 1

        self.__mvNode = None
        self.extractFrame = False

        # chart view node
        self.__cvn = None

        # data node
        #slicer.mrmlScene.AddNode(slicer.vtkMRMLDoubleArrayNode())

        # chart node
        self.__cn = slicer.vtkMRMLChartNode()
        self.__cn.SetScene(slicer.mrmlScene)
        slicer.mrmlScene.AddNode(self.__cn)

        # image play setup
        self.timer = qt.QTimer()
        self.timer.setInterval(50)
        self.timer.connect('timeout()', self.goToNext)
Exemple #4
0
    def __init__(self, parent=None):
        self.testingServer = None

        # state management for compressing events
        # - each time an update is requested, start the singleShot timer
        # - if the update is requested before the timeout, the call to timer.start() resets it
        # - the actual update only happens when the the full time elapses since the last request
        self.updateRecentActivityTimer = qt.QTimer()
        self.updateRecentActivityTimer.singleShot = True
        self.updateRecentActivityTimer.interval = 500
        self.updateRecentActivityTimer.connect(
            'timeout()', self.onUpateRecentActivityRequestTimeout)

        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
            self.layout = self.parent.layout()
            self.setup()
            self.parent.show()
        else:
            self.parent = parent
            self.layout = parent.layout()

        globals()['d'] = self
Exemple #5
0
    def __init__(self, parent=None):
        self.testingServer = None
        self.dicomBrowser = None

        # options for browser
        self.browserPersistent = False

        # TODO: are these wrapped so we can avoid magic numbers?
        self.dicomModelUIDRole = 32
        self.dicomModelTypeRole = self.dicomModelUIDRole + 1
        self.dicomModelTypes = ('Root', 'Patient', 'Study', 'Series', 'Image')

        # state management for compressing events
        # - each time an update is requested, start the singleShot timer
        # - if the update is requested before the timeout, the call to timer.start() resets it
        # - the actual update only happens when the the full time elapses since the last request
        self.updateRecentActivityTimer = qt.QTimer()
        self.updateRecentActivityTimer.singleShot = True
        self.updateRecentActivityTimer.interval = 500
        self.updateRecentActivityTimer.connect(
            'timeout()', self.onUpateRecentActivityRequestTimeout)

        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
            self.layout = self.parent.layout()
            self.setup()
            self.parent.show()
        else:
            self.parent = parent
            self.layout = parent.layout()

        globals()['d'] = self
Exemple #6
0
    def setupCalibrationPanel(self):
        logging.debug('setupCalibrationPanel')

        self.calibrationCollapsibleButton.setProperty('collapsedHeight', 20)
        setButtonStyle(self.calibrationCollapsibleButton, 2.0)
        self.calibrationCollapsibleButton.text = 'Tool calibration'
        self.sliceletPanelLayout.addWidget(self.calibrationCollapsibleButton)

        self.calibrationLayout = qt.QFormLayout(
            self.calibrationCollapsibleButton)
        self.calibrationLayout.setContentsMargins(12, 4, 4, 4)
        self.calibrationLayout.setSpacing(4)

        self.cauteryPivotButton = qt.QPushButton('Start cautery calibration')
        setButtonStyle(self.cauteryPivotButton)
        self.calibrationLayout.addRow(self.cauteryPivotButton)

        self.needlePivotButton = qt.QPushButton('Start needle calibration')
        setButtonStyle(self.needlePivotButton)
        self.calibrationLayout.addRow(self.needlePivotButton)

        self.countdownLabel = qt.QLabel()
        self.calibrationLayout.addRow(self.countdownLabel)

        self.pivotSamplingTimer = qt.QTimer()
        self.pivotSamplingTimer.setInterval(500)
        self.pivotSamplingTimer.setSingleShot(True)
Exemple #7
0
    def onEntry(self, comingFrom, transitionType):

        moduloName = 'simuladorTornillosPediculares'

        slicer.mrmlScene.Clear(0)
        super(Inicio, self).onEntry(comingFrom, transitionType)
        self.ctimer = qt.QTimer()
        self.ctimer.singleShot(0, self.killButton)
    def onCompute(self):
        print('Computing ...')
        sampling_level = self.spinBox_sampling.value

        #sampling
        if sampling_level > 0:
            fileA = self.pathLineEdit_fileA.currentPath
            fileB = self.pathLineEdit_fileB.currentPath

            self.logic.samplePolydatas(fileA, fileB, sampling_level)

            self.checkThreadTimer = qt.QTimer()
            self.checkThreadTimer.connect('timeout()', self.onCheckSampling)
            self.checkThreadTimer.start(100)

            self.pushButton_compute.setText('Sampling ...')
            self.pushButton_compute.setDisable(True)
            #self.pushButton_compute.Disable(True)
            return

        #Getting parameters
        nb_bins = self.spinBox_bins.value

        signed = False
        if self.comboBox_distanceType.currentText == 'Signed Distance':
            signed = True

        correspondence = False
        if self.comboBox_correspondence.currentText == 'Yes':
            correspondence = True

        self.logic.fileA_out = self.pathLineEdit_fileA.currentPath
        self.logic.fileB_out = self.pathLineEdit_fileB.currentPath

        #self.logic.stats.Set('A',fileA_path)
        #self.logic.stats.Set('B',fileB_path)

        #computing
        self.pushButton_compute.setText("Computing ...")
        self.pushButton_compute.setDisable(True)
        self.logic.computeStats(nb_bins, signed, correspondence)

        self.checkThreadTimer = qt.QTimer()
        self.checkThreadTimer.connect('timeout()', self.onCheckCompute)
        self.checkThreadTimer.start(100)
        return
Exemple #9
0
 def start(self):
   """Create the subprocess and set up a polling timer"""
   if self.timer:
     self.stop()
   self.timer = qt.QTimer()
   self.timer.setInterval(self.interval)
   self.timer.connect('timeout()', self.tick)
   self.timer.start()
 def onEntry(self, comingFrom, transitionType):
     super(MenuProfesor, self).onEntry(comingFrom, transitionType)
     self.ctimer = qt.QTimer()
     self.ctimer.singleShot(0, self.killButton)
     slicer.mrmlScene.Clear(0)
     self.cargarScene()
     self.contadorTornillos1 = 0
     self.contadorTornillos2 = 0
     self.tornillo1 = None
Exemple #11
0
  def create(self):
    super(DoubleThresholdEffectOptions,self).create()

    self.thresholdLabel = qt.QLabel("DoubleThreshold Inner Range:", self.frame)
    self.thresholdLabel.setToolTip("Set the range of the background values that should will labeled.")
    self.threshold = ctk.ctkRangeWidget(self.frame)
    self.threshold.spinBoxAlignment = 0xff # put enties on top
    self.threshold.singleStep = 0.01

    self.outerThresholdLabel = qt.QLabel("DoubleThreshold Outter Range:", self.frame)
    self.outerThresholdLabel.setToolTip("Set the range of the background values that must be connected to the inner range to be labeled.")
   
    self.outerThreshold = ctk.ctkRangeWidget(self.frame)
    self.outerThreshold.spinBoxAlignment = 0xff # put enties on top
    self.outerThreshold.singleStep = 0.01
    

    # set min/max based on current range
    success, lo, hi = self.getBackgroundScalarRange()
    if success:
      self.threshold.minimum, self.threshold.maximum = lo, hi
      self.threshold.singleStep = (hi - lo) / 1000.
      
      self.outerThreshold.minimum, self.outerThreshold.maximum = lo, hi
      self.outerThreshold.singleStep = (hi - lo) / 1000.

    self.frame.layout().addWidget(self.thresholdLabel)
    self.widgets.append(self.thresholdLabel)
    self.frame.layout().addWidget(self.threshold)
    self.widgets.append(self.threshold)

    self.frame.layout().addWidget(self.outerThresholdLabel)
    self.widgets.append(self.outerThresholdLabel)
    self.frame.layout().addWidget(self.outerThreshold)
    self.widgets.append(self.outerThreshold)

    self.apply = qt.QPushButton("Apply", self.frame)
    self.apply.setToolTip("Apply current threshold settings to the label map.")
    self.frame.layout().addWidget(self.apply)
    self.widgets.append(self.apply)

    self.timer = qt.QTimer()
    self.previewState = 0
    self.previewStep = 1
    self.previewSteps = 5
    self.timer.start(200)

    self.connections.append( (self.timer, 'timeout()', self.preview) )
    self.connections.append( (self.threshold, 'valuesChanged(double,double)', self.onThresholdValuesChanged) )
    self.connections.append( (self.outerThreshold, 'valuesChanged(double,double)', self.onThresholdValuesChanged) )
    self.connections.append( (self.apply, 'clicked()', self.onApply) )

    EditorLib.HelpButton(self.frame, "TODO: describe double threshold")

    # Add vertical spacer
    self.frame.layout().addStretch(1)
Exemple #12
0
 def assurePeaksParented(self):
     # Check every 1/2 second if the transforms exist, if they do, parent them and stop checking
     if not self.findPeakTransforms():
         slicer.app.processEvents()
         qt.QTimer().singleShot(500, self.assurePeaksParented)  # 500ms
         return
     self.parentPeakTransforms(self.needleTipToNeedleTransform,
                               self.firstPeakToSETTipTransformNode,
                               self.secondPeakToSETTipTransformNode,
                               self.thirdPeakToSETTipTransformNode)
Exemple #13
0
    def create(self):
        super(ThresholdEffectOptions, self).create()

        self.thresholdLabel = qt.QLabel("Threshold Range:", self.frame)
        self.thresholdLabel.setToolTip(
            "Set the range of the background values that should be labeled.")
        self.frame.layout().addWidget(self.thresholdLabel)
        self.widgets.append(self.thresholdLabel)
        self.threshold = ctk.ctkRangeWidget(self.frame)
        self.threshold.spinBoxAlignment = 0xff  # put enties on top
        self.threshold.singleStep = 0.01
        # set min/max based on current range
        success, lo, hi = self.getBackgroundScalarRange()
        if success:
            self.threshold.minimum, self.threshold.maximum = lo, hi
            self.threshold.singleStep = (hi - lo) / 1000.
        self.frame.layout().addWidget(self.threshold)
        self.widgets.append(self.threshold)

        self.useForPainting = qt.QPushButton("Use For Paint", self.frame)
        self.useForPainting.setToolTip(
            "Transfer the current threshold settings to be used for labeling operations such as Paint and Draw."
        )
        self.frame.layout().addWidget(self.useForPainting)
        self.widgets.append(self.useForPainting)

        self.apply = qt.QPushButton("Apply", self.frame)
        self.apply.objectName = self.__class__.__name__ + 'Apply'
        self.apply.setToolTip(
            "Apply current threshold settings to the label map.")
        self.frame.layout().addWidget(self.apply)
        self.widgets.append(self.apply)

        self.timer = qt.QTimer()
        self.previewState = 0
        self.previewStep = 1
        self.previewSteps = 5
        self.timer.start(200)

        self.connections.append((self.timer, 'timeout()', self.preview))
        self.connections.append(
            (self.useForPainting, 'clicked()', self.onUseForPainting))
        self.connections.append(
            (self.threshold, 'valuesChanged(double,double)',
             self.onThresholdValuesChanged))
        self.connections.append((self.apply, 'clicked()', self.onApply))

        EditorLib.HelpButton(
            self.frame,
            "Set labels based on threshold range.  Note: this replaces the current label map values."
        )

        # Add vertical spacer
        self.frame.layout().addStretch(1)
 def __init__(self):
     qt.QWidget.__init__(self)
     VTKObservationMixin.__init__(self)
     self._cmdSetParameter = None
     self._cmdGetParameter = None
     self._interactionInProgress = False
     self._deviceID = ""
     self._parameterName = ""
     self._connectorNode = None
     self._periodicParameterTimer = qt.QTimer()
     self._periodicParameterTimer.connect(
         "timeout()", self.sendGetUltrasoundParameterCommand)
 def rock(self):
     if not self.rocking:
         self.rockTimer = None
         self.fadeSlider.value = 0.5
     if self.rocking:
         if not self.rockTimer:
             self.rockTimer = qt.QTimer()
             self.rockTimer.start(50)
             self.rockTimer.connect('timeout()', self.rock)
         import math
         self.fadeSlider.value = 0.5 + math.sin(self.rockCount / 10.) / 2.
         self.rockCount += 1
 def flicker(self):
     if not self.flickering:
         self.flickerTimer = None
         self.fadeSlider.value = 0.5
     if self.flickering:
         if not self.flickerTimer:
             if self.fadeSlider.value == 0.5:
                 self.fadeSlider.value = 0.25
             self.flickerTimer = qt.QTimer()
             self.flickerTimer.start(300)
             self.flickerTimer.connect('timeout()', self.flicker)
         import math
         self.fadeSlider.value = 1.0 - self.fadeSlider.value
Exemple #17
0
    def __init__(self, parent):
        ScriptedLoadableModuleLogic.__init__(self, parent)

        self.scene = slicer.mrmlScene

        self.widget = None

        self.catheters = CatheterCollection()
        self.registration = None

        # Create a parameter node
        self.parameterNode = self.getParameterNode()

        # Time to monitor data integrity
        self.monitoringTimer = qt.QTimer()

        self.addObservers()
Exemple #18
0
    def __init__(self, parent=None):
        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
        else:
            self.parent = parent

        self.layout = self.parent.layout()

        # this flag is 1 if there is an update in progress
        self.__updating = 1

        self.__mvNode = None
        self.extractFrame = False

        # image play setup
        self.timer = qt.QTimer()
        self.timer.setInterval(50)
        self.timer.connect('timeout()', self.goToNext)
Exemple #19
0
 def __init__(self, parent=None):
   if not parent:
     self.parent = slicer.qMRMLWidget()
     self.parent.setLayout(qt.QVBoxLayout())
     self.parent.setMRMLScene(slicer.mrmlScene)
   else:
     self.parent = parent
   self.layout = self.parent.layout()
   self.cameraNode = None
   # Flythough variables
   self.transform = None
   self.path = None
   self.camera = None
   self.skip = 0
   self.timer = qt.QTimer()
   self.timer.setInterval(20)
   self.timer.connect('timeout()', self.flyToNext)
   if not parent:
     self.setup()
     self.cameraNodeSelector.setMRMLScene(slicer.mrmlScene)
     self.inputFiducialsNodeSelector.setMRMLScene(slicer.mrmlScene)
     self.parent.show()
    def onCheckSampling(self):
        stateA = self.logic.samplingA.GetStatusString()
        stateB = self.logic.samplingB.GetStatusString()
        if stateA == 'Running' or stateA == 'Scheduled' or stateB == 'Running' or stateB == 'Scheduled':
            print('Sampling File A:', stateA)
            print('Sampling File B:', stateB)
        else:
            print('Sampling done!')
            self.checkThreadTimer.stop()
            self.checkThreadTimer.disconnect('timeout()', self.onCheckSampling)

            #Getting parameters
            nb_bins = self.spinBox_bins.value

            signed = False
            if self.comboBox_distanceType.currentText == 'Signed Distance':
                signed = True

            correspondence = False
            if self.comboBox_correspondence.currentText == 'Yes':
                correspondence = True

            fileA_path = self.logic.fileA_out
            fileB_path = self.logic.fileB_out

            self.logic.stats.Set('A', fileA_path)
            self.logic.stats.Set('B', fileB_path)

            #computing
            self.pushButton_compute.setText("Computing ...")
            self.logic.computeStats(nb_bins, signed, correspondence)

            self.checkThreadTimer = qt.QTimer()
            self.checkThreadTimer.connect('timeout()', self.onCheckCompute)
            self.checkThreadTimer.start(100)
            return
Exemple #21
0
 def onEntry(self, comingFrom, transitionType):
     super(Step2, self).onEntry(comingFrom, transitionType)
     self.ctimer = qt.QTimer()
     self.ctimer.singleShot(0, self.killButton)
Exemple #22
0
  def setup(self):
    # # Instantiate and connect widgets 
    # ---------------------------- Window Settings -----------------------------
    initializationCollapsibleButton = ctk.ctkCollapsibleButton()
    initializationCollapsibleButton.text = "Window Initialization"
    self.layout.addWidget(initializationCollapsibleButton)    
    initializationLayout = qt.QFormLayout(initializationCollapsibleButton)
    
    self.stereoCheckBox = qt.QCheckBox()
    initializationLayout.addRow("Stereoscopic mode:", self.stereoCheckBox)        
    
    self.startButton = qt.QPushButton("Create Windows")
    initializationLayout.addRow(self.startButton)
    
    self.showButton = qt.QPushButton("Show Windows")
    initializationLayout.addRow(self.showButton)
    
    self.hideButton = qt.QPushButton("Hide Windows")
    initializationLayout.addRow(self.hideButton)
    
    # ---------------------------- Stereo Settings -----------------------------
    stereoCollapsibleButton = ctk.ctkCollapsibleButton()
    stereoCollapsibleButton.text = "Stereoscopic Settings"
    self.layout.addWidget(stereoCollapsibleButton)
    stereoSettingsLayout = qt.QFormLayout(stereoCollapsibleButton)        
    
    self.upViewAngleButton = qt.QPushButton("Increase View Angle")
    stereoSettingsLayout.addWidget(self.upViewAngleButton)
    
    self.downViewAngleButton = qt.QPushButton("Decrease View Angle")
    stereoSettingsLayout.addWidget(self.downViewAngleButton)
    
    # ------------------- Transform and Tracking Settings ----------------------
    trackingCollapsibleButton = ctk.ctkCollapsibleButton()
    trackingCollapsibleButton.text = "Update Settings"
    self.layout.addWidget(trackingCollapsibleButton)
    trackingSettingsLayout = qt.QFormLayout(trackingCollapsibleButton)    
    
    self.followNodeSelector = slicer.qMRMLNodeComboBox()
    self.followNodeSelector.nodeTypes = ["vtkMRMLMarkupsFiducialNode", "vtkMRMLLinearTransformNode"]
    self.followNodeSelector.selectNodeUponCreation = False
    self.followNodeSelector.noneEnabled = False
    self.followNodeSelector.addEnabled = True
    self.followNodeSelector.showHidden = False
    self.followNodeSelector.setMRMLScene( slicer.mrmlScene )
    self.followNodeSelector.setToolTip( "Pick Fiducial Node or Linear Transform to follow" )
    trackingSettingsLayout.addRow("Path node (transform or fiducial)", self.followNodeSelector)
    
    self.oculusNodeSelector = slicer.qMRMLNodeComboBox()
    self.oculusNodeSelector.nodeTypes = ["vtkMRMLLinearTransformNode"]
    self.oculusNodeSelector.selectNodeUponCreation = False
    self.oculusNodeSelector.noneEnabled = False
    self.oculusNodeSelector.addEnabled = True
    self.oculusNodeSelector.showHidden = False
    self.oculusNodeSelector.setMRMLScene( slicer.mrmlScene )
    self.oculusNodeSelector.setToolTip( "Pick Transform for Oculus Rift" )
    trackingSettingsLayout.addRow("Oculus Transform", self.oculusNodeSelector)

    self.updateTrackingButton = qt.QPushButton("Update Tracking")
    trackingSettingsLayout.addWidget(self.updateTrackingButton)
    
    # ---------------------------- Update Export Image Settings -----------------------------
    updatesCollapsibleButton = ctk.ctkCollapsibleButton()
    updatesCollapsibleButton.text = "Update Settings"
    self.layout.addWidget(updatesCollapsibleButton)
    updateSettingsLayout = qt.QFormLayout(updatesCollapsibleButton)
    
    self.createButton = qt.QPushButton("Create Image")
    updateSettingsLayout.addWidget(self.createButton)
    
    self.startRepeatButton = qt.QPushButton("Continually Create Images")
    updateSettingsLayout.addWidget(self.startRepeatButton)

    self.stopRepeatButton = qt.QPushButton("Stop Creating Images")
    updateSettingsLayout.addWidget(self.stopRepeatButton)
    
    # ---------------------------- Lighting Settings -----------------------------
    lightingCollapsibleButton = ctk.ctkCollapsibleButton()
    lightingCollapsibleButton.text = "Lighting Settings"
    self.layout.addWidget(lightingCollapsibleButton)
    lightingSettingsLayout = qt.QFormLayout(lightingCollapsibleButton)
    
    #       ----- Manual Lighting Control ------
    manualLightingGroupBox = ctk.ctkCollapsibleGroupBox()
    lightingSettingsLayout.addWidget(manualLightingGroupBox)
    manualLightingLayout = qt.QFormLayout(manualLightingGroupBox)
    
    self.lightSliderX = ctk.ctkSliderWidget()
    self.lightSliderX.maximum = 500
    self.lightSliderX.minimum = -500
    self.lightSliderX.value = 0
    self.lightSliderX.tracking = True
    manualLightingLayout.addRow("X", self.lightSliderX)
    
    self.lightSliderY = ctk.ctkSliderWidget()
    self.lightSliderY.maximum = 500
    self.lightSliderY.minimum = -500
    self.lightSliderY.value = 0
    self.lightSliderY.tracking = True
    manualLightingLayout.addRow("Y", self.lightSliderY)

    self.lightSliderZ = ctk.ctkSliderWidget()
    self.lightSliderZ.maximum = 500
    self.lightSliderZ.minimum = -500
    self.lightSliderZ.value = 300
    self.lightSliderZ.tracking = True
    manualLightingLayout.addRow("Z", self.lightSliderZ)    
    
    # # Connections
    self.startButton.connect('clicked(bool)', self.createWindows)
    self.showButton.connect('clicked(bool)', self.showWindows)
    self.hideButton.connect('clicked(bool)', self.hideWindows)
    
    self.upViewAngleButton.connect('clicked(bool)', self.upViewAngle)
    self.downViewAngleButton.connect('clicked(bool)', self.downViewAngle)    
    
    self.createButton.connect('clicked(bool)', self.createWindowImages)
    self.startRepeatButton.connect('clicked(bool)', self.startCreatingImages)
    self.stopRepeatButton.connect('clicked(bool)', self.stopCreatingImages)
    
    self.followNodeSelector.connect('currentNodeChanged(bool)', self.setFollowNode)
    self.updateTrackingButton.connect('clicked(bool)', self.updateTracking)   
    
    self.lightSliderX.connect('valueChanged(double)', self.onLightSliderChanged)
    self.lightSliderY.connect('valueChanged(double)', self.onLightSliderChanged)
    self.lightSliderZ.connect('valueChanged(double)', self.onLightSliderChanged)
    

    self.timer = qt.QTimer()
    self.timer.timeout.connect(self.createWindowImages)
    
    self.layout.addStretch(1)
Exemple #23
0
 def setTimer(self):
     self.replyBox.setPlainText("Waiting for reply...")
     self.timeoutCounter = 0
     self.timer = qt.QTimer()
     self.timer.timeout.connect(self.getCommandReply)
     self.timer.start(100)
Exemple #24
0
    def setup(self):
        # if this import is at top of the source, the loading could not work well.
        #import glob
        # Instantiate and connect widgets ...

        #
        # Reload and Test area
        #
        reloadCollapsibleButton = ctk.ctkCollapsibleButton()
        reloadCollapsibleButton.text = "Reload && Test"
        reloadCollapsibleButton.collapsed = True
        #self.layout.addWidget(reloadCollapsibleButton)
        ##reloadFormLayout = qt.QFormLayout(reloadCollapsibleButton)

        # reload button
        # (use this during development, but remove it when delivering
        #  your module to users)
        self.reloadButton = qt.QPushButton("Reload")
        self.reloadButton.toolTip = "Reload this module."
        self.reloadButton.name = "PlaneControl Reload"
        #reloadFormLayout.addWidget(self.reloadButton)
        ##self.reloadButton.connect('clicked()', self.onReload)

        # reload and test button
        # (use this during development, but remove it when delivering
        #  your module to users)
        self.reloadAndTestButton = qt.QPushButton("Reload and Test")
        self.reloadAndTestButton.toolTip = "Reload this module and then run the self tests."
        #reloadFormLayout.addWidget(self.reloadAndTestButton)
        ##self.reloadAndTestButton.connect('clicked()', self.onReloadAndTest)

        #
        # Parameters Area
        #
        self.configurationCollapsibleButton = ctk.ctkCollapsibleButton()
        self.configurationCollapsibleButton.text = "Setup"
        self.configurationCollapsibleButton.collapsed = False
        self.configurationList = self.configurationCollapsibleButton
        self.layout.addWidget(self.configurationCollapsibleButton)
        # Layout within the collapsible button
        self.configurationFormLayout = qt.QFormLayout(
            self.configurationCollapsibleButton)

        #
        # Sensor Transform (vtkMRMLLinearTransformNode)
        #
        self.sensorTransformSelector = slicer.qMRMLNodeComboBox()
        self.sensorTransformSelector.nodeTypes = ((
            "vtkMRMLLinearTransformNode"), "")
        self.sensorTransformSelector.noneEnabled = True
        self.sensorTransformSelector.setMRMLScene(slicer.mrmlScene)
        self.configurationFormLayout.addRow("Sensor Matrix: ",
                                            self.sensorTransformSelector)

        #
        # PLANE_0 Transform (vtkMRMLLinearTransformNode)
        #
        self.plane_0TransformSelector = slicer.qMRMLNodeComboBox()
        self.plane_0TransformSelector.nodeTypes = ((
            "vtkMRMLLinearTransformNode"), "")
        self.plane_0TransformSelector.noneEnabled = True
        self.plane_0TransformSelector.setMRMLScene(slicer.mrmlScene)
        self.configurationFormLayout.addRow("PLANE_0 Matrix: ",
                                            self.plane_0TransformSelector)

        #
        # PLANE_1 Transform (vtkMRMLLinearTransformNode)
        #
        self.plane_1TransformSelector = slicer.qMRMLNodeComboBox()
        self.plane_1TransformSelector.nodeTypes = ((
            "vtkMRMLLinearTransformNode"), "")
        self.plane_1TransformSelector.noneEnabled = True
        self.plane_1TransformSelector.setMRMLScene(slicer.mrmlScene)
        self.configurationFormLayout.addRow("PLANE_1 Matrix: ",
                                            self.plane_1TransformSelector)

        #
        # PLANE_2 Transform (vtkMRMLLinearTransformNode)
        #
        self.plane_2TransformSelector = slicer.qMRMLNodeComboBox()
        self.plane_2TransformSelector.nodeTypes = ((
            "vtkMRMLLinearTransformNode"), "")
        self.plane_2TransformSelector.noneEnabled = True
        self.plane_2TransformSelector.setMRMLScene(slicer.mrmlScene)
        self.configurationFormLayout.addRow("PLANE_2 Matrix: ",
                                            self.plane_2TransformSelector)

        # Apply button
        self.applyMatrixButton = qt.QPushButton("ON")
        self.configurationFormLayout.addRow("Matrix Connection: ",
                                            self.applyMatrixButton)
        self.applyMatrixButton.connect('clicked()',
                                       self.onApplyMatrixConnectionButton)

        # Stop button
        self.removeMatrixButton = qt.QPushButton("OFF")
        self.configurationFormLayout.addRow("Matrix Connection: ",
                                            self.removeMatrixButton)
        self.removeMatrixButton.connect('clicked()',
                                        self.onStopMatrixConnectionButton)

        # QTimer
        self.t = qt.QTimer()
        self.t.connect('timeout()', self.tCount)
        self.freq = 30  #50

        #
        # Dock Panel
        #
        self.createDockPanel()

        # Add vertical spacer
        self.layout.addStretch(1)

        self.extensionSelector = {}
        self.installedExtensionName = {}
        self.selectedItem = {}

        self.currentModuleId = 0
        self.numberOfModule = 0
        self.numberOfExtention = 0
        self.numberOfExtentionList = 0
        self.loadFileFlag = 0
        self.numberOfLabelText = 15
        self.itemsOnOneLine = 3

        #Matrix
        self.timerStopFlag = 0
        self.sensorMatrix = vtk.vtkMatrix4x4()
        self.plane_0Matrix = vtk.vtkMatrix4x4()
        self.plane_1Matrix = vtk.vtkMatrix4x4()
        self.plane_2Matrix = vtk.vtkMatrix4x4()
Exemple #25
0
    def __init__(self, parent, logic, configurationName='Default'):
        self.slice3DChartCustomLayoutId = 5000  # Must come before Guidelet.__init__
        Guidelet.__init__(self, parent, logic, configurationName)

        logging.debug('EpiGuideGuidelet.__init__')
        self.logic.addValuesToDefaultConfiguration()

        # for debugging purposes only, to be removed
        slicer.epi = self

        self.navigationCollapsibleButton = None

        self.imageData = None
        self.imageDimensions = None
        self.line = None
        self.table = None
        self.chart = None
        self.view = None
        self.signalArray = None
        self.distanceArray = None
        self.boundsRecalculated = False
        self.fitUltrasoundImageToViewOnConnect = True

        self.firstPeakToSETTipTransformNode = None
        self.secondPeakToSETTipTransformNode = None
        self.thirdPeakToSETTipTransformNode = None

        self.firstPeakModelNode = None
        self.secondPeakModelNode = None
        self.thirdPeakModelNode = None

        self.needleWithTipModel = None
        self.trajectoryModel_needleModel = None
        self.trajectoryModel_needleTip = None

        self.referenceToRasTransform = None
        self.needleTipToNeedleTransform = None
        self.needleModelToNeedleTipTransform = None
        self.trajModelToNeedleTipTransform = None
        self.needleToReferenceTransform = None
        self.setTipToReferenceTransformNode = None

        self.aModeImageNode = None

        self.timer = qt.QTimer()

        self.agilentCommandLogic = PlusRemoteLogic()
        self.agilentConnectorNode = slicer.mrmlScene.AddNode(
            slicer.vtkMRMLIGTLConnectorNode())
        self.agilentConnectorNode.SetLogErrorIfServerConnectionFailed(False)

        hostNamePort = self.parameterNode.GetParameter(
            'AgilentServerHostNamePort')  # example: "localhost:18944"
        [hostName, port] = hostNamePort.split(':')

        self.agilentConnectorNode.SetTypeClient(hostName, int(port))
        self.agilentConnectorNode.Start()

        self.needleModelTipRadius = 0.0

        # Set up main frame
        self.sliceletDockWidget.setObjectName('EpiGuidePanel')
        self.sliceletDockWidget.setWindowTitle('EpiGuideNav')
        self.mainWindow.setWindowTitle('Epidural injection navigation')

        self.navigationView = self.VIEW_TRIPLE_3D  # should we change to VIEW_ULTRASOUND_3D_3DCHART ???
Exemple #26
0
    def setup(self):
        # Instantiate and connect widgets ...

        #
        # Reload and Test area
        #
        reloadCollapsibleButton = ctk.ctkCollapsibleButton()
        reloadCollapsibleButton.text = "Reload && Test"
        #self.layout.addWidget(reloadCollapsibleButton)
        reloadFormLayout = qt.QFormLayout(reloadCollapsibleButton)

        # reload button
        # (use this during development, but remove it when delivering
        #  your module to users)
        self.reloadButton = qt.QPushButton("Reload")
        self.reloadButton.toolTip = "Reload this module."
        self.reloadButton.name = "CornerAnnotation Reload"
        #reloadFormLayout.addWidget(self.reloadButton)
        self.reloadButton.connect('clicked()', self.onReload)

        # reload and test button
        # (use this during development, but remove it when delivering
        #  your module to users)
        self.reloadAndTestButton = qt.QPushButton("Reload and Test")
        self.reloadAndTestButton.toolTip = "Reload this module and then run the self tests."
        #reloadFormLayout.addWidget(self.reloadAndTestButton)
        self.reloadAndTestButton.connect('clicked()', self.onReloadAndTest)

        #
        # Module Area
        #
        annotationCollapsibleButton = ctk.ctkCollapsibleButton()
        annotationCollapsibleButton.text = "Annotations"
        annotationCollapsibleButton.collapsed = False
        self.annotationList = annotationCollapsibleButton
        self.layout.addWidget(annotationCollapsibleButton)

        # Layout within the collapsible button
        annotationFormLayout = qt.QFormLayout(annotationCollapsibleButton)

        #
        # Transform matrix for left bottom annotation (vtkMRMLLinearTransformNode)
        #
        self.node1Selector = slicer.qMRMLNodeComboBox()
        #self.node1Selector.nodeTypes = ( ("vtkMRMLLinearTransformNode"), "" )
        self.node1Selector.nodeTypes = [
            'vtkMRMLLinearTransformNode', 'vtkMRMLAnnotationTextNode'
        ]
        self.node1Selector.addEnabled = False
        self.node1Selector.removeEnabled = False
        self.node1Selector.noneEnabled = True
        self.node1Selector.showHidden = False
        self.node1Selector.showChildNodeTypes = False
        self.node1Selector.setMRMLScene(slicer.mrmlScene)

        #
        # Transform matrix for left upper annotation (vtkMRMLLinearTransformNode)
        #
        self.node2Selector = slicer.qMRMLNodeComboBox()
        self.node2Selector.nodeTypes = [
            'vtkMRMLLinearTransformNode', 'vtkMRMLAnnotationTextNode'
        ]
        self.node2Selector.addEnabled = False
        self.node2Selector.removeEnabled = False
        self.node2Selector.noneEnabled = True
        self.node2Selector.showHidden = False
        self.node2Selector.showChildNodeTypes = False
        self.node2Selector.setMRMLScene(slicer.mrmlScene)

        #
        # Transform matrix for left upper annotation (vtkMRMLLinearTransformNode)
        #
        self.node3Selector = slicer.qMRMLNodeComboBox()
        self.node3Selector.nodeTypes = [
            'vtkMRMLLinearTransformNode', 'vtkMRMLAnnotationTextNode'
        ]
        self.node3Selector.addEnabled = False
        self.node3Selector.removeEnabled = False
        self.node3Selector.noneEnabled = True
        self.node3Selector.showHidden = False
        self.node3Selector.showChildNodeTypes = False
        self.node3Selector.setMRMLScene(slicer.mrmlScene)

        #
        # Transform matrix for right upper annotation (vtkMRMLLinearTransformNode)
        #
        self.node4Selector = slicer.qMRMLNodeComboBox()
        self.node4Selector.nodeTypes = [
            'vtkMRMLLinearTransformNode', 'vtkMRMLAnnotationTextNode'
        ]
        self.node4Selector.addEnabled = False
        self.node4Selector.removeEnabled = False
        self.node4Selector.noneEnabled = True
        self.node4Selector.showHidden = False
        self.node4Selector.showChildNodeTypes = False
        self.node4Selector.setMRMLScene(slicer.mrmlScene)

        #
        # Check box for left bottom annotation
        #
        self.leftBottomCheckBox = ctk.ctkCheckBox()
        self.leftBottomCheckBox.text = "Enable"
        self.leftBottomCheckBox.enabled = True
        self.leftBottomCheckBox.checked = False

        #
        # Check box for displaying right upper annotation
        #
        self.leftBottomTextBox = qt.QLineEdit()
        self.leftBottomTextBox.enabled = True

        #
        # Check box for displaying left upper annotation
        #
        self.leftUpperCheckBox = ctk.ctkCheckBox()
        self.leftUpperCheckBox.text = "Enable"
        self.leftUpperCheckBox.enabled = True
        self.leftUpperCheckBox.checked = False

        #
        # Check box for displaying right upper annotation
        #
        self.leftUpperTextBox = qt.QLineEdit()
        self.leftUpperTextBox.enabled = True

        #
        # Check box for displaying right bottom annotation
        #
        self.rightBottomCheckBox = ctk.ctkCheckBox()
        self.rightBottomCheckBox.text = "Enable"
        self.rightBottomCheckBox.enabled = True
        self.rightBottomCheckBox.checked = False

        #
        # Check box for displaying right upper annotation
        #
        self.rightBottomTextBox = qt.QLineEdit()
        self.rightBottomTextBox.enabled = True

        #
        # Check box for displaying right upper annotation
        #
        self.rightUpperCheckBox = ctk.ctkCheckBox()
        self.rightUpperCheckBox.text = "Enable"
        self.rightUpperCheckBox.enabled = True
        self.rightUpperCheckBox.checked = False

        #
        # Check box for displaying right upper annotation
        #
        self.rightUpperTextBox = qt.QLineEdit()
        self.rightUpperTextBox.enabled = True

        self.textLable1 = qt.QLabel()
        self.textLable1.setText("Text:")

        self.textLable2 = qt.QLabel()
        self.textLable2.setText("Text:")

        self.textLable3 = qt.QLabel()
        self.textLable3.setText("Text:")

        self.textLable4 = qt.QLabel()
        self.textLable4.setText("Text:")

        self.leftUpperFrame = qt.QFrame()
        self.leftUpperLayout = qt.QHBoxLayout()
        self.leftUpperFrame.setLayout(self.leftUpperLayout)
        annotationFormLayout.addRow("Left Upper:", self.leftUpperFrame)

        self.leftBottomFrame = qt.QFrame()
        self.leftBottomLayout = qt.QHBoxLayout()
        self.leftBottomFrame.setLayout(self.leftBottomLayout)
        annotationFormLayout.addRow("Left Bottom:", self.leftBottomFrame)

        self.rightUpperFrame = qt.QFrame()
        self.rightUpperLayout = qt.QHBoxLayout()
        self.rightUpperFrame.setLayout(self.rightUpperLayout)
        annotationFormLayout.addRow("Right Upper:", self.rightUpperFrame)

        self.rightBottomFrame = qt.QFrame()
        self.rightBottomLayout = qt.QHBoxLayout()
        self.rightBottomFrame.setLayout(self.rightBottomLayout)
        annotationFormLayout.addRow("Right Bottom:", self.rightBottomFrame)

        self.leftUpperFrame.layout().addWidget(self.leftUpperCheckBox)
        self.leftUpperFrame.layout().addWidget(self.textLable2)
        self.leftUpperFrame.layout().addWidget(self.leftUpperTextBox)

        self.leftBottomFrame.layout().addWidget(self.leftBottomCheckBox)
        self.leftBottomFrame.layout().addWidget(self.textLable1)
        self.leftBottomFrame.layout().addWidget(self.leftBottomTextBox)

        self.rightUpperFrame.layout().addWidget(self.rightUpperCheckBox)
        self.rightUpperFrame.layout().addWidget(self.textLable4)
        self.rightUpperFrame.layout().addWidget(self.rightUpperTextBox)

        self.rightBottomFrame.layout().addWidget(self.rightBottomCheckBox)
        self.rightBottomFrame.layout().addWidget(self.textLable3)
        self.rightBottomFrame.layout().addWidget(self.rightBottomTextBox)

        #
        # Configuration Area
        #
        configurationCollapsibleButton = ctk.ctkCollapsibleButton()
        configurationCollapsibleButton.text = "Configurations"
        configurationCollapsibleButton.collapsed = False
        self.annotationList = configurationCollapsibleButton
        self.layout.addWidget(configurationCollapsibleButton)

        # Layout within the collapsible button
        configurationFormLayout = qt.QFormLayout(
            configurationCollapsibleButton)

        self.threeDViewCheckBox = ctk.ctkCheckBox()
        self.threeDViewCheckBox.text = "3D"
        self.threeDViewCheckBox.enabled = True
        self.threeDViewCheckBox.checked = True

        self.redViewCheckBox = ctk.ctkCheckBox()
        self.redViewCheckBox.text = "Red"
        self.redViewCheckBox.enabled = True
        self.redViewCheckBox.checked = False

        self.yellowViewCheckBox = ctk.ctkCheckBox()
        self.yellowViewCheckBox.text = "Yellow"
        self.yellowViewCheckBox.enabled = True
        self.yellowViewCheckBox.checked = False

        self.greenViewCheckBox = ctk.ctkCheckBox()
        self.greenViewCheckBox.text = "Green"
        self.greenViewCheckBox.enabled = True
        self.greenViewCheckBox.checked = False

        # view frame
        self.viewFrame = qt.QFrame(configurationCollapsibleButton)
        self.viewLayout = qt.QHBoxLayout()
        self.viewFrame.setLayout(self.viewLayout)
        configurationFormLayout.addRow("Display Panels:", self.viewFrame)

        self.viewFrame.layout().addWidget(self.threeDViewCheckBox)
        self.viewFrame.layout().addWidget(self.redViewCheckBox)
        self.viewFrame.layout().addWidget(self.yellowViewCheckBox)
        self.viewFrame.layout().addWidget(self.greenViewCheckBox)

        self.fontSizeLable = qt.QLabel()
        self.fontSizeLable.setText("Size:")

        #
        # Bold font check box for displaying right upper annotation
        #
        self.rightUpperBoldCheckBox = ctk.ctkCheckBox()
        self.rightUpperBoldCheckBox.text = "Bold"
        self.rightUpperBoldCheckBox.enabled = True
        self.rightUpperBoldCheckBox.checked = False

        #
        # Italic fong check box for displaying right upper annotation
        #
        self.rightUpperItalicCheckBox = ctk.ctkCheckBox()
        self.rightUpperItalicCheckBox.text = "Italic"
        self.rightUpperItalicCheckBox.enabled = True
        self.rightUpperItalicCheckBox.checked = False

        #
        # Shadow font check box for displaying right upper annotation
        #
        self.rightUpperShadowCheckBox = ctk.ctkCheckBox()
        self.rightUpperShadowCheckBox.text = "Shadow"
        self.rightUpperShadowCheckBox.enabled = True
        self.rightUpperShadowCheckBox.checked = False

        #
        # Font size slider
        #
        self.fontSizeSlider = ctk.ctkSliderWidget()
        self.fontSizeSlider.decimals = 0
        self.fontSizeSlider.maximum = 200
        self.fontSizeSlider.minimum = 0
        self.fontSizeSlider.value = 20
        self.fontSizeSlider.enabled = True

        self.fontBox = qt.QComboBox()
        self.fontBox.insertItem(0, "Arial", "Arial")
        self.fontBox.insertItem(1, "Courier", "Courier")
        self.fontBox.insertItem(2, "Times", "Times")
        self.fontBox.enabled = True
        configurationFormLayout.addRow("Font Family:", self.fontBox)

        self.rightUpperColorBox = ctk.ctkColorPickerButton()
        self.rightUpperColorBox.enabled = True
        self.rightUpperColorBox.setColor(qt.QColor(255, 0, 0))
        configurationFormLayout.addRow("Font Color:", self.rightUpperColorBox)

        self.fontOpacitySlider = ctk.ctkSliderWidget()
        self.fontOpacitySlider.decimals = 0
        self.fontOpacitySlider.maximum = 100
        self.fontOpacitySlider.minimum = 0
        self.fontOpacitySlider.value = 100
        self.fontOpacitySlider.enabled = True
        configurationFormLayout.addRow("Font Opacity:", self.fontOpacitySlider)

        self.fontStyleFrame = qt.QFrame()
        self.fonstStyleLayout = qt.QHBoxLayout()
        self.fontStyleFrame.setLayout(self.fonstStyleLayout)
        configurationFormLayout.addRow("Font Style:", self.fontStyleFrame)

        self.fontStyleFrame.layout().addWidget(self.rightUpperBoldCheckBox)
        self.fontStyleFrame.layout().addWidget(self.rightUpperItalicCheckBox)
        self.fontStyleFrame.layout().addWidget(self.rightUpperShadowCheckBox)
        self.fontStyleFrame.layout().addWidget(self.fontSizeLable)
        self.fontStyleFrame.layout().addWidget(self.fontSizeSlider)

        # Timer start button
        self.timerStartButton = qt.QPushButton("Start")
        self.timerStartButton.toolTip = "Start timer"
        self.timerStartButton.name = "Start timer"

        # Timer stop button
        self.timerStopButton = qt.QPushButton("Stop")
        self.timerStopButton.toolTip = "Stop timer"
        self.timerStopButton.name = "Stop timer"

        # Timer reset button
        self.timerResetButton = qt.QPushButton("Reset")
        self.timerResetButton.toolTip = "Reset timer"
        self.timerResetButton.name = "Reset timer"

        self.timerFrame = qt.QFrame(configurationCollapsibleButton)
        self.timerLayout = qt.QHBoxLayout()
        self.timerFrame.setLayout(self.timerLayout)
        configurationFormLayout.addRow("Timer:", self.timerFrame)

        self.timerFrame.layout().addWidget(self.timerStartButton)
        self.timerFrame.layout().addWidget(self.timerStopButton)
        self.timerFrame.layout().addWidget(self.timerResetButton)

        configurationFormLayout.addRow("Node1: ", self.node1Selector)
        configurationFormLayout.addRow("Node2: ", self.node2Selector)
        configurationFormLayout.addRow("Node3: ", self.node3Selector)
        configurationFormLayout.addRow("Node4: ", self.node4Selector)

        self.timerStartButton.connect('clicked(bool)', self.onStartButton)
        self.timerStopButton.connect('clicked(bool)', self.onStopButton)
        self.timerResetButton.connect('clicked(bool)', self.onResetButton)

        self.fontOpacitySlider.connect('valueChanged(double)',
                                       self.fontOpacitySliderValueChanged)
        self.fontSizeSlider.connect('valueChanged(double)',
                                    self.fontSizeSliderValueChanged)
        self.rightUpperBoldCheckBox.connect('clicked(bool)', self.boldChanged)
        self.rightUpperItalicCheckBox.connect('clicked(bool)',
                                              self.italicChanged)
        self.rightUpperShadowCheckBox.connect('clicked(bool)',
                                              self.shadowChanged)
        self.rightUpperColorBox.connect('colorChanged(QColor)',
                                        self.fontColorChanged)

        self.rightUpperCheckBox.connect('clicked(bool)',
                                        self.onRightUpperCheckBox)
        self.rightBottomCheckBox.connect('clicked(bool)',
                                         self.onRightBottomCheckBox)
        self.leftUpperCheckBox.connect('clicked(bool)',
                                       self.onLeftUpperCheckBox)
        self.leftBottomCheckBox.connect('clicked(bool)',
                                        self.onLeftBottomCheckBox)

        self.rightUpperTextBox.connect('textEdited(QString)',
                                       self.editedRightUpperTextBox)
        self.rightBottomTextBox.connect('textEdited(QString)',
                                        self.editedRightBottomTextBox)
        self.leftUpperTextBox.connect('textEdited(QString)',
                                      self.editedLeftUpperTextBox)
        self.leftBottomTextBox.connect('textEdited(QString)',
                                       self.editedLeftBottomTextBox)

        self.threeDViewCheckBox.connect('clicked(bool)',
                                        self.onThreeDViewCheckBox)
        self.redViewCheckBox.connect('clicked(bool)', self.onRedViewCheckBox)
        self.yellowViewCheckBox.connect('clicked(bool)',
                                        self.onYellowViewCheckBox)
        self.greenViewCheckBox.connect('clicked(bool)',
                                       self.onGreenViewCheckBox)

        self.fontBox.connect('currentIndexChanged(int)', self.fontChanged)

        # Text property for corner annotation
        self.textProperty = vtk.vtkTextProperty()

        # Corner annotation function
        self.cornerAnnotationDisplay = vtk.vtkCornerAnnotation()
        self.cornerAnnotationDisplay.SetLinearFontScaleFactor(2)
        self.cornerAnnotationDisplay.SetNonlinearFontScaleFactor(1)
        self.cornerAnnotationDisplay.SetMaximumFontSize(20)
        self.cornerAnnotationDisplay.GetTextProperty().SetColor(1, 0, 0)

        # Addition of corner annotation function to three D render window
        layout = slicer.app.layoutManager()
        if layout != None:
            self.threeDRenderer = layout.activeThreeDRenderer()
            self.threeDRenderer.AddViewProp(self.cornerAnnotationDisplay)
            self.threeDRenderWindow = self.threeDRenderer.GetRenderWindow()
            self.threeDRenderWindow.Render()

            self.redRenderer = layout.sliceWidget('Red').sliceView(
            ).renderWindow().GetRenderers().GetFirstRenderer()
            self.redRenderWindow = self.redRenderer.GetRenderWindow()
            self.redRenderWindow.Render()

            self.yellowRenderer = layout.sliceWidget('Yellow').sliceView(
            ).renderWindow().GetRenderers().GetFirstRenderer()
            self.yellowRenderWindow = self.yellowRenderer.GetRenderWindow()
            self.yellowRenderWindow.Render()

            self.greenRenderer = layout.sliceWidget('Green').sliceView(
            ).renderWindow().GetRenderers().GetFirstRenderer()
            self.greenRenderWindow = self.greenRenderer.GetRenderWindow()
            self.greenRenderWindow.Render()

        # QTimer
        self.t = qt.QTimer()
        self.t.connect('timeout()', self.tCount)
        self.freq = 50

        self.stopWatchTimer = qt.QTimer()
        self.stopWatchTimer.connect('timeout()', self.stopWatchTimerCount)
        self.timerCount = 0
        self.timerFreq = 100

        # Flags for displaying annotations
        self.rightUpperFlag = 0
        self.rightBottomFlag = 0
        self.leftUpperFlag = 0
        self.leftBottomFlag = 0
        self.timerStopFlag = 0

        self.colorR = 0
        self.colorG = 0
        self.colorB = 0

        self.rightUpperMessage = ""
        self.rightBottomMessage = ""
        self.leftUpperMessage = ""
        self.leftBottomMessage = ""

        self.rightUpperSource = ""
        self.rightBottomSource = ""
        self.leftUpperSource = ""
        self.leftBottomSource = ""

        import numpy
        self.row2 = numpy.zeros([10])
        self.column2 = numpy.zeros([10])

        self.stopWatchTimerStartFlag = 0

        # Add vertical spacer
        self.layout.addStretch(1)
 def onEntry(self, comingFrom, transitionType):
     super(HistoriaClinica, self).onEntry(comingFrom, transitionType)
     self.ctimer = qt.QTimer()
     self.ctimer.singleShot(0, self.killButton)
     slicer.mrmlScene.Clear(0)
     self.cargarScene()
    def setup(self):
        ScriptedLoadableModuleWidget.setup(self)
        self.logic = DualModalityCalibrationLogic()

        # Instantiate and connect widgets

        #
        # Calibration Parameters Area
        #
        parametersCollapsibleButton = ctk.ctkCollapsibleButton()
        parametersCollapsibleButton.text = "Calibration input and output transforms"
        self.layout.addWidget(parametersCollapsibleButton)

        # Layout within the dummy collapsible button
        parametersFormLayout = qt.QFormLayout(parametersCollapsibleButton)

        #
        # Optical tracking system transform selector
        #
        self.opticalPointerSelectorLabel = qt.QLabel()
        self.opticalPointerSelectorLabel.setText(
            "OpPointerToOpRef Transform: ")
        self.opticalPointerSelector = slicer.qMRMLNodeComboBox()
        self.opticalPointerSelector.nodeTypes = ([
            "vtkMRMLLinearTransformNode"
        ])
        self.opticalPointerSelector.noneEnabled = False
        self.opticalPointerSelector.addEnabled = False
        self.opticalPointerSelector.removeEnabled = True
        self.opticalPointerSelector.setMRMLScene(slicer.mrmlScene)
        self.opticalPointerSelector.setToolTip(
            "Pick a known transform corresponding to the optical pointer's coordinate frame"
        )
        parametersFormLayout.addRow(self.opticalPointerSelectorLabel,
                                    self.opticalPointerSelector)

        #
        # Em tracking system transform selector
        #
        self.EmPointerSelectorLabel = qt.QLabel()
        self.EmPointerSelectorLabel.setText("EmPointerToEmTracker Transform: ")
        self.emPointerSelector = slicer.qMRMLNodeComboBox()
        self.emPointerSelector.nodeTypes = (["vtkMRMLTransformNode"])
        self.emPointerSelector.noneEnabled = False
        self.emPointerSelector.addEnabled = False
        self.emPointerSelector.removeEnabled = True
        self.emPointerSelector.setMRMLScene(slicer.mrmlScene)
        self.emPointerSelector.setToolTip(
            "Pick a known transform corresponding to the Em pointer's coordinate frame"
        )
        parametersFormLayout.addRow(self.EmPointerSelectorLabel,
                                    self.emPointerSelector)

        #
        # Initial landmark registration result transform selector
        #
        self.initialEmTrackerToOpRefSelectorLabel = qt.QLabel()
        self.initialEmTrackerToOpRefSelectorLabel.setText(
            "Initial EmTrackerToOpRef Transform: ")
        self.initialEmTrackerToOpRefSelector = slicer.qMRMLNodeComboBox()
        self.initialEmTrackerToOpRefSelector.nodeTypes = ([
            "vtkMRMLTransformNode"
        ])
        self.initialEmTrackerToOpRefSelector.noneEnabled = False
        self.initialEmTrackerToOpRefSelector.addEnabled = True
        self.initialEmTrackerToOpRefSelector.removeEnabled = True
        self.initialEmTrackerToOpRefSelector.baseName = "EmTrackerToOpRefInitial"
        self.initialEmTrackerToOpRefSelector.setMRMLScene(slicer.mrmlScene)
        self.initialEmTrackerToOpRefSelector.setToolTip(
            "Pick a known transform corresponding to the Em pointer's coordinate frame"
        )
        parametersFormLayout.addRow(self.initialEmTrackerToOpRefSelectorLabel,
                                    self.initialEmTrackerToOpRefSelector)

        self.outputEmTrackerToOpRefTransformSelectorLabel = qt.QLabel(
            "Output EmTrackerToOpRef transform: ")
        self.outputEmTrackerToOpRefTransformSelector = slicer.qMRMLNodeComboBox(
        )
        self.outputEmTrackerToOpRefTransformSelector.nodeTypes = ([
            "vtkMRMLTransformNode"
        ])
        self.outputEmTrackerToOpRefTransformSelector.noneEnabled = True
        self.outputEmTrackerToOpRefTransformSelector.addEnabled = True
        self.outputEmTrackerToOpRefTransformSelector.removeEnabled = True
        self.outputEmTrackerToOpRefTransformSelector.baseName = "EmTrackerToOpRef"
        self.outputEmTrackerToOpRefTransformSelector.setMRMLScene(
            slicer.mrmlScene)
        self.outputEmTrackerToOpRefTransformSelector.setToolTip(
            "Select the transform to output the EmTrackerToOpRef calibration result to"
        )
        parametersFormLayout.addRow(
            self.outputEmTrackerToOpRefTransformSelectorLabel,
            self.outputEmTrackerToOpRefTransformSelector)

        self.outputEmPointerGtruthToOpPointerTransformSelectorLabel = qt.QLabel(
            "Output EmPointerGtruthToOpPointer transform: ")
        self.outputEmPointerGtruthToOpPointerTransformSelector = slicer.qMRMLNodeComboBox(
        )
        self.outputEmPointerGtruthToOpPointerTransformSelector.nodeTypes = ([
            "vtkMRMLTransformNode"
        ])
        self.outputEmPointerGtruthToOpPointerTransformSelector.noneEnabled = True
        self.outputEmPointerGtruthToOpPointerTransformSelector.addEnabled = True
        self.outputEmPointerGtruthToOpPointerTransformSelector.removeEnabled = True
        self.outputEmPointerGtruthToOpPointerTransformSelector.baseName = "EmPointerGtruthToOpPointer"
        self.outputEmPointerGtruthToOpPointerTransformSelector.setMRMLScene(
            slicer.mrmlScene)
        self.outputEmPointerGtruthToOpPointerTransformSelector.setToolTip(
            "Select the transform to output the EmPointerGtruthToOpPointer calibration result to"
        )
        parametersFormLayout.addRow(
            self.outputEmPointerGtruthToOpPointerTransformSelectorLabel,
            self.outputEmPointerGtruthToOpPointerTransformSelector)

        # Select defaults (to make debugging easier)
        opPointerToOpRefNode = slicer.util.getNode('OpPointerToOpRef')
        if opPointerToOpRefNode:
            self.opticalPointerSelector.setCurrentNode(opPointerToOpRefNode)
        emPointerToEmTrackerNode = slicer.util.getNode('EmPointerToEmTracker')
        if emPointerToEmTrackerNode:
            self.emPointerSelector.setCurrentNode(emPointerToEmTrackerNode)
        emTrackerToOpRefInitialNode = slicer.util.getNode(
            'EmTrackerToOpRefInitial')
        if emTrackerToOpRefInitialNode:
            self.initialEmTrackerToOpRefSelector.setCurrentNode(
                emTrackerToOpRefInitialNode)
        emTrackerToOpRefOutputNode = slicer.util.getNode('EmTrackerToOpRef')
        if emTrackerToOpRefOutputNode:
            self.outputEmTrackerToOpRefTransformSelector.setCurrentNode(
                emTrackerToOpRefOutputNode)
        emPointerGtruthToOpPointerOutputNode = slicer.util.getNode(
            'EmPointerGtruthToOpPointer')
        if emPointerGtruthToOpPointerOutputNode:
            self.outputEmPointerGtruthToOpPointerTransformSelector.setCurrentNode(
                emPointerGtruthToOpPointerOutputNode)

        #
        # Controls Area
        #
        controlsCollapsibleButton = ctk.ctkCollapsibleButton()
        controlsCollapsibleButton.text = "Controls"
        self.layout.addWidget(controlsCollapsibleButton)

        # Layout within the dummy collapsible button
        controlsFormLayout = qt.QFormLayout(controlsCollapsibleButton)

        #
        # Number of data points to be collected input
        #

        self.numberDataPointsInputLabel = qt.QLabel()
        self.numberDataPointsInputLabel.setText(
            "Number of Collected Data Points:")
        self.numberDataPointsInput = qt.QSpinBox()
        self.numberDataPointsInput.maximum = 5000
        self.numberDataPointsInput.minimum = 10
        self.numberDataPointsInputLabel.setToolTip(
            "Select how many sample points will be used in calculations")
        controlsFormLayout.addRow(self.numberDataPointsInputLabel,
                                  self.numberDataPointsInput)
        #self.numberDataPoints = self.numberDataPointsInput.value

        #
        # Delay spinbox
        #
        self.delaySelectorLabel = qt.QLabel()
        self.delaySelectorLabel.setText("Delay (seconds):")
        self.delaySelector = qt.QSpinBox()
        self.delaySelector.minimum = 1
        self.delaySelector.maximum = 10
        self.delaySelector.value = 5
        self.delaySelector.setToolTip(
            "Time to wait before starting data collection after clicking 'Start data collection' button"
        )
        controlsFormLayout.addRow(self.delaySelectorLabel, self.delaySelector)

        #
        # Start data collection button
        #
        self.startButton = qt.QPushButton("Start data collection")
        self.startButton.toolTip = "Start collecting data that will be used in calculations"
        self.startButton.enabled = True
        self.startButton.connect('clicked(bool)', self.onStartDataCollection)
        controlsFormLayout.addRow(self.startButton)

        #
        # Delay countdown timer
        #
        self.delayTimer = qt.QTimer()
        self.delayTimerLabel = qt.QLabel()
        self.delayTimer.setInterval(1000)  # 1 second
        self.delayTimer.setSingleShot(True)
        self.delayTimer.connect('timeout()', self.onDelayTimerTimeout)
        controlsFormLayout.addRow(self.delayTimerLabel)

        #
        # Data collection progress bar
        #
        self.collectionProgressBar = qt.QProgressBar()
        self.collectionProgressBar.setRange(0, 100)
        self.collectionProgressBar.setVisible(False)
        controlsFormLayout.addRow(self.collectionProgressBar)

        #
        # Display Area
        #
        displayCollapsibleButton = ctk.ctkCollapsibleButton()
        displayCollapsibleButton.text = "Calibration results"
        self.layout.addWidget(displayCollapsibleButton)

        # Layout within the dummy collapsible button
        displayFormLayout = qt.QFormLayout(displayCollapsibleButton)

        #
        # Error metrics
        #
        self.transErrorLabel = qt.QLabel("Position error: N/A")
        self.rotErrorLabel = qt.QLabel("Orientation error: N/A")
        displayFormLayout.addRow(self.transErrorLabel)
        displayFormLayout.addRow(self.rotErrorLabel)

        # Add vertical spacer
        self.layout.addStretch(1)
    def initUI(self):
        self.text_n7 = "-7"
        self.text_n6 = "-6"
        self.text_n5 = "-5"
        self.text_n4 = "-4"
        self.text_n3 = "-3"
        self.text_n2 = "-2"
        self.text_n1 = "-1"
        self.text_0 = "0"
        self.text_1 = "1"
        self.text_2 = "2"
        self.text_3 = "3"
        self.text_4 = "4"
        self.text_5 = "5"
        self.text_6 = "6"
        self.text_7 = "7"
        self.setStyleSheet("background-color:black;")
        self.setGeometry(
            330, 330, 355,
            355)  #Area of total window = 117150 ... Area of graph = 84000
        self.setWindowTitle('Crosshair')

        self.text_A = "A"
        self.text_B = "B"
        self.text_C = "C"
        self.text_D = "D"
        self.text_E = "E"
        self.text_F = "F"
        self.text_G = "G"
        self.text_H = "H"
        self.text_I = "I"
        self.text_J = "J"
        self.text_K = "K"
        self.text_L = "L"
        self.text_M = "M"
        self.text_N = "N"
        self.indexX = ""
        self.indexY = ""
        self.ndepth = ""
        self.state2 = 0
        self.blink = 0

        self.text_Hole = "o"

        self.scale = 1.0

        self.mousePointX1 = 0
        self.mousePointY1 = 0

        self.mousePointX2 = 0
        self.mousePointY2 = 0

        self.mousePointX3 = 0
        self.mousePointY3 = 0

        self.mousePointX4 = 0
        self.mousePointY4 = 0

        self.LeftSideVertical = 0
        self.LeftSideHorizontal = 0
        self.RightSideVertical = 0
        self.RightSideHorizontal = 0
        self.BottomVertical = 0
        self.BottomHorizontal = 0
        self.TopVertical = 0
        self.TopHorizontal = 0

        self.LetterSpacingVertical = 0
        self.LetterSpacingHorizontal = 0
        self.NumberSpacingVertical = 0
        self.NumberSpacingHorizontal = 0
        self.SpacingBottom = 0

        self.LetterOriginX = 0
        self.LetterOriginY = 0
        self.NumberOriginX = 0
        self.NumberOriginY = 0

        self.leftX = 0
        self.leftY = 0
        self.topX = 0
        self.topY = 0
        self.rightX = 0
        self.rightY = 0
        self.bottomX = 0
        self.bottomY = 0

        self.RightSideHoleSpacing = 0
        self.RightSideHoleSpacingHorizontal = 0
        self.RightSideHoleSpacingVertical = 0
        self.bottomHoleSpacingVertical = 0
        self.bottomHoleSpacingHorizontal = 0

        self.HorizontalLine = 0
        self.VerticalLine = 0

        self.VertX1 = 0
        self.VertX2 = 0
        self.VertY1 = 0
        self.VertY2 = 0
        self.VertSlope = 0
        self.VertYInt = 0
        self.VertFinderLine = 0

        self.HorizX1 = 0
        self.HorizX2 = 0
        self.HorizY1 = 0
        self.HorizY2 = 0
        self.HorizSlope = 0
        self.HorizYInt = 0
        self.HorizFinderLine = 0

        self.setGeometry(0, 0, 1000, 1000)
        self.setWindowTitle('Template')
        self.setWindowFlags(self.windowFlags() | qt.Qt.FramelessWindowHint)
        self.show()

        self.timer = qt.QTimer()
        self.timer.timeout.connect(self.doBlinkMethod)
        self.timer.start(500)  # every 10 seconds
Exemple #30
0
 def onEntry(self, comingFrom, transitionType):
     super(Step3, self).onEntry(comingFrom, transitionType)
     self.ctimer = qt.QTimer()
     self.ctimer.singleShot(0, self.killButton)
     print('onEntry - step %s' % self.id())