# HG changeset patch # User John W. Eaton # Date 1365792707 14400 # Node ID 49b059bf27c73d99f7102805c7cc59c41a7059c8 # Parent c1ff738d606d38a5bc2ce02db70a30911a16543b allow loading files from file browser * files-dock-widget.h, files-dock-widget.cc (files_dock_widget::contextmenu_requested): Create menu item for loading files. (files_dock_widget::contextmenu_load): New function. (files_dock_widget::load_file_signal): New signal. * main-window.h, main-window.cc (main_window::construct): Connect file_browser_window::load_file_signal to main_window::handle_load_workspace_request. (main_window::load_workspace_callback): Update workspace after loading file. (main_window::handle_load_workspace_request): New argument for passing file name. 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 @@ -283,6 +283,7 @@ QFileInfo info = _file_system_model->fileInfo(index); menu.addAction(tr("Open"), this, SLOT(contextmenu_open(bool))); + menu.addAction(tr("Load Data"), this, SLOT(contextmenu_load(bool))); menu.addSeparator(); menu.addAction(tr("Rename"), this, SLOT(contextmenu_rename(bool))); menu.addAction(tr("Delete"), this, SLOT(contextmenu_delete(bool))); @@ -313,6 +314,22 @@ } void +files_dock_widget::contextmenu_load (bool) +{ + QItemSelectionModel *m = _file_tree_view->selectionModel (); + QModelIndexList rows = m->selectedRows (); + + if (rows.size () > 0) + { + QModelIndex index = rows[0]; + + QFileInfo info = _file_system_model->fileInfo(index); + + emit load_file_signal (info.fileName ()); + } +} + +void files_dock_widget::contextmenu_rename (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_load (bool); void contextmenu_rename (bool); void contextmenu_delete (bool); void contextmenu_newfile (bool); @@ -98,6 +99,9 @@ /** Emitted, whenever the currently displayed directory changed. */ void displayed_directory_changed (const QString& dir); + /** Emitted, whenever the user requested to load a file. */ + void load_file_signal (const QString& fileName); + private: // TODO: Add toolbar with buttons for navigating the path, creating dirs, etc diff --git a/libgui/src/main-window.cc b/libgui/src/main-window.cc --- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -134,14 +134,16 @@ } void -main_window::handle_load_workspace_request (void) +main_window::handle_load_workspace_request (const QString& file_arg) { - QString selectedFile = - QFileDialog::getOpenFileName (this, tr ("Load Workspace"), - resource_manager::get_home_path ()); - if (!selectedFile.isEmpty ()) + QString file = file_arg; + + if (file.isEmpty ()) + file = QFileDialog::getOpenFileName (this, tr ("Load Workspace"), + resource_manager::get_home_path ()); + if (! file.isEmpty ()) octave_link::post_event (this, &main_window::load_workspace_callback, - selectedFile.toStdString ()); + file.toStdString ()); } void @@ -562,6 +564,9 @@ connect (this, SIGNAL (settings_changed (const QSettings *)), this, SLOT (notice_settings (const QSettings *))); + connect (file_browser_window, SIGNAL (load_file_signal (const QString&)), + this, SLOT (handle_load_workspace_request (const QString&))); + setWindowTitle ("Octave"); setDockOptions (QMainWindow::AnimatedDocks @@ -1197,6 +1202,8 @@ main_window::load_workspace_callback (const std::string& file) { Fload (ovl (file)); + + octave_link::set_workspace (true, symbol_table::workspace_info ()); } void diff --git a/libgui/src/main-window.h b/libgui/src/main-window.h --- a/libgui/src/main-window.h +++ b/libgui/src/main-window.h @@ -81,7 +81,7 @@ public slots: void report_status_message (const QString& statusMessage); void handle_save_workspace_request (void); - void handle_load_workspace_request (void); + void handle_load_workspace_request (const QString& file = QString ()); void handle_clear_workspace_request (void); void handle_clear_history_request (void); void handle_rename_variable_request (const QString& old_name,