def createWidgets(self): logging.debug("In MarkAction::createWidgets()") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/static/default/icon/48x48/curve.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionMark = QtGui.QAction(self.parent()) self.actionMark.setCheckable(True) self.actionMark.setIcon(icon) self.actionMark.setObjectName("actionMark") self.actionMark.setText( QtGui.QApplication.translate("MarkAction", "&Mark", None, QtGui.QApplication.UnicodeUTF8) ) self.parent().menuTools.addAction(self.actionMark) self.parent().toolBarTools.addAction(self.actionMark) parentProperties = self.parent().scrollAreaWidgetContents self.propertiesAction = MarkProperties(parentProperties) parentProperties.layout().addWidget(self.propertiesAction) self.propertiesAction.hide()
class MarkAction(QtCore.QObject): def __init__(self, ilsa): logging.debug("In MarkAction::__init__()") super(MarkAction, self).__init__(ilsa.parentWidget()) self._ilsa = ilsa self.createWidgets() self.createActions() def createWidgets(self): logging.debug("In MarkAction::createWidgets()") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/static/default/icon/48x48/curve.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionMark = QtGui.QAction(self.parent()) self.actionMark.setCheckable(True) self.actionMark.setIcon(icon) self.actionMark.setObjectName("actionMark") self.actionMark.setText( QtGui.QApplication.translate("MarkAction", "&Mark", None, QtGui.QApplication.UnicodeUTF8) ) self.parent().menuTools.addAction(self.actionMark) self.parent().toolBarTools.addAction(self.actionMark) parentProperties = self.parent().scrollAreaWidgetContents self.propertiesAction = MarkProperties(parentProperties) parentProperties.layout().addWidget(self.propertiesAction) self.propertiesAction.hide() def uncheck(self, actionType): if self.actionMark.isChecked(): self.actionMark.setChecked(False) self.slotActionMark() def createActions(self): logging.debug("In MarkAction::createActions()") self.connect(self.actionMark, QtCore.SIGNAL("triggered()"), self.slotActionMark) self.propertiesAction.connect( self.propertiesAction.newMarkButton, QtCore.SIGNAL("clicked ( bool)"), self.slotNewMark ) self.propertiesAction.connect( self.propertiesAction.deleteMarkButton, QtCore.SIGNAL("clicked ( bool)"), self.slotDeleteMark ) def slotActionMark(self): logging.debug("In MarkAction::slotActionMark()") scenes = self._ilsa.scenes() if not self.actionMark.isChecked(): if self.propertiesAction.contour and not self.propertiesAction.contour.started: self.propertiesAction.removeSelectedContour() self.propertiesAction.hide() self.parent().toolProperties.setVisible(False) self.propertiesAction.lockAll() return self._ilsa.desactivateOthers("mark") self.parent().toolProperties.setVisible(True) self.propertiesAction.show() if self.propertiesAction.getContour(): self.propertiesAction.getPropertiesFromContour() return replyList = [] for scene in scenes: if isinstance(scene, VtkMultiSliceImagePlane): contour = MultiSliceContour(scene) else: contour = Contour(scene) replyList.append(contour) self.propertiesAction.addContour(replyList[0]) for i, scene in enumerate(scenes): a = replyList[:] b = a.pop(i) b.replyList = a def slotDeleteMark(self, checked): logging.debug("In MarkAction::slotDeleteMark()") self.propertiesAction.removeSelectedContour() def slotNewMark(self, checked): logging.debug("In MarkAction::slotNewMark()") for contour in self.propertiesAction.contours.values(): if contour.contourWidget.GetWidgetState() != 2: return scenes = self._ilsa.scenes() replyList = [] for scene in scenes: if isinstance(scene, VtkMultiSliceImagePlane): contour = MultiSliceContour(scene) else: contour = Contour(scene) replyList.append(contour) self.propertiesAction.addContour(replyList[0]) for i, scene in enumerate(scenes): a = replyList[:] b = a.pop(i) b.replyList = a def save(self): logging.debug("In MarkAction::save()") contours = self.propertiesAction.contours.values() yamlContours = [] for contour in contours: yamlContours.append(contour.save()) yaml = {"contours": yamlContours} return yaml def restore(self, value): logging.debug("In MarkAction::restore()") contours = value["contours"] if contours: for contour in contours: self.loadContour(contour) def loadContour(self, contourData): logging.debug("In MarkAction::loadContour()") scenes = self._ilsa.scenes() replyList = [] for scene in scenes: if isinstance(scene, VtkMultiSliceImagePlane): contour = MultiSliceContour(scene) else: contour = Contour(scene) replyList.append(contour) self.propertiesAction.addContour(replyList[0]) for i, scene in enumerate(scenes): a = replyList[:] b = a.pop(i) b.replyList = a contour.loadPoints(contourData["points"]) lc = contourData["lineColor"] lineColor = QColor.fromRgbF(lc[0], lc[1], lc[2]) self.propertiesAction.changeLineColor(lineColor) self.propertiesAction.slotActionVisible(contourData["visible"]) self.propertiesAction.slotActionLock(contourData["locked"]) self.propertiesAction.lock.setChecked(contourData["locked"]) self.propertiesAction.slotThicknessChanged(contourData["radius"]) def addScene(self, scene): logging.debug("In MarkAction::addScene()") contours = self.propertiesAction.contours.values() for contour in contours: contour.addScene(scene) def removeScene(self, scene): logging.debug("In MarkAction::removeScene()") contours = self.propertiesAction.contours.values() for contour in contours: if contour.scene == scene: toRemove = contour if contour.replyList: contour = contour.replyList[0] self.propertiesAction.switchContourReference(toRemove, contour) else: self.propertiesAction.removeCountour(contour) continue else: for reply in contour.replyList: if reply.scene == scene: toRemove = reply break contour.removeScenePlugin(toRemove) # TODO free em ToRemove for reply in contour.replyList: reply.removeScenePlugin(toRemove) toRemove.delete()