Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
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)