Example #1
0
class TAText2D(Rect2D):
    def __init__(self, text=None, doc=None, opacity=1., *args, **kwargs):
        if doc is not None and isinstance(doc, QTextDocument):
            self.doc = doc
            self.doc.setDocumentMargin(
                0)  # important so that the square is properly placed
        else:
            self.doc = QTextDocument()
            self.doc.setDocumentMargin(
                0)  # important so that the square is properly placed

            textOption = self.doc.defaultTextOption()
            textOption.setWrapMode(QTextOption.NoWrap)
            self.doc.setDefaultTextOption(textOption)

            if text is not None:
                self.doc.setHtml(text)
        self.isSet = True
        self.doc.adjustSize()
        size = self.getSize()
        super(TAText2D, self).__init__(0, 0, size.width(), size.height())
        self.opacity = opacity

    def setText(self, html):
        self.doc.setHtml(html)
        self.doc.adjustSize()
        size = self.getSize()
        self.setWidth(size.width(), size.height())

    def setDoc(self, doc):
        self.doc = doc
        self.doc.setDocumentMargin(0)
        self.doc.adjustSize()
        size = self.getSize()
        self.setWidth(size.width(), size.height())

    def draw(self, painter):
        painter.save()
        painter.setOpacity(self.opacity)
        painter.translate(self.x(), self.y())
        self.doc.drawContents(painter)
        painter.restore()
        painter.save()
        painter.setPen(QtCore.Qt.red)
        painter.drawRect(self)
        painter.restore()

    def boundingRect(self):
        return self

    def getSize(self):
        return self.doc.size()

    def getWidth(self):
        return self.boundingRect().width()

    def getHeight(self):
        return self.boundingRect().height()

    def setText(self, text):
        self.doc.setHtml(text)
        size = self.size()
        self.setWidth(size.width(), size.height())

    def set_P1(self, *args):
        if not args:
            logger.error("no coordinate set...")
            return
        if len(args) == 1:
            self.moveTo(args[0].x(), args[0].y())
        else:
            self.moveTo(QPointF(args[0], args[1]))

    def get_P1(self):
        return QPointF(self.x(), self.y())

    def getPlainText(self):
        return self.doc.toPlainText()

    def getHtmlText(self):
        return self.doc.toHtml()