diff options
Diffstat (limited to 'qtmips_gui/terminaldock.cpp')
-rw-r--r-- | qtmips_gui/terminaldock.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/qtmips_gui/terminaldock.cpp b/qtmips_gui/terminaldock.cpp index 4b394a6..bb26952 100644 --- a/qtmips_gui/terminaldock.cpp +++ b/qtmips_gui/terminaldock.cpp @@ -49,6 +49,11 @@ TerminalDock::TerminalDock(QWidget *parent, QSettings *settings) : QDockWidget(p terminal_text->setMinimumSize(30, 30); layout_box->addWidget(terminal_text); append_cursor = new QTextCursor(terminal_text->document()); + layout_bottom_box = new QHBoxLayout(); + layout_bottom_box->addWidget(new QLabel("Input:")); + input_edit = new QLineEdit(); + layout_bottom_box->addWidget(input_edit); + layout_box->addLayout(layout_bottom_box); setObjectName("Terminal"); setWindowTitle("Terminal"); @@ -62,6 +67,8 @@ void TerminalDock::setup(const machine::SerialPort *ser_port) { if (ser_port == nullptr) return; connect(ser_port, SIGNAL(tx_byte(uint)), this, SLOT(tx_byte(uint))); + connect(ser_port, SIGNAL(rx_byte_pool(int,uint&,bool&)), + this, SLOT(rx_byte_pool(int,uint&,bool&))); } void TerminalDock::tx_byte(unsigned int data) { @@ -76,3 +83,13 @@ void TerminalDock::tx_byte(int fd, unsigned int data) (void)fd; tx_byte(data); } + +void TerminalDock::rx_byte_pool(int fd, unsigned int &data, bool &available) { + QString str = input_edit->text(); + available = false; + if (str.count() > 0) { + data = str[0].toLatin1(); + input_edit->setText(str.remove(0, 1)); + available = true; + } +} |