# HG changeset patch # User Jacob Dawid # Date 1302550290 -7200 # Node ID 9b38634081796cd72db3af9e47b622be1ff3e52a # Parent 276faa3e74235b61233975fbce845b2d7131c845 Added toolbar, statusbar and some messages. diff -r 276faa3e7423 -r 9b3863408179 gui//src/FilesDockWidget.cpp --- 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)); } } diff -r 276faa3e7423 -r 9b3863408179 gui//src/FilesDockWidget.h --- 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 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 diff -r 276faa3e7423 -r 9b3863408179 gui//src/HistoryDockWidget.cpp --- 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."); } diff -r 276faa3e7423 -r 9b3863408179 gui//src/HistoryDockWidget.h --- 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; diff -r 276faa3e7423 -r 9b3863408179 gui//src/MainWindow.cpp --- 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."); } diff -r 276faa3e7423 -r 9b3863408179 gui//src/MainWindow.h --- 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 #include #include +#include +#include #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; diff -r 276faa3e7423 -r 9b3863408179 gui//src/OctaveTerminal.h --- 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