Module saePisan.view.components.ConsoleDialog

Classes

class ConsoleDialog (parent=None)
Expand source code
class ConsoleDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("R Console Output")
        self.setMinimumWidth(500)
        layout = QVBoxLayout(self)
        self.console = QTextEdit()
        self.console.setReadOnly(True)
        self.loading_label = QLabel()
        self.loading_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.loading_movie = QMovie("assets/loading.gif")
        self.loading_movie.setScaledSize(QSize(25, 25))
        self.loading_label.setMovie(self.loading_movie)
        layout.addWidget(self.loading_label)
        self.loading_movie.start()
        layout.addWidget(self.console)

    def append_text(self, text):
        doc = self.console.document()
        block_count = doc.blockCount()
        if block_count > 1:
            cursor = self.console.textCursor()
            cursor.movePosition(QTextCursor.MoveOperation.End)
            cursor.movePosition(QTextCursor.MoveOperation.StartOfBlock, QTextCursor.MoveMode.KeepAnchor)
            cursor.removeSelectedText()
            cursor.deletePreviousChar()
            cursor.insertText(text)
        else:
            self.console.setPlainText(text)
        self.console.moveCursor(QTextCursor.MoveOperation.End)

    def stop_loading(self):
        self.loading_movie.stop()
        self.loading_label.setVisible(False)

QDialog(parent: Optional[QWidget] = None, flags: Qt.WindowType = Qt.WindowFlags())

Ancestors

  • PyQt6.QtWidgets.QDialog
  • PyQt6.QtWidgets.QWidget
  • PyQt6.QtCore.QObject
  • PyQt6.sip.wrapper
  • PyQt6.QtGui.QPaintDevice
  • PyQt6.sip.simplewrapper

Methods

def append_text(self, text)
Expand source code
def append_text(self, text):
    doc = self.console.document()
    block_count = doc.blockCount()
    if block_count > 1:
        cursor = self.console.textCursor()
        cursor.movePosition(QTextCursor.MoveOperation.End)
        cursor.movePosition(QTextCursor.MoveOperation.StartOfBlock, QTextCursor.MoveMode.KeepAnchor)
        cursor.removeSelectedText()
        cursor.deletePreviousChar()
        cursor.insertText(text)
    else:
        self.console.setPlainText(text)
    self.console.moveCursor(QTextCursor.MoveOperation.End)
def stop_loading(self)
Expand source code
def stop_loading(self):
    self.loading_movie.stop()
    self.loading_label.setVisible(False)