Ejemplo n.º 1
0
    def sizeHint(self, option, index):
        options = QStyleOptionViewItem(option)
        self.initStyleOption(options, index)

        doc = QTextDocument()
        doc.setHtml(options.text)

        return QSize(doc.idealWidth(), doc.size().height() - 2)
Ejemplo n.º 2
0
 def sizeHint(self, option, index):
     options = QStyleOptionViewItem(option)
     self.initStyleOption(options, index)
     doc = QTextDocument()
     doc.setHtml(options.text)
     doc.setTextWidth(options.rect.width())
     size = QSize(int(doc.idealWidth()), int(doc.size().height()))
     return size
Ejemplo n.º 3
0
    def sizeHint(self, option, index):
        options = QStyleOptionViewItem(option)
        self.initStyleOption(options, index)

        doc = QTextDocument()
        doc.setHtml(options.text)

        return QSize(doc.idealWidth(), doc.size().height() - 2)
Ejemplo n.º 4
0
 def _get_height(self):
     """
     Return the expected height of this item's text, including
     the text margins.
     """
     doc = QTextDocument()
     doc.setHtml('<hr>')
     doc.setDocumentMargin(self._PADDING)
     return doc.size().height()
Ejemplo n.º 5
0
 def _get_height(self):
     """
     Return the expected height of this item's text, including
     the text margins.
     """
     doc = QTextDocument()
     try:
         doc.setHtml('<span style="font-size:{}pt">Title</span>'
                     .format(self._styles['title_font_size']))
     except KeyError:
         doc.setHtml('<span>Title</span>')
     doc.setDocumentMargin(self._PADDING)
     return doc.size().height()
Ejemplo n.º 6
0
def get_text_width(text) -> int:
    """Return the width required to render ``text`` (including rich text elements)."""
    if qtpy.PYSIDE2:
        from qtpy.QtGui import Qt as _Qt
    else:
        from qtpy.QtCore import Qt as _Qt

    if _Qt.mightBeRichText(text):
        doc = QTextDocument()
        doc.setHtml(text)
        return doc.size().width()
    else:
        fm = QFontMetrics(QFont("", 0))
        return fm.boundingRect(text).width() + 5
Ejemplo n.º 7
0
class LabelItem(AbstractLabelItem):
    __implements__ = (IBasePlotItem, ISerializableType)

    def __init__(self, text=None, labelparam=None):
        self.text_string = "" if text is None else text
        self.text = QTextDocument()
        super(LabelItem, self).__init__(labelparam)

    def __reduce__(self):
        return (self.__class__, (self.text_string, self.labelparam))

    def serialize(self, writer):
        """Serialize object to HDF5 writer"""
        super(LabelItem, self).serialize(writer)
        writer.write(self.text_string, group_name="text")

    def deserialize(self, reader):
        """Deserialize object from HDF5 reader"""
        super(LabelItem, self).deserialize(reader)
        self.set_text(reader.read("text", func=reader.read_unicode))

    def types(self):
        return (IShapeItemType, ISerializableType)

    def set_pos(self, x, y):
        self.G = x, y
        self.labelparam.xg, self.labelparam.yg = x, y

    def get_plain_text(self):
        return to_text_string(self.text.toPlainText())

    def set_text(self, text=None):
        if text is not None:
            self.text_string = text
        self.text.setHtml("<div>%s</div>" % self.text_string)

    def set_text_style(self, font=None, color=None):
        if font is not None:
            self.text.setDefaultFont(font)
        if color is not None:
            self.text.setDefaultStyleSheet("div { color: %s; }" % color)
        self.set_text()

    def get_text_rect(self):
        sz = self.text.size()
        return QRectF(0, 0, sz.width(), sz.height())

    def update_text(self):
        pass

    def draw(self, painter, xMap, yMap, canvasRect):
        self.update_text()
        x, y = self.get_top_left(xMap, yMap, canvasRect)
        x0, y0 = self.get_origin(xMap, yMap, canvasRect)
        painter.save()
        self.marker.drawSymbols(painter, [QPointF(x0, y0)])
        painter.restore()
        sz = self.text.size()
        self.draw_frame(painter, x, y, sz.width(), sz.height())
        painter.setPen(QPen(QColor(self.labelparam.color)))
        painter.translate(x, y)
        self.text.drawContents(painter)