changeset 13404:9b3863408179

Added toolbar, statusbar and some messages.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Mon, 11 Apr 2011 21:31:30 +0200
parents 276faa3e7423
children 42de7a2d4d64
files gui//src/FilesDockWidget.cpp gui//src/FilesDockWidget.h gui//src/HistoryDockWidget.cpp gui//src/HistoryDockWidget.h gui//src/MainWindow.cpp gui//src/MainWindow.h gui//src/OctaveTerminal.h
diffstat 7 files changed, 68 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/gui//src/FilesDockWidget.cpp	Mon Apr 11 21:01:28 2011 +0200
+++ b/gui//src/FilesDockWidget.cpp	Mon Apr 11 21:31:30 2011 +0200
@@ -5,6 +5,7 @@
 FilesDockWidget::FilesDockWidget(QWidget *parent)
   : QDockWidget(parent)
 {
+    setWindowTitle("Files");
     setWidget(new QWidget(this));
 
     // Create a toolbar
@@ -53,10 +54,10 @@
 {
     QFileInfo fileInfo = m_fileSystemModel->fileInfo(index);
     if (fileInfo.isDir()) {
-      m_fileSystemModel->setRootPath(fileInfo.absolutePath());
-      m_fileTreeView->setRootIndex(index);
+        m_fileSystemModel->setRootPath(fileInfo.absolutePath());
+        m_fileTreeView->setRootIndex(index);
     } else {
-      // TODO: Open the file appropriately based on the mime type
+        emit openFile(m_fileSystemModel->fileName(index));
     }
 }
 
--- a/gui//src/FilesDockWidget.h	Mon Apr 11 21:01:28 2011 +0200
+++ b/gui//src/FilesDockWidget.h	Mon Apr 11 21:31:30 2011 +0200
@@ -28,35 +28,37 @@
 #include <QDockWidget>
 
 class FilesDockWidget : public QDockWidget {
-  Q_OBJECT
+    Q_OBJECT
 public :
-  FilesDockWidget(QWidget *parent = 0);
-  void setDirectory(QString dir);
-  
+    FilesDockWidget(QWidget *parent = 0);
+    void setDirectory(QString dir);
+
 public slots:
-  /** Slot for handling a change in directory via double click. */
-  void itemDoubleClicked(const QModelIndex &index);
+    /** Slot for handling a change in directory via double click. */
+    void itemDoubleClicked(const QModelIndex &index);
 
-  /** Slot for handling the up-directory button in the toolbar. */
-  void onUpDirectory();
-    
-private:
+    /** Slot for handling the up-directory button in the toolbar. */
+    void onUpDirectory();
+
+signals:
+    void openFile(QString fileName);
 
-  // TODO: Add toolbar with buttons for navigating the path, creating dirs, etc
+private:
+    // TODO: Add toolbar with buttons for navigating the path, creating dirs, etc
 
-  /** Toolbar for file and directory manipulation. */
-  QToolBar *m_navigationToolBar;
+    /** Toolbar for file and directory manipulation. */
+    QToolBar *m_navigationToolBar;
 
-  /** Variables for the up-directory action. */
-  QIcon m_directoryIcon;
-  QAction *m_directoryUpAction;
-  QToolButton *upDirectoryButton;
+    /** Variables for the up-directory action. */
+    QIcon m_directoryIcon;
+    QAction *m_directoryUpAction;
+    QToolButton *upDirectoryButton;
 
-  /** The file system model. */
-  QFileSystemModel *m_fileSystemModel;
+    /** The file system model. */
+    QFileSystemModel *m_fileSystemModel;
 
-  /** The file system view. */
-  QTreeView *m_fileTreeView;
+    /** The file system view. */
+    QTreeView *m_fileTreeView;
 };
 
 #endif // FILESDOCKWIDGET_H
--- a/gui//src/HistoryDockWidget.cpp	Mon Apr 11 21:01:28 2011 +0200
+++ b/gui//src/HistoryDockWidget.cpp	Mon Apr 11 21:31:30 2011 +0200
@@ -31,4 +31,5 @@
             stringList.push_front(QString("%1: ").arg(stringList.size() + 1) + command);
     }
     m_historyListModel->setStringList(stringList);
+    emit information("History updated.");
 }
--- a/gui//src/HistoryDockWidget.h	Mon Apr 11 21:01:28 2011 +0200
+++ b/gui//src/HistoryDockWidget.h	Mon Apr 11 21:31:30 2011 +0200
@@ -33,12 +33,15 @@
 #include "octave/symtab.h"
 #include "cmd-edit.h"
 
-class HistoryDockWidget : public QDockWidget
-{
+class HistoryDockWidget : public QDockWidget {
+    Q_OBJECT
 public:
     HistoryDockWidget(QWidget *parent = 0);
     void updateHistory(string_vector historyEntries);
 
+signals:
+    void information(QString message);
+
 private:
     void construct();
     QListView *m_historyListView;
--- a/gui//src/MainWindow.cpp	Mon Apr 11 21:01:28 2011 +0200
+++ b/gui//src/MainWindow.cpp	Mon Apr 11 21:31:30 2011 +0200
@@ -33,7 +33,17 @@
 MainWindow::~MainWindow() {
 }
 
+void MainWindow::handleOpenFileRequest(QString fileName) {
+    reportStatusMessage("Opening file.");
+    // TODO: Open mdi subwindow.
+}
+
+void MainWindow::reportStatusMessage(QString statusMessage) {
+    m_statusBar->showMessage(statusMessage, 1000);
+}
+
 void MainWindow::closeEvent(QCloseEvent *closeEvent) {
+    reportStatusMessage("Saving data and shutting down.");
     QSettings settings("~/.quint/settings.ini", QSettings::IniFormat);
     settings.setValue("MainWindow/geometry", saveGeometry());
     settings.setValue("MainWindow/windowState", saveState());
@@ -41,24 +51,40 @@
 }
 
 void MainWindow::constructWindow() {
+    QStyle *style = QApplication::style();
     m_octaveTerminal = new OctaveTerminal(this);
+    m_generalPurposeToolbar = new QToolBar("Octave Toolbar", this);
     m_variablesDockWidget = new VariablesDockWidget(this);
     m_historyDockWidget = new HistoryDockWidget(this);
     m_filesDockWidget = new FilesDockWidget(this);
     m_openedFiles = new QMdiArea(this);
+    m_statusBar = new QStatusBar(this);
     m_centralTabWidget = new QTabWidget(this);
     m_centralTabWidget->addTab(m_octaveTerminal, "Terminal");
     m_centralTabWidget->addTab(m_openedFiles, "Editor");
 
+    // TODO: Add meaningfull toolbar items.
+    QAction *commandAction = new QAction(style->standardIcon(QStyle::SP_CommandLink),
+        "", m_generalPurposeToolbar);
+    QAction *computerAction = new QAction(style->standardIcon(QStyle::SP_ComputerIcon),
+        "", m_generalPurposeToolbar);
+    m_generalPurposeToolbar->addAction(commandAction);
+    m_generalPurposeToolbar->addAction(computerAction);
+
     setWindowTitle("Octave");
     setCentralWidget(m_centralTabWidget);
+    addToolBar(m_generalPurposeToolbar);
     addDockWidget(Qt::LeftDockWidgetArea, m_variablesDockWidget);
     addDockWidget(Qt::LeftDockWidgetArea, m_historyDockWidget);
     addDockWidget(Qt::RightDockWidgetArea, m_filesDockWidget);
+    setStatusBar(m_statusBar);
 
     QSettings settings("~/.quint/settings.ini", QSettings::IniFormat);
     restoreGeometry(settings.value("MainWindow/geometry").toByteArray());
     restoreState(settings.value("MainWindow/windowState").toByteArray());
+
+    connect(m_filesDockWidget, SIGNAL(openFile(QString)), this, SLOT(handleOpenFileRequest(QString)));
+    connect(m_historyDockWidget, SIGNAL(information(QString)), this, SLOT(reportStatusMessage(QString)));
 }
 
 void MainWindow::establishOctaveLink() {
@@ -78,4 +104,5 @@
     dup2 (fds, 1);
     dup2 (fds, 2);
     m_octaveTerminal->openTeletype(fdm);
+    reportStatusMessage("Established link to Octave.");
 }
--- a/gui//src/MainWindow.h	Mon Apr 11 21:01:28 2011 +0200
+++ b/gui//src/MainWindow.h	Mon Apr 11 21:31:30 2011 +0200
@@ -23,6 +23,8 @@
 #include <QThread>
 #include <QTabWidget>
 #include <QMdiArea>
+#include <QStatusBar>
+#include <QToolBar>
 #include "OctaveTerminal.h"
 #include "OctaveLink.h"
 #include "VariablesDockWidget.h"
@@ -93,6 +95,10 @@
     HistoryDockWidget *historyDockWidget() { return m_historyDockWidget; }
     FilesDockWidget *filesDockWidget() { return m_filesDockWidget; }
 
+public slots:
+    void handleOpenFileRequest(QString fileName);
+    void reportStatusMessage(QString statusMessage);
+
 protected:
     void closeEvent(QCloseEvent *closeEvent);
 
@@ -105,6 +111,8 @@
     FilesDockWidget *m_filesDockWidget;
     QMdiArea *m_openedFiles;
     QTabWidget *m_centralTabWidget;
+    QStatusBar *m_statusBar;
+    QToolBar *m_generalPurposeToolbar;
 
     // Threads for running octave and managing the data interaction.
     OctaveMainThread *m_octaveMainThread;
--- a/gui//src/OctaveTerminal.h	Mon Apr 11 21:01:28 2011 +0200
+++ b/gui//src/OctaveTerminal.h	Mon Apr 11 21:31:30 2011 +0200
@@ -21,7 +21,6 @@
 
 #include "QTerminalWidget.h"
 
-
 class OctaveTerminal : public QTerminalWidget {
     Q_OBJECT
 public:
@@ -31,5 +30,4 @@
 private:
     void construct();
 };
-
 #endif // OCTAVETERMINAL_H