changeset 13387:cd47f7e16ee8

Added status bar updates, added variable list update hook.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Sat, 09 Apr 2011 13:00:58 +0200
parents fc8f53c6994f
children f31614496d86
files gui//src/TerminalMdiSubWindow.cpp gui//src/TerminalMdiSubWindow.h
diffstat 2 files changed, 21 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/gui//src/TerminalMdiSubWindow.cpp
+++ b/gui//src/TerminalMdiSubWindow.cpp
@@ -35,7 +35,12 @@
     isRunning = false;
 }
 
+void TerminalMdiSubWindow::setStatus(QString message) {
+    m_statusBar->showMessage(message, 1000);
+}
+
 void TerminalMdiSubWindow::establishOctaveLink() {
+    QMetaObject::invokeMethod(this, "setStatus", Q_ARG(QString, QString("Establishing Octave link..")));
     m_octaveLink = new OctaveLink();
     pthread_create(&m_octaveThread, 0, TerminalMdiSubWindow::octaveMainWrapper, this);
     pthread_create(&m_octaveCallbackThread, 0, TerminalMdiSubWindow::octaveCallback, this);
@@ -90,20 +95,25 @@
     vBoxLayout->addWidget(m_statusBar);
     vBoxLayout->setMargin(2);
     widget()->setLayout(vBoxLayout);
-
-    m_statusBar->showMessage("Ready.");
 }
 
 void TerminalMdiSubWindow::updateHistory(string_vector historyEntries) {
     QStringListModel * model = dynamic_cast<QStringListModel*>(m_commandHistoryView->model());
     if(!model)
         return;
-
+    QMetaObject::invokeMethod(this, "setStatus", Q_ARG(QString, QString("Updating history..")));
     QStringList stringList = model->stringList();
-    for(size_t i = 0; i < historyEntries.length(); i++)
-        stringList.append(QString(historyEntries[i].c_str()));
+    for(size_t i = 0; i < historyEntries.length(); i++) {
+        QString command(historyEntries[i].c_str());
+        if(!command.startsWith("#"))
+            stringList.push_front(QString("%1: ").arg(stringList.size() + 1) + command);
+    }
+    model->setStringList(stringList);
+}
 
-    model->setStringList(stringList);
+void TerminalMdiSubWindow::updateVariables(std::vector<OctaveLink::VariableMetaData> variables) {
+    QMetaObject::invokeMethod(this, "setStatus", Q_ARG(QString, QString("Updating variables..")));
+    // TODO: Update variable view.
 }
 
 void* TerminalMdiSubWindow::octaveMainWrapper(void *widget) {
@@ -125,9 +135,8 @@
 
     // Get a full variable list.
     std::vector<OctaveLink::VariableMetaData> variables = oct_octave_server.variableInfoList();
-    if(variables.size()) {
-        // TODO: Update variable list model data.
-    }
+    if(variables.size())
+        terminalWindow->updateVariables(variables);
 
     // Check whether any requested variables have been returned.
     std::vector<OctaveLink::RequestedVariable> reqVars = oct_octave_server.requestedVariables();
--- a/gui//src/TerminalMdiSubWindow.h
+++ b/gui//src/TerminalMdiSubWindow.h
@@ -76,10 +76,12 @@
     static void* octaveCallback(void *widget);
 
     void updateHistory(string_vector historyEntries);
+    void updateVariables(std::vector<OctaveLink::VariableMetaData> variables);
     TerminalMdiSubWindow(QWidget *parent = 0);
     ~TerminalMdiSubWindow();
 
-private slots:
+public slots:
+    void setStatus(QString message);
 
 private:
     void establishOctaveLink();