Mercurial > hg > octave-terminal
changeset 13336:45fa9f424737
Subclassed line edit to prepare for extended functionality.
author | Jacob Dawid <jacob.dawid@googlemail.com> |
---|---|
date | Tue, 05 Apr 2011 21:08:18 +0200 |
parents | 609facb07bad |
children | e19200da9a45 |
files | gui//octaveterminal.cpp gui//octaveterminal.h |
diffstat | 2 files changed, 31 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/gui//octaveterminal.cpp +++ b/gui//octaveterminal.cpp @@ -10,7 +10,7 @@ setWidget(new QWidget(this)); m_mainToolBar = new QToolBar(widget()); m_octaveOutput = new QTextBrowser(widget()); - m_commandLine = new QLineEdit(widget()); + m_commandLine = new TerminalCommandLine(widget()); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(m_mainToolBar); @@ -25,21 +25,16 @@ m_octaveOutput->setReadOnly(true); blockUserInput(); - connect(m_commandLine, SIGNAL(returnPressed()), this, SLOT(sendCommand())); + connect(m_commandLine, SIGNAL(claimCommand(QString)), this, SLOT(sendCommand(QString))); connect(showEnvironmentButton, SIGNAL(clicked()), this, SLOT(showEnvironment())); m_terminalHighlighter = new TerminalHighlighter(m_octaveOutput->document()); } -void OctaveTerminal::sendCommand() { - QString command = m_commandLine->text(); +void OctaveTerminal::sendCommand(QString command) { m_octaveOutput->setFontUnderline(true); m_octaveOutput->append(command); - command.append("\n"); - QMetaObject::invokeMethod(m_client, "send", Q_ARG(QString, command)); - - m_commandLine->clear(); } void OctaveTerminal::blockUserInput() {
--- a/gui//octaveterminal.h +++ b/gui//octaveterminal.h @@ -8,10 +8,36 @@ #include <QMenuBar> #include <QMenu> #include <QToolBar> +#include <QKeyEvent> #include "client.h" #include "terminalhighlighter.h" +class TerminalCommandLine : public QLineEdit { + Q_OBJECT +public: + TerminalCommandLine(QWidget *parent = 0) + : QLineEdit(parent) { + } + +signals: + void claimCommand(QString command); + +protected: + void keyPressEvent(QKeyEvent *keyEvent) { + switch(keyEvent->key()) { + case Qt::Key_Return: + emit claimCommand(text() + "\n"); + setText(""); + break; + + default: + QLineEdit::keyPressEvent(keyEvent); + break; + } + } +}; + class OctaveTerminal : public QMdiSubWindow { Q_OBJECT public: @@ -20,7 +46,7 @@ signals: public slots: - void sendCommand(); + void sendCommand(QString command); void blockUserInput(); void allowUserInput(); @@ -34,7 +60,7 @@ private: QToolBar *m_mainToolBar; QTextBrowser *m_octaveOutput; - QLineEdit *m_commandLine; + TerminalCommandLine *m_commandLine; Client *m_client; TerminalHighlighter *m_terminalHighlighter; };