Mercurial > hg > octave-nkf
diff libgui/src/files-dock-widget.cc @ 16542:016073c0cb94
Add popdown toolbutton to files-dock-window toolbar.
* libgui/src/files-dock-widget.cc
(files_dock_widget::files_dock_widget): added popdown button to toolbar and
merged set current dir, show current dir into it as well as adding new dir
and new file option.
(files_dock_widget::display_directory): change to call process_set_current_dir
instead of emit.
(files_dock_widget::contextmenu_newfile): change to call process_new_file.
(files_dock_widget::contextmenu_newdir): Change to call process_new_dir.
(files_dock_widget::contextmenu_setcurrentdir): Change to call
process_set_current_dir.
(files_dock_widget::popdownmenu_newdir): New function.
(files_dock_widget::popdownmenu_newfile): New function.
(files_dock_widget::process_new_file): New function.
(files_dock_widget::process_new_dir): New function.
(iles_dock_widget::process_set_current_dir): New function.
* libgui/src/resource.qrc: Added icons/gear.png.
* libgui/src/module.mk: Added icons/gear.png.
* libgui/src/icons.png: New file.
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Tue, 16 Apr 2013 22:16:57 -0400 |
parents | e192525236ad |
children | 04fb96f4bea1 |
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc +++ b/libgui/src/files-dock-widget.cc @@ -39,6 +39,7 @@ #include <QMenu> #include <QInputDialog> #include <QMessageBox> +#include <QToolButton> files_dock_widget::files_dock_widget (QWidget *p) : octave_dock_widget (p) @@ -80,19 +81,35 @@ directory_up_action->setToolTip (tr ("Move up one directory")); _sync_browser_directory_action = new QAction (QIcon(":/actions/icons/reload.png"), - "", _navigation_tool_bar); + tr("Show octave directory"), _navigation_tool_bar); _sync_browser_directory_action->setToolTip (tr ("Goto current octave directory")); _sync_browser_directory_action->setEnabled ("false"); _sync_octave_directory_action = new QAction (QIcon(":/actions/icons/ok.png"), - "", _navigation_tool_bar); + tr("Set octave directory"), _navigation_tool_bar); _sync_octave_directory_action->setToolTip (tr ("Set octave directroy to current browser directory")); _sync_octave_directory_action->setEnabled ("false"); + QToolButton * popdown_button = new QToolButton(); + popdown_button->setToolTip(tr ("Actions on current directory")); + QMenu * popdown_menu = new QMenu(); + popdown_menu->addAction(_sync_browser_directory_action); + popdown_menu->addAction(_sync_octave_directory_action); + popdown_button->setMenu(popdown_menu); + popdown_button->setPopupMode(QToolButton::InstantPopup); + popdown_button->setDefaultAction(new QAction(QIcon(":/actions/icons/gear.png"),"", _navigation_tool_bar)); + + popdown_menu->addSeparator(); + popdown_menu->addAction(QIcon(":/actions/icons/filenew.png"), + tr ("New File"), + this, SLOT(popdownmenu_newfile(bool))); + popdown_menu->addAction(QIcon(":/actions/icons/folder_new.png"), + tr ("New Directory"), + this, SLOT(popdownmenu_newdir(bool))); + _navigation_tool_bar->addWidget (_current_directory); _navigation_tool_bar->addAction (directory_up_action); - _navigation_tool_bar->addAction (_sync_browser_directory_action); - _navigation_tool_bar->addAction (_sync_octave_directory_action); + _navigation_tool_bar->addWidget (popdown_button); connect (directory_up_action, SIGNAL (triggered ()), this, SLOT (change_directory_up ())); @@ -101,8 +118,6 @@ connect (_sync_browser_directory_action, SIGNAL (triggered ()), this, SLOT (do_sync_browser_directory ())); - // TODO: Add other buttons for creating directories - // Create the QFileSystemModel starting in the actual directory QDir curr_dir; _file_system_model = new QFileSystemModel (this); @@ -252,7 +267,7 @@ _file_system_model->setRootPath (fileInfo.absoluteFilePath ()); _file_system_model->sort (0, Qt::AscendingOrder); if (_sync_octave_dir && set_octave_dir) - emit displayed_directory_changed (fileInfo.absoluteFilePath ()); + process_set_current_dir(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 ()); @@ -449,18 +464,8 @@ QFileInfo info = _file_system_model->fileInfo(index); QString parent_dir = info.filePath(); - bool ok; - QString name = QInputDialog::getText (this, tr("Create File"), tr("Create file in\n") + parent_dir, - QLineEdit::Normal, "New File.txt", &ok); - if(ok && name.length()>0) - { - name = parent_dir + "/" + name; - - QFile file(name); - file.open(QIODevice::WriteOnly); - _file_system_model->revert(); - } + process_new_file(parent_dir); } } @@ -476,14 +481,8 @@ QFileInfo info = _file_system_model->fileInfo(index); QString parent_dir = info.filePath(); - bool ok; - QString name = QInputDialog::getText (this, tr("Create Directory"), tr("Create folder in\n") + parent_dir, - QLineEdit::Normal, "New Directory", &ok); - if(ok && name.length()>0) - { - _file_system_model->mkdir(index, name); - } + process_new_dir(parent_dir); } } @@ -501,7 +500,7 @@ if(info.isDir()) { - emit displayed_directory_changed (info.absoluteFilePath ()); + process_set_current_dir(info.absoluteFilePath ()); } } } @@ -535,3 +534,53 @@ display_directory (_octave_dir); // sync browser to octave dir } + +void +files_dock_widget::popdownmenu_newdir (bool) +{ + process_new_dir(_file_system_model->rootPath()); +} + +void +files_dock_widget::popdownmenu_newfile (bool) +{ + process_new_file(_file_system_model->rootPath()); +} + +void +files_dock_widget::process_new_file (const QString &parent_dir) +{ + bool ok; + + QString name = QInputDialog::getText (this, tr("Create File"), tr("Create file in\n") + parent_dir, + QLineEdit::Normal, "New File.txt", &ok); + if(ok && name.length()>0) + { + name = parent_dir + "/" + name; + + QFile file(name); + file.open(QIODevice::WriteOnly); + _file_system_model->revert(); + } +} + +void +files_dock_widget::process_new_dir (const QString &parent_dir) +{ + bool ok; + + QString name = QInputDialog::getText (this, tr("Create Directory"), tr("Create folder in\n") + parent_dir, + QLineEdit::Normal, "New Directory", &ok); + if(ok && name.length()>0) + { + QDir dir(parent_dir); + dir.mkdir(name); + _file_system_model->revert(); + } +} + +void files_dock_widget::process_set_current_dir(const QString & dir) +{ + emit displayed_directory_changed (dir); +} +