aboutsummaryrefslogtreecommitdiffstats
path: root/examples/serialport/terminal/console.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/serialport/terminal/console.py')
-rw-r--r--examples/serialport/terminal/console.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/examples/serialport/terminal/console.py b/examples/serialport/terminal/console.py
new file mode 100644
index 000000000..125951374
--- /dev/null
+++ b/examples/serialport/terminal/console.py
@@ -0,0 +1,49 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt, Signal, Slot
+from PySide6.QtGui import QPalette
+from PySide6.QtWidgets import QPlainTextEdit
+
+
+UNHANDLED_KEYS = [Qt.Key_Backspace, Qt.Key_Left, Qt.Key_Right, Qt.Key_Up,
+ Qt.Key_Down]
+
+
+class Console(QPlainTextEdit):
+
+ get_data = Signal(bytearray)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_localEchoEnabled = False
+ self.document().setMaximumBlockCount(100)
+ p = self.palette()
+ p.setColor(QPalette.Base, Qt.black)
+ p.setColor(QPalette.Text, Qt.green)
+ self.setPalette(p)
+
+ @Slot(bytearray)
+ def put_data(self, data):
+ self.insertPlainText(data.decode("utf8"))
+ bar = self.verticalScrollBar()
+ bar.setValue(bar.maximum())
+
+ def set_local_echo_enabled(self, e):
+ self.m_localEchoEnabled = e
+
+ def keyPressEvent(self, e):
+ key = e.key()
+ if key not in UNHANDLED_KEYS:
+ if self.m_localEchoEnabled:
+ super().keyPressEvent(e)
+ self.get_data.emit(e.text().encode())
+
+ def mousePressEvent(self, e):
+ self.setFocus()
+
+ def mouseDoubleClickEvent(self, e):
+ pass
+
+ def contextMenuEvent(self, e):
+ pass