def createWidgets(self): logging.debug("In RulerAction::createWidgets()") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap( ":/static/default/icon/48x48/ruler-diagonal.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionRuler = QtGui.QAction(self.parent()) self.actionRuler.setCheckable(True) self.actionRuler.setIcon(icon) self.actionRuler.setObjectName("actionRuler") self.actionRuler.setText( QtGui.QApplication.translate("MainWindow", "&Ruler", None, QtGui.QApplication.UnicodeUTF8)) self.parent().menuTools.addAction(self.actionRuler) self.parent().toolBarTools.addAction(self.actionRuler) parentProperties = self.parent().scrollAreaWidgetContents self.propertiesAction = RulerProperties(parentProperties) parentProperties.layout().addWidget(self.propertiesAction) self.propertiesAction.hide()
class RulerAction(QtCore.QObject): def __init__(self, ilsa): logging.debug("In RulerAction::__init__()") super(RulerAction, self).__init__(ilsa.parentWidget()) self._ilsa = ilsa self.createWidgets() self.createActions() def createWidgets(self): logging.debug("In RulerAction::createWidgets()") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap( ":/static/default/icon/48x48/ruler-diagonal.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionRuler = QtGui.QAction(self.parent()) self.actionRuler.setCheckable(True) self.actionRuler.setIcon(icon) self.actionRuler.setObjectName("actionRuler") self.actionRuler.setText( QtGui.QApplication.translate("MainWindow", "&Ruler", None, QtGui.QApplication.UnicodeUTF8)) self.parent().menuTools.addAction(self.actionRuler) self.parent().toolBarTools.addAction(self.actionRuler) parentProperties = self.parent().scrollAreaWidgetContents self.propertiesAction = RulerProperties(parentProperties) parentProperties.layout().addWidget(self.propertiesAction) self.propertiesAction.hide() def uncheck(self, actionType): if self.actionRuler.isChecked() and actionType!=self._ilsa.ACTION_TYPE_MOUSE: self.actionRuler.setChecked(False) self.slotActionRuler() def createActions(self): logging.debug("In RulerAction::createActions()") self.connect(self.actionRuler, QtCore.SIGNAL("triggered()"), self.slotActionRuler) def slotActionRuler(self): logging.debug("In RulerAction::slotActionRuler()") if not self.actionRuler.isChecked(): self.propertiesAction.hide() self.parent().toolProperties.setVisible(False) if self.propertiesAction.ruler: if self.propertiesAction.ruler.representation.GetDistance() == 0: self.slotDeleteRuler(True) return self._ilsa.desactivateOthers("measure") if self.propertiesAction.ruler: self.parent().toolProperties.setVisible(True) self.propertiesAction.show() return self.propertiesAction.connect(self.propertiesAction.newRulerButton, QtCore.SIGNAL("clicked ( bool)"), self.slotNewRuler) self.propertiesAction.connect(self.propertiesAction.deleteRulerButton, QtCore.SIGNAL("clicked ( bool)"), self.slotDeleteRuler) self.parent().toolProperties.setVisible(True) self.propertiesAction.show() self.newRuler() def newRuler(self): logging.debug("In RulerAction::newRuler()") self.ruler = Ruler() self.propertiesAction.addRuler(self.ruler) self.started = False self.scenesMap = {} self.observers = {} for scene in self._ilsa.scenes(): if isinstance(scene, VtkImagePlane): self.observers[scene] = scene.addObserver("MouseMoveEvent", self.activateRuler) self.scenesMap[scene.interactor.GetInteractorStyle()] = scene def slotNewRuler(self, checked): logging.debug("In RulerAction::slotNewRuler()") if not self.propertiesAction.ruler or self.propertiesAction.ruler.representation.GetDistance() != 0: self.newRuler() def slotDeleteRuler(self, checked): logging.debug("In RulerAction::slotDeleteRuler()") self.propertiesAction.removeSelectedRuler() for scene, observer in self.observers.items(): scene.removeObserver(observer) self.ruler = None def activateRuler(self, obj, evt): logging.debug("In RulerAction::activateRuler()") if not self.ruler.started: scene = self.scenesMap[obj] self.ruler.scene = scene self.ruler.activate() else: for scene, observer in self.observers.items(): scene.removeObserver(observer) def removeScene(self, scene): logging.debug("In RulerAction::removeScene()") self.propertiesAction.removeScene(scene)