def createWidgets(self): logging.debug("In TextAction::createWidgets()") self.actionText = QtGui.QAction(self.parent()) self.actionText.setCheckable(True) icon41 = QtGui.QIcon() icon41.addPixmap( QtGui.QPixmap(":/static/default/icon/48x48/draw-text.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off ) self.actionText.setIcon(icon41) self.actionText.setObjectName("actionText") self.actionText.setText( QtGui.QApplication.translate("MainWindow", "&Text", None, QtGui.QApplication.UnicodeUTF8) ) self.parent().menuTools.addAction(self.actionText) self.parent().toolBarTools.addAction(self.actionText) parentProperties = self.parent().scrollAreaWidgetContents self.propertiesAction = TextProperties(parentProperties) parentProperties.layout().addWidget(self.propertiesAction) self.propertiesAction.hide()
class TextAction(QtCore.QObject): def __init__(self, ilsa): logging.debug("In TextAction::__init__()") super(TextAction, self).__init__(ilsa.parentWidget()) self._ilsa = ilsa self.createWidgets() self.createActions() self.connected = False self._action = False self.text = None self.observers = None def uncheck(self, actionType): if self.actionText.isChecked(): self.actionText.setChecked(False) self.slotActionText() def createWidgets(self): logging.debug("In TextAction::createWidgets()") self.actionText = QtGui.QAction(self.parent()) self.actionText.setCheckable(True) icon41 = QtGui.QIcon() icon41.addPixmap( QtGui.QPixmap(":/static/default/icon/48x48/draw-text.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off ) self.actionText.setIcon(icon41) self.actionText.setObjectName("actionText") self.actionText.setText( QtGui.QApplication.translate("MainWindow", "&Text", None, QtGui.QApplication.UnicodeUTF8) ) self.parent().menuTools.addAction(self.actionText) self.parent().toolBarTools.addAction(self.actionText) parentProperties = self.parent().scrollAreaWidgetContents self.propertiesAction = TextProperties(parentProperties) parentProperties.layout().addWidget(self.propertiesAction) self.propertiesAction.hide() def createActions(self): logging.debug("In TranslateAction::createActions()") self.connect(self.actionText, QtCore.SIGNAL("triggered()"), self.slotActionText) def slotActionText(self): logging.debug("In TranslateAction::slotActionTranslate()") if not self.connected: self.propertiesAction.connect( self.propertiesAction.newTextButton, QtCore.SIGNAL("clicked ( bool)"), self.slotNewText ) self.propertiesAction.connect( self.propertiesAction.deleteTextButton, QtCore.SIGNAL("clicked ( bool)"), self.slotDeleteText ) self.connected = True if not self.actionText.isChecked(): self.removeObservers() self.propertiesAction.hide() self.parent().toolProperties.setVisible(False) return self._ilsa.desactivateOthers("text") self.parent().toolProperties.setVisible(True) self.propertiesAction.show() if not self.propertiesAction.texts: self.slotNewText(True) def slotNewText(self, checked): scenes = self._ilsa.scenes() if not self.text or self.text.getStarted(): self.text = TextWidget() self.propertiesAction.addText(self.text) self.removeObservers() self.scenesMap = {} self.observers = {} for scene in scenes: if isinstance(scene, VtkImagePlane): self.observers[scene] = scene.addObserver("LeftButtonPressEvent", self.activateText) self.scenesMap[scene.interactor.GetInteractorStyle()] = scene self.started = self.text.getStarted() def removeObservers(self): if self.observers: for scene, observer in self.observers.items(): scene.removeObserver(observer) self.observers = {} def slotDeleteText(self, checked): self.propertiesAction.removeSelectedText() self.removeObservers() self.text = None def activate(self, obj, evt): self.text.start() def activateText(self, obj, evt): scene = self.scenesMap[obj] self.text.setScene(scene) self.removeObservers() def save(self): texts = self.propertiesAction.texts.values() yamlTexts = [] for text in texts: if text.getStarted(): yamlTexts.append(text.save()) yaml = {"texts": yamlTexts} return yaml def restore(self, value): texts = value["texts"] if texts: for text in texts: self.loadText(text) self.started = False def loadText(self, text): scenes = self._ilsa.scenes() for scene in scenes: if scene.id == text["sceneId"]: self.text = TextWidget(scene) self.propertiesAction.addText(self.text) self.text.setText(text["text"]) self.text.setPosition(text["position"]) self.text.setFontColor(*text["fontColor"]) self.text.setVisible(text["visible"]) self.text.setFont(text["font"]) self.text.setFontSize(text["fontSize"]) self.text.setBold(text["bold"]) self.text.setItalic(text["italic"]) self.text.autoResizeBox() # self.text.scene.removeObserver(self.text.event) self.propertiesAction.slotSelectButtonByText(self.text, None) def removeScene(self, scene): self.propertiesAction.removeScene(scene)