Mercurial > hg > octave-terminal
changeset 13343:0c9cf8be675e
Extended pending request skeleton to support other types of requests.
author | Jacob Dawid <jacob.dawid@googlemail.com> |
---|---|
date | Wed, 06 Apr 2011 16:16:17 +0200 |
parents | 642978643d3f |
children | 0a3a2d4e3d86 |
files | gui//client.h gui//octaveterminal.cpp |
diffstat | 2 files changed, 19 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/gui//client.h +++ b/gui//client.h @@ -82,26 +82,25 @@ return content; } - void query(QString request) { + void query(QString request, QRegExp terminator = QRegExp("(\r\n | \n\r | \n)+")) { + m_terminator = terminator; QMetaObject::invokeMethod(m_client, "send", Q_ARG(QString, request)); } signals: - void dataIncome(); + void answered(); private slots: void receiveData(QString data) { - QRegExp octavePrompt("octave:[0-9]+>"); m_dataBuffer += data; - if(octavePrompt.indexIn(m_dataBuffer) != -1) - emit dataIncome(); + if(m_terminator.indexIn(m_dataBuffer) != -1) + emit answered(); } void receiveError(QString error) { - QRegExp octavePrompt("octave:[0-9]+>"); m_errorBuffer += error; - if(octavePrompt.indexIn(m_dataBuffer) != -1) - emit dataIncome(); + if(m_terminator.indexIn(m_dataBuffer) != -1) + emit answered(); } private: @@ -109,6 +108,7 @@ QString m_dataBuffer; QString m_errorBuffer; QString m_request; + QRegExp m_terminator; }; #endif // CLIENT_H
--- a/gui//octaveterminal.cpp +++ b/gui//octaveterminal.cpp @@ -66,13 +66,23 @@ void OctaveTerminal::assignClient(Client *client) { m_client = client; allowUserInput(); - addRequest("info\n"); + + // Sends an empty command to make the welcome message show up. + addRequest("\n"); } void OctaveTerminal::showEnvironment() { addRequest("who\n"); } + +void OctaveTerminal::addRequest(QString command) { + blockUserInput(); + m_pendingRequest = new PendingRequest(m_client); + connect(m_pendingRequest, SIGNAL(answered()), this, SLOT(handleAnsweredRequest())); + m_pendingRequest->query(command, QRegExp("octave:[0-9]+>")); +} + void OctaveTerminal::handleAnsweredRequest() { allowUserInput(); QString data = m_pendingRequest->fetchData(); @@ -81,10 +91,3 @@ m_octaveOutput->append(error); delete m_pendingRequest; } - -void OctaveTerminal::addRequest(QString command) { - blockUserInput(); - m_pendingRequest = new PendingRequest(m_client); - connect(m_pendingRequest, SIGNAL(dataIncome()), this, SLOT(handleAnsweredRequest())); - m_pendingRequest->query(command); -}