Mercurial > hg > octave-lyh
changeset 16498:605d7f0ee0d8
Added Filesdockwidget recently viewed directory pulldownlist
* libgui/src/files-dockwidget.h (files_dock_widget::_current_directory):
Changed from QLineEdit to QComboBox
* libgui/src/files-dockwidget.cc (files_dock_widget::files_dock_widget):
Changed _current_directory to QComboBox and additional signal processing for
index selection. Added load/populate of comboxbox from saved settings.
(files_dock_widget::~files_dock_widget): added save of _current_directory to
settings.
(files_dock_widget::accept_directory_line_edit): change for QComboBox.
files_dock_widget::display_directory): added insertion of displayed directory
into combox list.
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Sat, 06 Apr 2013 01:14:53 -0400 |
parents | 9ff3181e671c |
children | facf00ce97d3 |
files | libgui/src/files-dock-widget.cc libgui/src/files-dock-widget.h |
diffstat | 2 files changed, 39 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc +++ b/libgui/src/files-dock-widget.cc @@ -34,6 +34,8 @@ #include <QProcess> #include <QDebug> #include <QHeaderView> +#include <QLineEdit> +#include <QSizePolicy> files_dock_widget::files_dock_widget (QWidget *p) : octave_dock_widget (p) @@ -67,8 +69,13 @@ _directory_up_action = new QAction (_directory_icon, "", _navigation_tool_bar); _directory_up_action->setStatusTip (tr ("Move up one directory.")); - _current_directory = new QLineEdit (_navigation_tool_bar); + _current_directory = new QComboBox (_navigation_tool_bar); _current_directory->setStatusTip (tr ("Enter the path or filename.")); + _current_directory->setEditable(true); + _current_directory->setMaxCount(MaxMRUDirs); + _current_directory->setInsertPolicy(QComboBox::NoInsert); + QSizePolicy sizePol(QSizePolicy::Expanding, QSizePolicy::Preferred); + _current_directory->setSizePolicy(sizePol); _navigation_tool_bar->addAction (_directory_up_action); _navigation_tool_bar->addWidget (_current_directory); @@ -102,7 +109,10 @@ ); _file_tree_view->header ()->restoreState (settings->value ("filesdockwidget/column_state").toByteArray ()); - _current_directory->setText(_file_system_model->fileInfo (rootPathIndex). + QStringList mru_dirs = settings->value ("filesdockwidget/mru_dir_list").toStringList (); + _current_directory->addItems(mru_dirs); + + _current_directory->setEditText(_file_system_model->fileInfo (rootPathIndex). absoluteFilePath ()); connect (_file_tree_view, SIGNAL (doubleClicked (const QModelIndex &)), @@ -119,8 +129,11 @@ // TODO: Add right-click contextual menus for copying, pasting, deleting files (and others) - connect (_current_directory, SIGNAL (returnPressed ()), - this, SLOT (accept_directory_line_edit ())); + connect (_current_directory->lineEdit(), SIGNAL (returnPressed ()), + this, SLOT (accept_directory_line_edit ())); + + connect (_current_directory, SIGNAL (activated (const QString &)), + this, SLOT (set_current_directory (const QString &))); QCompleter *completer = new QCompleter (_file_system_model, this); _current_directory->setCompleter (completer); @@ -136,6 +149,14 @@ settings->setValue ("filesdockwidget/sort_files_by_column", sort_column); settings->setValue ("filesdockwidget/sort_files_by_order", sort_order); settings->setValue ("filesdockwidget/column_state", _file_tree_view->header ()->saveState ()); + + QStringList dirs; + for(int i=0; i< _current_directory->count(); i++) + { + dirs.append(_current_directory->itemText(i)); + } + settings->setValue ("filesdockwidget/mru_dir_list", dirs); + settings->sync (); } @@ -159,7 +180,7 @@ void files_dock_widget::accept_directory_line_edit (void) { - display_directory (_current_directory->text ()); + display_directory (_current_directory->currentText ()); } void @@ -182,7 +203,15 @@ index (fileInfo.absoluteFilePath ())); _file_system_model->setRootPath (fileInfo.absoluteFilePath ()); _file_system_model->sort (0, Qt::AscendingOrder); - _current_directory->setText (fileInfo.absoluteFilePath ()); + + // see if its in the list, and if it is, remove it and then, put at top of the list + int index = _current_directory->findText(fileInfo.absoluteFilePath ()); + if(index != -1) + { + _current_directory->removeItem(index); + } + _current_directory->insertItem(0, fileInfo.absoluteFilePath ()); + _current_directory->setCurrentIndex(0); } else {
--- a/libgui/src/files-dock-widget.h +++ b/libgui/src/files-dock-widget.h @@ -36,7 +36,7 @@ #include <QTreeView> #include <QSettings> -#include <QLineEdit> +#include <QComboBox> #include "octave-dock-widget.h" /** @@ -97,7 +97,9 @@ /** The file system view. */ QTreeView * _file_tree_view; - QLineEdit * _current_directory; + QComboBox * _current_directory; + + enum { MaxMRUDirs = 10 }; }; #endif // FILESDOCKWIDGET_H