Mercurial > hg > octave-nkf
changeset 16594:3ce0c312a40b
contextmenu for opening files in default applications
* files-dock-widget.h, files-dock-widget.cc
(files_dock_widget::contextmenu_open_in_app,
files_dock_widget::open_item_in_app): New functions.
(files_dock_widget::contextmenu_requested): New action for opening
file in default external application.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 29 Apr 2013 18:39:07 -0400 |
parents | e13051d7a472 |
children | 8abae9ea4cb5 645672f1c873 |
files | libgui/src/files-dock-widget.cc libgui/src/files-dock-widget.h |
diffstat | 2 files changed, 31 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc +++ b/libgui/src/files-dock-widget.cc @@ -40,6 +40,8 @@ #include <QInputDialog> #include <QMessageBox> #include <QToolButton> +#include <QUrl> +#include <QDesktopServices> #include "load-save.h" @@ -295,6 +297,17 @@ } } +void +files_dock_widget::open_item_in_app (const QModelIndex& index) +{ + // Retrieve the file info associated with the model index. + QFileInfo fileInfo = _file_system_model->fileInfo (index); + + QString file = fileInfo.absoluteFilePath (); + + QDesktopServices::openUrl (QUrl::fromLocalFile (file)); +} + void files_dock_widget::contextmenu_requested (const QPoint& mpos) { @@ -310,9 +323,14 @@ menu.addAction (QIcon (":/actions/icons/fileopen.png"), tr("Open"), this, SLOT(contextmenu_open(bool))); + + menu.addAction (tr("Open in Default Application"), + this, SLOT (contextmenu_open_in_app (bool))); + if (info.isFile () && info.suffix () == "m") menu.addAction (QIcon (":/actions/icons/artsbuilderexecute.png"), tr("Run"), this, SLOT(contextmenu_run(bool))); + if (info.isFile ()) menu.addAction (tr("Load Data"), this, SLOT(contextmenu_load(bool))); @@ -359,6 +377,16 @@ } void +files_dock_widget::contextmenu_open_in_app (bool) +{ + QItemSelectionModel *m = _file_tree_view->selectionModel (); + QModelIndexList rows = m->selectedRows (); + + for (QModelIndexList::iterator it = rows.begin (); it != rows.end (); it++) + open_item_in_app (*it); +} + +void files_dock_widget::contextmenu_load (bool) { QItemSelectionModel *m = _file_tree_view->selectionModel ();
--- a/libgui/src/files-dock-widget.h +++ b/libgui/src/files-dock-widget.h @@ -85,6 +85,7 @@ /* context menu actions */ void contextmenu_open (bool); + void contextmenu_open_in_app (bool); void contextmenu_run (bool); void contextmenu_load (bool); void contextmenu_rename (bool); @@ -119,6 +120,8 @@ /** set a new directory or open a file **/ void display_directory (const QString& dir, bool set_octave_dir = true); + void open_item_in_app (const QModelIndex& index); + /** Variables for the actions **/ QToolBar * _navigation_tool_bar; QAction * _sync_octave_directory_action;