# HG changeset patch # User Thorsten Liebig # Date 1346790888 -7200 # Node ID d811058962886e36c8b8568bf6c369f124980898 # Parent 704ab1b4c369f28f5f7295375b953945fb1624f0 m-editor: open a new file from the directory of the last active tab * file-editor-tab.cc, file-editor-tab.h: new get_file_name method & open_file with a directory * file-editor.cc: request_open_file with the path to the last active file diff --git a/libgui/src/m-editor/file-editor-tab.cc b/libgui/src/m-editor/file-editor-tab.cc --- a/libgui/src/m-editor/file-editor-tab.cc +++ b/libgui/src/m-editor/file-editor-tab.cc @@ -603,13 +603,14 @@ } bool -file_editor_tab::open_file () +file_editor_tab::open_file (QString dir) { QString openFileName; QFileDialog fileDialog(this); fileDialog.setNameFilter(SAVE_FILE_FILTER); fileDialog.setAcceptMode(QFileDialog::AcceptOpen); fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setDirectory(dir); if (fileDialog.exec () == QDialog::Accepted) { openFileName = fileDialog.selectedFiles().at(0); diff --git a/libgui/src/m-editor/file-editor-tab.h b/libgui/src/m-editor/file-editor-tab.h --- a/libgui/src/m-editor/file-editor-tab.h +++ b/libgui/src/m-editor/file-editor-tab.h @@ -64,7 +64,7 @@ void set_modified (bool modified = true); - bool open_file (); + bool open_file (QString dir = QString ()); void load_file (QString fileName); void new_file (); bool save_file (); @@ -73,6 +73,8 @@ void run_file (); void file_has_changed (QString fileName); + + QString get_file_name () const {return _file_name;} signals: void file_name_changed (QString fileName); diff --git a/libgui/src/m-editor/file-editor.cc b/libgui/src/m-editor/file-editor.cc --- a/libgui/src/m-editor/file-editor.cc +++ b/libgui/src/m-editor/file-editor.cc @@ -98,11 +98,16 @@ void file_editor::request_open_file () { + file_editor_tab *current_tab = active_editor_tab (); file_editor_tab *fileEditorTab = new file_editor_tab (this); if (fileEditorTab) { add_file_editor_tab (fileEditorTab); - if (!fileEditorTab->open_file ()) + QString dir = QDir::currentPath (); + // get the filename of the last active tab to open a new file from there + if (current_tab) + dir = QDir::cleanPath (current_tab->get_file_name ()); + if (!fileEditorTab->open_file (dir)) { // If no file was loaded, remove the tab again. _tab_widget->removeTab (_tab_widget->indexOf (fileEditorTab));