Mercurial > hg > octave-lyh
diff gui/src/MainWindow.cpp @ 14700:7623bece76df gui
Implemented logic for current directory bar.
* MainWindow: Changed current working directory line edit to combo box. Added various signals and slots.
* OctaveLink: Added signal that will be emitted whenever a current directory change occurs.
author | Jacob Dawid <jacob.dawid@googlemail.com> |
---|---|
date | Tue, 29 May 2012 19:08:05 +0200 |
parents | 79c9a6d06590 |
children | 06abf71d9083 |
line wrap: on
line diff
--- a/gui/src/MainWindow.cpp +++ b/gui/src/MainWindow.cpp @@ -131,7 +131,6 @@ // Set terminal font: QSettings *settings = ResourceManager::instance ()->settings (); QFont font = QFont(); - //font.setStyleHint(QFont::TypeWriter); font.setFamily(settings->value("terminal/fontName").toString()); font.setPointSize(settings->value("terminal/fontSize").toInt ()); m_terminal->setTerminalFont(font); @@ -144,6 +143,54 @@ } void +MainWindow::resetWindows () +{ + // TODO: Implement. +} + +void +MainWindow::updateCurrentWorkingDirectory (QString directory) +{ + if(m_currentDirectoryComboBox->findText (directory) < 0) + { + if (m_currentDirectoryComboBox->count () > 31) + { + m_currentDirectoryComboBox->removeItem (0); + } + m_currentDirectoryComboBox->addItem (directory); + int index = m_currentDirectoryComboBox->findText (directory); + m_currentDirectoryComboBox->setCurrentIndex (index); + } +} + +void +MainWindow::changeCurrentWorkingDirectory () +{ + QString selectedDirectory = + QFileDialog::getExistingDirectory(this, tr ("Set working direcotry")); + + if (!selectedDirectory.isEmpty ()) + { + m_terminal->sendText (QString ("cd \'%1\'\n").arg (selectedDirectory)); + m_terminal->setFocus (); + } +} + +void +MainWindow::changeCurrentWorkingDirectory (QString directory) +{ + m_terminal->sendText (QString ("cd \'%1\'\n").arg (directory)); + m_terminal->setFocus (); +} + +void +MainWindow::currentWorkingDirectoryUp () +{ + m_terminal->sendText ("cd ..\n"); + m_terminal->setFocus (); +} + +void MainWindow::showAboutOctave () { QString message = @@ -213,8 +260,11 @@ m_filesDockWidget->setStatusTip (tr ("Browse your files.")); m_statusBar = new QStatusBar (this); - m_currentDirectoryLineEdit = new QLineEdit (QDir::currentPath (), this); - m_currentDirectoryLineEdit->setFixedWidth (300); + m_currentDirectoryComboBox = new QComboBox (this); + m_currentDirectoryComboBox->setFixedWidth (300); + m_currentDirectoryComboBox->setEditable (true); + m_currentDirectoryComboBox->setInsertPolicy (QComboBox::InsertAtTop); + m_currentDirectoryComboBox->setMaxVisibleItems (14); m_currentDirectoryToolButton = new QToolButton (this); m_currentDirectoryToolButton->setIcon (style->standardIcon (QStyle::SP_DirOpenIcon)); @@ -223,7 +273,7 @@ m_currentDirectoryUpToolButton->setIcon (style->standardIcon (QStyle::SP_FileDialogToParent)); // Octave Terminal subwindow. - m_terminal = new QTerminal(this); + m_terminal = new QTerminal (this); m_terminal->setObjectName ("OctaveTerminal"); m_terminalDockWidget = new TerminalDockWidget (m_terminal, this); @@ -296,6 +346,9 @@ QAction *showEditorAction = windowMenu->addAction (tr ("Editor")); showEditorAction->setCheckable (true); + windowMenu->addSeparator (); + QAction *resetWindowsAction = windowMenu->addAction (tr ("Reset Windows")); + // Help menu QMenu *helpMenu = menuBar ()->addMenu (tr ("&Help")); QAction *reportBugAction = helpMenu->addAction (tr ("Report Bug")); @@ -316,7 +369,7 @@ mainToolBar->addAction (redoAction); mainToolBar->addSeparator (); mainToolBar->addWidget (new QLabel (tr ("Current Directory:"))); - mainToolBar->addWidget (m_currentDirectoryLineEdit); + mainToolBar->addWidget (m_currentDirectoryComboBox); mainToolBar->addWidget (m_currentDirectoryToolButton); mainToolBar->addWidget (m_currentDirectoryUpToolButton); @@ -341,7 +394,7 @@ connect (m_filesDockWidget, SIGNAL (activeChanged (bool)), showFileBrowserAction, SLOT (setChecked (bool))); connect (showEditorAction, SIGNAL (toggled (bool)), m_fileEditor, SLOT (setShown (bool))); connect (m_fileEditor, SIGNAL (activeChanged (bool)), showEditorAction, SLOT (setChecked (bool))); - + connect (resetWindowsAction, SIGNAL (triggered ()), this, SLOT (resetWindows ())); //connect (this, SIGNAL (settingsChanged ()), m_workspaceView, SLOT (noticeSettings ())); //connect (this, SIGNAL (settingsChanged ()), m_historyDockWidget, SLOT (noticeSettings ())); connect (this, SIGNAL (settingsChanged ()), m_filesDockWidget, SLOT (noticeSettings ())); @@ -354,8 +407,18 @@ connect (loadWorkspaceAction, SIGNAL (triggered ()), this, SLOT (handleLoadWorkspaceRequest ())); connect (clearWorkspaceAction, SIGNAL (triggered ()), this, SLOT (handleClearWorkspaceRequest ())); + connect (m_currentDirectoryToolButton, SIGNAL (clicked ()), + this, SLOT (changeCurrentWorkingDirectory ())); + connect (m_currentDirectoryUpToolButton, SIGNAL (clicked ()), + this, SLOT(currentWorkingDirectoryUp())); connect (copyAction, SIGNAL (triggered()), m_terminal, SLOT(copyClipboard ())); connect (pasteAction, SIGNAL (triggered()), m_terminal, SLOT(pasteClipboard ())); + + connect (OctaveLink::instance (), SIGNAL (workingDirectoryChanged (QString)), + this, SLOT (updateCurrentWorkingDirectory (QString))); + connect (m_currentDirectoryComboBox, SIGNAL (activated (QString)), + this, SLOT (changeCurrentWorkingDirectory (QString))); + setWindowTitle ("Octave"); setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);