コード例 #1
0
  def updateTable(self):
    self.portsTableModel = qt.QStandardItemModel()
    self.portsTable.setModel(self.portsTableModel)
    self.transformSliders.reset()
    self.removePortButton.enabled = False
    self.transformSliders.setMRMLTransformNode(None)

    node = self.logic.markupsNode

    if node is None:
      return

    self.itemPortIdxMap = {}
    for i in range(node.GetNumberOfFiducials()):
      item = qt.QStandardItem()
      item.setText(self.logic.getPortName(i))
      self.portsTableModel.setItem(i, 0, item)
      self.itemPortIdxMap[item] = i

      item = qt.QStandardItem()
      item.setText('Visible')
      item.setCheckable(True)
      if self.logic.isToolVisible(i):
        checkState = 2 # checked enum
      else:
        checkState = 0 # unchecked enum
      item.setCheckState(checkState)
      self.portsTableModel.setItem(i, 1, item)
      self.itemPortIdxMap[item] = i
    self.portsTableModel.setHeaderData(0, 1, "Port Fiducial Name")
    self.portsTableModel.setHeaderData(1, 1, " ")
    self.portsTable.setColumnWidth(0, 15*len("Port Fiducial Name"))

    self.portsTableModel.itemChanged.connect(self.onTableItemChanged)
    self.portsTable.selectionModel().currentRowChanged.connect(self.onCurrentToolChanged)
コード例 #2
0
ファイル: ColorBox.py プロジェクト: dstoup/Slicer
    def addRow(self, c):
        name = self.colorNode.GetColorName(c)
        lut = self.colorNode.GetLookupTable()
        rgb = lut.GetTableValue(c)
        brush = qt.QBrush()
        self.brushes.append(brush)
        color = qt.QColor()
        color.setRgb(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255)
        brush.setColor(color)

        # index
        item = qt.QStandardItem()
        item.setText(str(c))
        self.model.setItem(self.row, 0, item)
        self.items.append(item)
        # color
        item = qt.QStandardItem()
        item.setData(color, 1)
        self.model.setItem(self.row, 1, item)
        self.items.append(item)
        # name
        item = qt.QStandardItem()
        item.setText(self.colorNode.GetColorName(c))
        self.model.setItem(self.row, 2, item)
        self.items.append(item)
        self.row += 1
コード例 #3
0
ファイル: diagnosis.py プロジェクト: juan-ruiz/pdg
 def onFillButtonClicked(self):
     print "Llenado"
     #Defino modelo para agregar al widget de tabla
     self.modelo = qt.QStandardItemModel()
     genMod = self.modelo
     self.items = []
     #Agrego modelo a widget
     self.vista.setModel(self.modelo)
     fila = 0
     for i in range(1, 8):
         #objeto item a agregar
         item = qt.QStandardItem()
         color = qt.QColor()
         color.setRgb(0, 250, 0)
         item.setData(color, 1)
         #agrego item a modelo fila, columna, item
         self.modelo.setItem(fila, 0, item)
         self.items.append(item)
         columna = 0
         for k in range(1, 8):
             item = qt.QStandardItem()
             item.setText('Texto')
             color.setRgb(random.randrange(0,
                                           255), random.randrange(0, 255),
                          random.randrange(0, 255))
             item.setData(color, 1)
             self.modelo.setItem(fila, columna, item)
             self.items.append(item)
             columna += 1
         fila += 1
     #Hago visible el widget y deshabilito el boton
     self.vista.visible = True
     self.fillTable.enabled = False
コード例 #4
0
    def populateStats(self):
        if not self.logic:
            return
        displayNode = self.labelNode.GetDisplayNode()
        colorNode = displayNode.GetColorNode()
        lut = colorNode.GetLookupTable()
        self.items = []
        self.model = qt.QStandardItemModel()
        self.view.setModel(self.model)
        self.view.verticalHeader().visible = False
        row = 0
        for i in self.logic.labelStats["Labels"]:
            col = 0

            color = qt.QColor()
            rgb = lut.GetTableValue(i)
            color.setRgb(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255)
            item = qt.QStandardItem()
            item.setData(color, qt.Qt.DecorationRole)
            item.setToolTip(colorNode.GetColorName(i))
            item.setEditable(False)
            self.model.setItem(row, col, item)
            self.items.append(item)
            col += 1

            item = qt.QStandardItem()
            item.setData(colorNode.GetColorName(i), qt.Qt.DisplayRole)
            item.setEditable(False)
            self.model.setItem(row, col, item)
            self.items.append(item)
            col += 1

            for k in self.logic.keys:
                item = qt.QStandardItem()
                # set data as float with Qt::DisplayRole
                item.setData(float(self.logic.labelStats[i, k]),
                             qt.Qt.DisplayRole)
                item.setToolTip(colorNode.GetColorName(i))
                item.setEditable(False)
                self.model.setItem(row, col, item)
                self.items.append(item)
                col += 1
            row += 1

        self.view.setColumnWidth(0, 30)
        self.model.setHeaderData(0, 1, " ")
        self.model.setHeaderData(1, 1, "Type")
        col = 2
        for k in self.logic.keys:
            self.view.setColumnWidth(col, 15 * len(k))
            self.model.setHeaderData(col, 1, k)
            col += 1
コード例 #5
0
    def load(self, columnNames, data):
        """ Load all the information displayed in the table
        :param columnNames: list of column names
        :param data: list of rows, each of them with one value per column
        """
        self.items = []

        self.statisticsTableModel = qt.QStandardItemModel()
        self.tableView.setModel(self.statisticsTableModel)
        self.tableView.verticalHeader().visible = False
        self.tableView.sortingEnabled = True

        policy = self.tableView.sizePolicy
        policy.setVerticalPolicy(qt.QSizePolicy.Expanding)
        policy.setHorizontalPolicy(qt.QSizePolicy.Expanding)
        policy.setVerticalStretch(0)
        self.tableView.setSizePolicy(policy)

        # Header
        self.statisticsTableModel.setHorizontalHeaderLabels(columnNames)

        for row in range(len(data)):
            rowData = data[row]
            for col in range(len(rowData)):
                item = qt.QStandardItem()
                item.setData(data[row][col], qt.Qt.DisplayRole)
                item.setEditable(False)
                self.statisticsTableModel.setItem(row, col,item)
                self.items.append(item)

        self.tableView.sortByColumn(0, 1)   # Sort by Date Descending
コード例 #6
0
ファイル: ColorBox.py プロジェクト: dstoup/Slicer
 def populateColors(self):
     self.brushes = []
     self.items = []
     self.model = qt.QStandardItemModel()
     self.view.setModel(self.model)
     pattern = self.search.text
     self.row = 0
     for c in self.recents:
         self.addRow(c)
     if self.recents:
         item = qt.QStandardItem()
         item.setText("--")
         self.model.setItem(self.row, 0, item)
         self.model.setItem(self.row, 1, item)
         self.model.setItem(self.row, 2, item)
         self.items.append(item)
         self.row += 1
     for c in xrange(self.colorNode.GetNumberOfColors()):
         name = self.colorNode.GetColorName(c)
         if name != "(none)" and name.find(pattern) >= 0:
             self.addRow(c)
     self.view.setColumnWidth(0, 75)
     self.view.setColumnWidth(1, 50)
     self.view.setColumnWidth(2, 150)
     self.model.setHeaderData(0, 1, "Number")
     self.model.setHeaderData(1, 1, "Color")
     self.model.setHeaderData(2, 1, "Name")
コード例 #7
0
 def populateStatistics(self, FeatureVectors):
   if not (FeatureVectors):
     return
     
   self.items = []
   self.model = qt.QStandardItemModel()
   row = 0
   col = 0
   
   wholeNumberKeys = ['Voxel Count', 'Gray Levels', 'Minimum Intensity', 'Maximum Intensity', 'Median Intensity', 'Range']
   precisionOnlyKeys = ['Entropy', 'Volume mm^3', 'Volume cc', 'Mean Intensity', 'Mean Deviation', 'Root Mean Square', 'Standard Deviation', 'Surface Area mm^3']
   
   for featureVector in FeatureVectors:
     col = 0    
     for feature in featureVector:
       item = qt.QStandardItem()   
       value = featureVector[feature]       
       featureFormatted = value
       # add formatting here
       item.setText(str(featureFormatted))
       item.setToolTip(feature)
       self.model.setItem(row,col,item)
       self.items.append(item)
       col += 1
     row += 1
   
   self.model.setHeaderData(0,1," ")
   
   # set table headers
   col = 0
   for feature in FeatureVectors[0]:
     self.model.setHeaderData(col,1,feature)
     col += 1
コード例 #8
0
    def populateStats(self):
        if not self.logic:
            return
        displayNode = self.labelNode.GetDisplayNode()
        colorNode = displayNode.GetColorNode()
        lut = colorNode.GetLookupTable()
        self.items = []
        self.model = qt.QStandardItemModel()
        self.view.setModel(self.model)
        self.view.verticalHeader().visible = False
        row = 0
        for i in self.logic.labelStats["Labels"]:
            color = qt.QColor()
            rgb = lut.GetTableValue(i)
            color.setRgb(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255)
            item = qt.QStandardItem()
            item.setData(color, 1)
            item.setToolTip(colorNode.GetColorName(i))
            self.model.setItem(row, 0, item)
            self.items.append(item)
            col = 1
            for k in self.logic.keys:
                item = qt.QStandardItem()
                if col == 1:
                    item.setText(self.logic.labelStats[i, k])
                else:
                    item.setText("%.3f" % self.logic.labelStats[i, k])
                item.setToolTip(colorNode.GetColorName(i))
                self.model.setItem(row, col, item)
                self.items.append(item)
                col += 1
            row += 1

        self.view.setColumnWidth(0, 30)
        self.model.setHeaderData(0, 1, " ")
        col = 1
        for k in self.logic.keys:
            self.view.setColumnWidth(col, 15 * len(k))
            self.model.setHeaderData(col, 1, k)
            col += 1
コード例 #9
0
    def populateStats(self):
        """This Logic is copied from the Label Statistics Module -Steve Pieper (Isomics)"""
        # Populate the table with SegmentCAD label map statistics
        if not (self.logic and self.statisticsLogic):
            return
        displayNode = self.nodeSegmentCAD.GetDisplayNode()
        colorNode = displayNode.GetColorNode()
        lut = colorNode.GetLookupTable()
        self.items = []
        self.model = qt.QStandardItemModel()
        self.labelStatisticsTableView.setModel(self.model)
        self.labelStatisticsTableView.verticalHeader().visible = False
        row = 0
        for i in self.statisticsLogic.labelStats["Labels"]:
            color = qt.QColor()
            rgb = lut.GetTableValue(i)
            color.setRgb(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255)
            item = qt.QStandardItem()
            item.setData(color, 1)
            item.setToolTip(colorNode.GetColorName(i))
            self.model.setItem(row, 0, item)
            self.items.append(item)
            col = 1
            for k in self.statisticsLogic.keys:
                item = qt.QStandardItem()
                item.setText(str(self.statisticsLogic.labelStats[i, k]))
                item.setToolTip(colorNode.GetColorName(i))
                self.model.setItem(row, col, item)
                self.items.append(item)
                col += 1
            row += 1

        self.labelStatisticsTableView.setColumnWidth(0, 30)
        self.model.setHeaderData(0, 1, " ")
        col = 1
        for k in self.statisticsLogic.keys:
            self.labelStatisticsTableView.setColumnWidth(col, 15 * len(k))
            self.model.setHeaderData(col, 1, k)
            col += 1
コード例 #10
0
def PopulateRadiomicsTable(self, RadiomicsTableView, RadiomicsTableModel,
                           FeatureVectors):
    #initialize table with another function
    #use this function to add a feature vector to the table

    if not (FeatureVectors):
        return

    self.items = []
    self.RadiomicsTableModel = qt.QStandardItemModel()
    self.RadiomicsTableView.setModel(self.RadiomicsTableModel)
    self.RadiomicsTableView.verticalHeader().visible = False
    row = 0
    col = 0

    wholeNumberKeys = [
        'Voxel Count', 'Gray Levels', 'Minimum Intensity', 'Maximum Intensity',
        'Median Intensity', 'Range'
    ]
    precisionOnlyKeys = [
        'Entropy', 'Volume mm^3', 'Volume cc', 'Mean Intensity',
        'Mean Deviation', 'Root Mean Square', 'Standard Deviation',
        'Surface Area mm^3'
    ]

    for featureVector in FeatureVectors:
        col = 0
        for feature in featureVector:
            item = qt.QStandardItem()
            value = featureVector[feature]
            featureFormatted = value
            # add formatting here
            item.setText(str(featureFormatted))
            item.setToolTip(feature)
            self.RadiomicsTableModel.setItem(row, col, item)
            self.items.append(item)
            col += 1
        row += 1

    self.RadiomicsTableView.setColumnWidth(0, 30)
    self.RadiomicsTableModel.setHeaderData(0, 1, " ")

    # set table headers
    col = 0
    for feature in FeatureVectors[0]:
        self.RadiomicsTableView.setColumnWidth(col, 15 * len(feature))
        self.RadiomicsTableModel.setHeaderData(col, 1, feature)
        col += 1
コード例 #11
0
    def populateStats(self):
        if not self.logic:
            return
        self.items = []
        self.model = qt.QStandardItemModel()
        self.view.setModel(self.model)
        row = 0
        for i in self.logic.labelStats["Labels"]:
            col = 0
            for k in self.logic.keys:
                item = qt.QStandardItem()
                item.setText(str(self.logic.labelStats[i, k]))
                self.model.setItem(row, col, item)
                self.items.append(item)
                col += 1
            row += 1

        col = 0
        for k in self.logic.keys:
            self.view.setColumnWidth(col, 15 * len(k))
            self.model.setHeaderData(col, 1, k)
            col += 1
コード例 #12
0
    def updateStructures(self, caller=None, event=None):
        """re-build the Structures frame
    - optional caller and event ignored (for use as vtk observer callback)
    """

        if self.setMergeButton.destroyed():
            """ TODO: here the python class still exists but the 
      Qt widgets are gone - need to figure out when to remove observers 
      and free python code - probably the destroyed() signal.
      """
            self.cleanup()
            return

        self.setMergeButton.setDisabled(not self.master)

        # reset to a fresh model
        self.brushes = []
        self.items = []
        self.structures = qt.QStandardItemModel()
        self.structuresView.setModel(self.structures)

        # if no merge volume exists, disable everything - else enable
        merge = self.mergeVolume()
        self.addStructureButton.setDisabled(not merge)
        self.deleteStructuresButton.setDisabled(not merge)
        self.mergeButton.setDisabled(not merge)
        self.splitButton.setDisabled(not merge)
        self.mergeAndBuildButton.setDisabled(not merge)
        self.replaceModels.setDisabled(not merge)
        if self.mergeValidCommand:
            # will be passed current
            self.mergeValidCommand(merge)

        if not merge:
            return

        colorNode = merge.GetDisplayNode().GetColorNode()
        lut = colorNode.GetLookupTable()

        masterName = self.master.GetName()
        slicer.mrmlScene.InitTraversal()
        vNode = slicer.mrmlScene.GetNextNodeByClass("vtkMRMLScalarVolumeNode")
        self.row = 0
        while vNode:
            vName = vNode.GetName()
            # match something like "CT-lung-label1"
            regexp = "%s-.*-label" % masterName
            if re.match(regexp, vName):
                # figure out what name it is
                # - account for the fact that sometimes a number will be added to the end of the name
                start = 1 + len(masterName)
                end = vName.rfind("-label")
                structureName = vName[start:end]
                structureIndex = colorNode.GetColorIndexByName(structureName)
                structureColor = lut.GetTableValue(structureIndex)[0:3]
                brush = qt.QBrush()
                self.brushes.append(brush)
                color = qt.QColor()
                color.setRgb(structureColor[0] * 255, structureColor[1] * 255,
                             structureColor[2] * 255)
                brush.setColor(color)

                # label index
                item = qt.QStandardItem()
                item.setEditable(False)
                item.setText(str(structureIndex))
                self.structures.setItem(self.row, 0, item)
                self.items.append(item)
                # label color
                item = qt.QStandardItem()
                item.setEditable(False)
                item.setData(color, 1)
                self.structures.setItem(self.row, 1, item)
                self.items.append(item)
                # structure name
                item = qt.QStandardItem()
                item.setEditable(False)
                item.setText(structureName)
                self.structures.setItem(self.row, 2, item)
                self.items.append(item)
                # volumeName name
                item = qt.QStandardItem()
                item.setEditable(False)
                item.setText(vName)
                self.structures.setItem(self.row, 3, item)
                self.items.append(item)
                # sort order
                item = qt.QStandardItem()
                item.setEditable(True)
                item.setText("")
                self.structures.setItem(self.row, 4, item)
                self.items.append(item)
                self.row += 1

            vNode = slicer.mrmlScene.GetNextNodeByClass(
                "vtkMRMLScalarVolumeNode")

        self.structuresView.setColumnWidth(0, 70)
        self.structuresView.setColumnWidth(1, 50)
        self.structuresView.setColumnWidth(2, 60)
        self.structuresView.setColumnWidth(3, 100)
        self.structuresView.setColumnWidth(4, 10)
        self.structures.setHeaderData(0, 1, "Number")
        self.structures.setHeaderData(1, 1, "Color")
        self.structures.setHeaderData(2, 1, "Name")
        self.structures.setHeaderData(3, 1, "Label Volume")
        self.structures.setHeaderData(4, 1, "Order")
        self.structuresView.setModel(self.structures)
コード例 #13
0
  def updateStructures(self,caller=None, event=None):
    """re-build the Structures frame
    - optional caller and event ignored (for use as vtk observer callback)
    """

    if slicer.mrmlScene.IsBatchProcessing():
      return

    if self.setMergeButton.destroyed():
      """ TODO: here the python class still exists but the
      Qt widgets are gone - need to figure out when to remove observers
      and free python code - probably the destroyed() signal.
      """
      self.cleanup()
      return

    self.setMergeButton.setDisabled(not self.master)

    # reset to a fresh model
    self.brushes = []
    self.items = []
    self.structures = qt.QStandardItemModel()
    self.structuresView.setModel(self.structures)

    # if no merge volume exists, disable everything - else enable
    merge = self.mergeVolume()
    self.addStructureButton.setDisabled(not merge)
    self.deleteStructuresButton.setDisabled(not merge)
    self.mergeButton.setDisabled(not merge)
    self.splitButton.setDisabled(not merge)
    self.mergeAndBuildButton.setDisabled(not merge)
    self.replaceModels.setDisabled(not merge)
    if self.mergeValidCommand:
      # will be passed current
      self.mergeValidCommand(merge)

    if not merge:
      return

    colorNode = merge.GetDisplayNode().GetColorNode()
    lut = colorNode.GetLookupTable()

    masterName = self.master.GetName()
    volumeNodes = self.structureVolumes()
    for vNode in volumeNodes:
      vName = vNode.GetName()
      # figure out what name it is
      # - account for the fact that sometimes a number will be added to the end of the name
      start = 1+len(masterName)
      end = vName.rfind("-label")
      structureName = vName[start:end]
      structureIndex = colorNode.GetColorIndexByName( structureName )
      structureColor = lut.GetTableValue(structureIndex)[0:3]
      brush = qt.QBrush()
      self.brushes.append(brush)
      color = qt.QColor()
      color.setRgb(structureColor[0]*255,structureColor[1]*255,structureColor[2]*255)
      brush.setColor(color)

      # label index
      item = qt.QStandardItem()
      item.setEditable(False)
      item.setText( "%03d"%int(structureIndex) )
      self.structures.setItem(self.row,0,item)
      self.items.append(item)
      # label color
      item = qt.QStandardItem()
      item.setEditable(False)
      item.setData(color,1)
      self.structures.setItem(self.row,1,item)
      self.items.append(item)
      # structure name
      item = qt.QStandardItem()
      item.setEditable(False)
      item.setText(structureName)
      self.structures.setItem(self.row,2,item)
      self.items.append(item)
      # volumeName name
      item = qt.QStandardItem()
      item.setEditable(False)
      item.setText(vName)
      self.structures.setItem(self.row,3,item)
      self.items.append(item)
      # sort order
      item = qt.QStandardItem()
      item.setEditable(True)
      item.setText("")
      self.structures.setItem(self.row,4,item)
      self.items.append(item)
      self.row += 1

    for i in range(5):
      self.structuresView.resizeColumnToContents(i)

    self.structures.setHeaderData(0,1,"Number")
    self.structures.setHeaderData(1,1,"Color")
    self.structures.setHeaderData(2,1,"Name")
    self.structures.setHeaderData(3,1,"Label Volume")
    self.structures.setHeaderData(4,1,"Order")
    self.structuresView.setModel(self.structures)
    self.structuresView.connect("activated(QModelIndex)", self.onStructuresClicked)
    self.structuresView.setProperty('SH_ItemView_ActivateItemOnSingleClick', 1)

    self.structureLabelNames = []
    rows = self.structures.rowCount()
    for row in xrange(rows):
      self.structureLabelNames.append(self.structures.item(row,2).text())
コード例 #14
0
    def populateStats(self):
        if not self.logic:
            return
        displayNode = self.insplabelNode.GetDisplayNode()
        colorNode = displayNode.GetColorNode()
        lut = colorNode.GetLookupTable()
        self.items = []
        self.model = qt.QStandardItemModel()
        self.view.setModel(self.model)
        self.view.verticalHeader().visible = False
        row = 0

        cycle = ['insp']

        for i in cycle:
            for regionTag, regionValue in zip(self.logic.regionTags,
                                              self.logic.regionValues):
                color = qt.QColor()
                rgb = lut.GetTableValue(regionValue[0])
                color.setRgb(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255)
                item = qt.QStandardItem()
                item.setData(color, 1)
                item.setText(str(regionTag))
                item.setData(regionTag, 1)
                item.setToolTip(regionTag)
                self.model.setItem(row, 0, item)
                self.items.append(item)
                col = 1
                for k in self.logic.keys:
                    item = qt.QStandardItem()
                    item.setText("%.3f" %
                                 self.logic.labelStats[i, k, regionTag])
                    self.model.setItem(row, col, item)
                    self.items.append(item)
                    col += 1
                row += 1

        self.view.setColumnWidth(0, 30)
        self.model.setHeaderData(0, 1, "INSP")
        col = 1
        for k in self.logic.keys:
            self.view.setColumnWidth(col, 15 * len(k))
            self.model.setHeaderData(col, 1, k)
            col += 1

        self.itemsexp = []
        self.modelexp = qt.QStandardItemModel()
        self.viewexp.setModel(self.modelexp)
        self.viewexp.verticalHeader().visible = False
        row = 0

        cycle = ['exp']

        for i in cycle:
            for regionTag, regionValue in zip(self.logic.regionTags,
                                              self.logic.regionValues):
                color = qt.QColor()
                rgb = lut.GetTableValue(regionValue[0])
                color.setRgb(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255)
                item = qt.QStandardItem()
                item.setData(color, 1)
                item.setText(str(regionTag))
                item.setData(regionTag, 1)
                item.setToolTip(regionTag)
                self.modelexp.setItem(row, 0, item)
                self.itemsexp.append(item)
                col = 1
                for k in self.logic.keys:
                    item = qt.QStandardItem()
                    item.setText("%.3f" %
                                 self.logic.labelStats[i, k, regionTag])
                    self.modelexp.setItem(row, col, item)
                    self.itemsexp.append(item)
                    col += 1
                row += 1

        self.viewexp.setColumnWidth(0, 30)
        self.modelexp.setHeaderData(0, 1, "EXP")
        col = 1
        for k in self.logic.keys:
            self.viewexp.setColumnWidth(col, 15 * len(k))
            self.modelexp.setHeaderData(col, 1, k)
            col += 1