Source code for optimeed.visualize.gui.widgets.widget_text

from PyQt5 import QtCore, QtGui, QtWidgets
from optimeed.core.ansi2html import Ansi2HTMLConverter


[docs]class widget_text(QtWidgets.QLabel): """Widget able to display a text""" def __init__(self, theText, is_light=False, convertToHtml=False): """ :param theText: str :param is_light: light interface (bool) :param convertToHtml: if True: allow to use ansi syntax (= colors) """ super().__init__() if is_light: # Template "Light" text_color = QtCore.Qt.black text_background = QtCore.Qt.white else: text_color = QtCore.Qt.white text_background = QtCore.Qt.black p = self.palette() p.setColor(QtGui.QPalette.Background, text_background) p.setColor(QtGui.QPalette.WindowText, text_color) self.setPalette(p) self.setAutoFillBackground(True) if convertToHtml: conv = Ansi2HTMLConverter() self.setTextFormat(QtCore.Qt.RichText) self.setText(conv.convert(theText)) else: self.setText(theText) self.setFont(QtGui.QFont('Arial', 10)) self.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
[docs] def set_text(self, theText, convertToHtml=False): """Set the text to display""" if convertToHtml: conv = Ansi2HTMLConverter() self.setTextFormat(QtCore.Qt.RichText) self.setText(conv.convert(theText)) else: self.setText(theText)
[docs]class scrollable_widget_text(QtWidgets.QWidget): """Same as :class:`~widget_text` but scrollable""" def __init__(self, theText, is_light=False, convertToHtml=False): super().__init__() layout_widget = QtWidgets.QVBoxLayout(self) layout_widget.setContentsMargins(0, 0, 0, 0) scrollarea = QtWidgets.QScrollArea() self.theWidget = widget_text(theText, is_light, convertToHtml) scrollarea.setWidget(self.theWidget) scrollarea.setWidgetResizable(True) scrollarea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) self.layout().addWidget(scrollarea) self.setMinimumHeight(150)
[docs] def set_text(self, theText, convertToHtml=False): self.theWidget.set_text(theText, convertToHtml)