# HG changeset patch # User John W. Eaton # Date 1367275147 14400 # Node ID 3ce0c312a40b696622408b4fd668c742841d72fe # Parent e13051d7a4729812cf80d82c4b9729ac65073cad 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. diff --git a/libgui/src/files-dock-widget.cc b/libgui/src/files-dock-widget.cc --- a/libgui/src/files-dock-widget.cc +++ b/libgui/src/files-dock-widget.cc @@ -40,6 +40,8 @@ #include #include #include +#include +#include #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 (); diff --git a/libgui/src/files-dock-widget.h b/libgui/src/files-dock-widget.h --- 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;