# HG changeset patch # User Jacob Dawid # Date 1337684664 -7200 # Node ID 7fbea449737d1ac580c3867f1171e7299ee7fd34 # Parent 7605e7136b5022046b60b096febe912cb91c34c6 Restructured menus, added toolbar and current directory line edit. * MainWindow (construct): Restructured menus, added toolbar and current working directory line edit. diff -r 7605e7136b50 -r 7fbea449737d gui/src/MainWindow.cpp --- a/gui/src/MainWindow.cpp Tue May 22 11:00:24 2012 +0200 +++ b/gui/src/MainWindow.cpp Tue May 22 13:04:24 2012 +0200 @@ -19,9 +19,13 @@ #include #include #include +#include +#include #include #include #include +#include + #include "MainWindow.h" #include "FileEditor.h" #include "SettingsDialog.h" @@ -35,6 +39,7 @@ MainWindow::~MainWindow () { + OctaveLink::instance ()->terminateOctave(); } void @@ -73,8 +78,8 @@ MainWindow::handleSaveWorkspaceRequest () { QString selectedFile = - QFileDialog::getSaveFileName (this, tr ("Save Workspace"), - ResourceManager::instance ()->homePath ()); + QFileDialog::getSaveFileName (this, tr ("Save Workspace"), + ResourceManager::instance ()->homePath ()); m_terminalView->sendText (QString ("save \'%1\'\n").arg (selectedFile)); m_terminalView->setFocus (); } @@ -83,8 +88,8 @@ MainWindow::handleLoadWorkspaceRequest () { QString selectedFile = - QFileDialog::getOpenFileName (this, tr ("Load Workspace"), - ResourceManager::instance ()->homePath ()); + QFileDialog::getOpenFileName (this, tr ("Load Workspace"), + ResourceManager::instance ()->homePath ()); m_terminalView->sendText (QString ("load \'%1\'\n").arg (selectedFile)); m_terminalView->setFocus (); } @@ -199,6 +204,7 @@ void MainWindow::construct () { + QStyle *style = QApplication::style (); // TODO: Check this. m_closing = false; // flag for editor files when closed setWindowIcon (ResourceManager::instance ()->icon (ResourceManager::Octave)); @@ -212,47 +218,100 @@ m_filesDockWidget->setStatusTip (tr ("Browse your files.")); m_statusBar = new QStatusBar (this); + m_currentDirectoryLineEdit = new QLineEdit (QDir::currentPath (), this); + m_currentDirectoryLineEdit->setFixedWidth (300); + + m_currentDirectoryToolButton = new QToolButton (this); + m_currentDirectoryToolButton->setIcon (style->standardIcon (QStyle::SP_DirOpenIcon)); + + m_currentDirectoryUpToolButton = new QToolButton (this); + m_currentDirectoryUpToolButton->setIcon (style->standardIcon (QStyle::SP_FileDialogToParent)); + // Octave Terminal subwindow. m_terminalView = new QTerminal(this); setCentralWidget (m_terminalView); m_lexer = NULL; // initialise the empty lexer for the edtiors - QMenu *controlMenu = menuBar ()->addMenu (tr ("Octave")); - QAction *settingsAction = controlMenu->addAction (tr ("Settings")); - controlMenu->addSeparator (); - QAction *exitAction = controlMenu->addAction (tr ("Exit")); + QMenu *fileMenu = menuBar ()->addMenu (tr ("&File")); + QAction *newFileAction + = fileMenu->addAction (QIcon::fromTheme ("document-new", + style->standardIcon (QStyle::SP_FileIcon)), tr ("New File")); + + QAction *openFileAction + = fileMenu->addAction (QIcon::fromTheme ("document-open", + style->standardIcon (QStyle::SP_FileIcon)), tr ("Open File")); - QMenu *interfaceMenu = menuBar ()->addMenu (tr ("Interface")); + QAction *settingsAction = fileMenu->addAction (tr ("Settings")); + fileMenu->addSeparator (); + QAction *exitAction = fileMenu->addAction (tr ("Exit")); + + QMenu *editMenu = menuBar ()->addMenu (tr ("&Edit")); + QAction *cutAction + = editMenu->addAction (QIcon::fromTheme ("edit-cut", + style->standardIcon (QStyle::SP_FileIcon)), tr ("Cut")); + + QAction *copyAction + = editMenu->addAction (QIcon::fromTheme ("edit-copy", + style->standardIcon (QStyle::SP_FileIcon)), tr ("Copy")); - QAction *showWorkspaceAction = interfaceMenu->addAction (tr ("Workspace")); - showWorkspaceAction->setCheckable (true); + QAction *pasteAction + = editMenu->addAction (QIcon::fromTheme ("edit-paste", + style->standardIcon (QStyle::SP_FileIcon)), tr ("Paste")); + + QAction *undoAction + = editMenu->addAction (QIcon::fromTheme ("edit-undo", + style->standardIcon (QStyle::SP_FileIcon)), tr ("Undo")); + + QAction *redoAction + = editMenu->addAction (QIcon::fromTheme ("edit-redo", + style->standardIcon (QStyle::SP_FileIcon)), tr ("Redo")); - QAction *showHistoryAction = interfaceMenu->addAction (tr ("History")); + //QMenu *debugMenu = menuBar ()->addMenu (tr ("De&bug")); + //QMenu *parallelMenu = menuBar ()->addMenu (tr ("&Parallel")); + + QMenu *desktopMenu = menuBar ()->addMenu (tr ("&Desktop")); + QAction *loadWorkspaceAction = desktopMenu->addAction (tr ("Load workspace")); + QAction *saveWorkspaceAction = desktopMenu->addAction (tr ("Save workspace")); + QAction *clearWorkspaceAction = desktopMenu->addAction (tr ("Clear workspace")); + + // Window menu + QMenu *windowMenu = menuBar ()->addMenu (tr ("&Window")); + QAction *showWorkspaceAction = windowMenu->addAction (tr ("Workspace")); + showWorkspaceAction->setCheckable (true); + QAction *showHistoryAction = windowMenu->addAction (tr ("History")); showHistoryAction->setCheckable (true); - - QAction *showFileBrowserAction = interfaceMenu->addAction (tr ("File Browser")); + QAction *showFileBrowserAction = windowMenu->addAction (tr ("File Browser")); showFileBrowserAction->setCheckable (true); - interfaceMenu->addSeparator (); - QAction *openEditorAction = interfaceMenu->addAction (tr ("Open New Editor Window")); + // Help menu + QMenu *helpMenu = menuBar ()->addMenu (tr ("&Help")); + QAction *reportBugAction = helpMenu->addAction (tr ("Report Bug")); + QAction *agoraAction = helpMenu->addAction (tr ("Visit Agora")); + QAction *octaveForgeAction = helpMenu->addAction (tr ("Visit Octave Forge")); + helpMenu->addSeparator (); + QAction *aboutOctaveAction = helpMenu->addAction (tr ("About Octave")); + + // Toolbars - QMenu *workspaceMenu = menuBar ()->addMenu (tr ("Workspace")); - QAction *loadWorkspaceAction = workspaceMenu->addAction (tr ("Load")); - QAction *saveWorkspaceAction = workspaceMenu->addAction (tr ("Save")); - workspaceMenu->addSeparator (); - QAction *clearWorkspaceAction = workspaceMenu->addAction (tr ("Clear")); - - QMenu *communityMenu = menuBar ()->addMenu (tr ("Community")); - QAction *reportBugAction = communityMenu->addAction (tr ("Report Bug")); - QAction *agoraAction = communityMenu->addAction (tr ("Agora")); - QAction *octaveForgeAction = communityMenu->addAction (tr ("Octave Forge")); - communityMenu->addSeparator (); - QAction *aboutOctaveAction = communityMenu->addAction (tr ("About Octave")); + QToolBar *mainToolBar = addToolBar ("Main"); + mainToolBar->addAction (newFileAction); + mainToolBar->addAction (openFileAction); + mainToolBar->addSeparator (); + mainToolBar->addAction (cutAction); + mainToolBar->addAction (copyAction); + mainToolBar->addAction (pasteAction); + mainToolBar->addAction (undoAction); + mainToolBar->addAction (redoAction); + mainToolBar->addSeparator (); + mainToolBar->addWidget (new QLabel (tr ("Current Directory:"))); + mainToolBar->addWidget (m_currentDirectoryLineEdit); + mainToolBar->addWidget (m_currentDirectoryToolButton); + mainToolBar->addWidget (m_currentDirectoryUpToolButton); connect (settingsAction, SIGNAL (triggered ()), this, SLOT (processSettingsDialogRequest ())); connect (exitAction, SIGNAL (triggered ()), this, SLOT (close ())); - connect (openEditorAction, SIGNAL (triggered ()), this, SLOT (newFile ())); + connect (newFileAction, SIGNAL (triggered ()), this, SLOT (newFile ())); connect (reportBugAction, SIGNAL (triggered ()), this, SLOT (openBugTrackerPage ())); connect (agoraAction, SIGNAL (triggered ()), this, SLOT (openAgoraPage ())); connect (octaveForgeAction, SIGNAL (triggered ()), this, SLOT (openOctaveForgePage ())); @@ -289,8 +348,8 @@ // Editor font (default or from settings) QSettings *settings = ResourceManager::instance ()->settings (); m_lexer->setDefaultFont (QFont ( - settings->value ("editor/fontName","Courier").toString (), - settings->value ("editor/fontSize",10).toInt ())); + settings->value ("editor/fontName","Courier").toString (), + settings->value ("editor/fontSize",10).toInt ())); // TODO: Autoindent not working as it should m_lexer->setAutoIndentStyle (QsciScintilla::AiMaintain || @@ -302,18 +361,18 @@ // TODO: Also provide infos on octave-forge functions? // TODO: Also provide infos on function parameters? // By now, use the keywords-list from syntax highlighting - m_lexerAPI = new QsciAPIs (m_lexer); + m_lexerAPI = new QsciAPIs (m_lexer); - QString keyword; - QStringList keywordList; - keyword = m_lexer->keywords (1); // get whole string with all keywords - keywordList = keyword.split (QRegExp ("\\s+")); // split into single strings - int i; - for (i=0; iadd (keywordList.at (i)); // add single strings to the API - } - m_lexerAPI->prepare (); // prepare API info ... this make take some time + QString keyword; + QStringList keywordList; + keyword = m_lexer->keywords (1); // get whole string with all keywords + keywordList = keyword.split (QRegExp ("\\s+")); // split into single strings + int i; + for (i=0; iadd (keywordList.at (i)); // add single strings to the API + } + m_lexerAPI->prepare (); // prepare API info ... this make take some time readSettings (); updateTerminalFont(); diff -r 7605e7136b50 -r 7fbea449737d gui/src/MainWindow.h --- a/gui/src/MainWindow.h Tue May 22 11:00:24 2012 +0200 +++ b/gui/src/MainWindow.h Tue May 22 13:04:24 2012 +0200 @@ -28,6 +28,7 @@ #include #include #include +#include // QScintilla includes #include @@ -114,6 +115,10 @@ // Toolbars. QStatusBar *m_statusBar; + QLineEdit *m_currentDirectoryLineEdit; + QToolButton *m_currentDirectoryToolButton; + QToolButton *m_currentDirectoryUpToolButton; + // Flag for closing whole application bool m_closing; }; diff -r 7605e7136b50 -r 7fbea449737d gui/src/backend/OctaveLink.cpp --- a/gui/src/backend/OctaveLink.cpp Tue May 22 11:00:24 2012 +0200 +++ b/gui/src/backend/OctaveLink.cpp Tue May 22 13:04:24 2012 +0200 @@ -47,7 +47,6 @@ // Create both threads. m_octaveMainThread = new OctaveMainThread (this); octave_loop_hook = octave_loop_hook_impl; - // Start the first one. m_octaveMainThread->start (); }