# HG changeset patch # User Torsten # Date 1367764451 -7200 # Node ID cb09eecbd84e517bbd209de4e295f40d8b960e30 # Parent 49653ed9561bd6966baba0bb61fb2b07c0ccca25 add close actions to the file menu of the editor * file-editor.cc(consruct): new actions for close, close all and clos other * file-editor.cc/.h (request_close_file.request_close_all_files,request_close_other_files): new slots for the new actions diff -r 49653ed9561b -r cb09eecbd84e libgui/src/m-editor/file-editor.cc --- a/libgui/src/m-editor/file-editor.cc Sat May 04 22:51:43 2013 -0500 +++ b/libgui/src/m-editor/file-editor.cc Sun May 05 16:34:11 2013 +0200 @@ -624,6 +624,36 @@ } void +file_editor::request_close_file (bool) +{ + emit fetab_close_request (_tab_widget->currentWidget ()); +} + +void +file_editor::request_close_all_files (bool) +{ + int index; + while ((index = _tab_widget->currentIndex ()) > -1) + emit fetab_close_request (_tab_widget->widget (index)); +} + +void +file_editor::request_close_other_files (bool) +{ + int index = 0; + QWidget *tabID = _tab_widget->currentWidget (); + + while (_tab_widget->count () > 1) + { + if (tabID != _tab_widget->widget (index)) + emit fetab_close_request (_tab_widget->widget (index)); + else + index++; + } +} + + +void file_editor::handle_tab_close_request (int index) { // Signal to the tabs a request to close whomever matches the identifying @@ -847,22 +877,40 @@ // menu bar QMenu *fileMenu = new QMenu (tr ("&File"), _menu_bar); - fileMenu->addAction (new_action); - fileMenu->addAction (open_action); - fileMenu->addAction (save_action); - fileMenu->addAction (save_as_action); - fileMenu->addSeparator (); + _mru_file_menu = new QMenu (tr ("&Recent Editor Files"), fileMenu); - for (int i = 0; i < MaxMRUFiles; ++i) _mru_file_menu->addAction (_mru_file_actions[i]); + fileMenu->addAction (new_action); + fileMenu->addAction (open_action); fileMenu->addMenu (_mru_file_menu); - _menu_bar->addMenu (fileMenu); + + fileMenu->addSeparator (); + fileMenu->addAction (save_action); + fileMenu->addAction (save_as_action); + + fileMenu->addSeparator (); + fileMenu->addAction (QIcon::fromTheme("window-close", + QIcon (":/actions/icons/fileclose.png")), + tr ("&Close"), + this, SLOT (request_close_file (bool)), + QKeySequence::Close); + fileMenu->addAction (QIcon::fromTheme("window-close", + QIcon (":/actions/icons/fileclose.png")), + tr ("Close All"), + this, SLOT (request_close_all_files (bool))); + fileMenu->addAction (QIcon::fromTheme("window-close", + QIcon (":/actions/icons/fileclose.png")), + tr ("Close Other Files"), + this, SLOT (request_close_other_files (bool))); fileMenu->addSeparator (); fileMenu->addAction (print_action); + _menu_bar->addMenu (fileMenu); + + QMenu *editMenu = new QMenu (tr ("&Edit"), _menu_bar); editMenu->addAction (undo_action); editMenu->addAction (redo_action); diff -r 49653ed9561b -r cb09eecbd84e libgui/src/m-editor/file-editor.h --- a/libgui/src/m-editor/file-editor.h Sat May 04 22:51:43 2013 -0500 +++ b/libgui/src/m-editor/file-editor.h Sun May 05 16:34:11 2013 +0200 @@ -105,6 +105,9 @@ void request_new_script (const QString& commands); void request_new_function (const QString& commands); void request_open_file (void); + void request_close_file (bool); + void request_close_all_files (bool); + void request_close_other_files (bool); void request_mru_open_file (QAction *action); void request_print_file (void); diff -r 49653ed9561b -r cb09eecbd84e libgui/src/module.mk --- a/libgui/src/module.mk Sat May 04 22:51:43 2013 -0500 +++ b/libgui/src/module.mk Sun May 05 16:34:11 2013 +0200 @@ -23,6 +23,7 @@ src/icons/editcut.png \ src/icons/editdelete.png \ src/icons/editpaste.png \ + src/icons/fileclose.png \ src/icons/filenew.png \ src/icons/fileopen.png \ src/icons/fileprint.png \ diff -r 49653ed9561b -r cb09eecbd84e libgui/src/resource.qrc --- a/libgui/src/resource.qrc Sat May 04 22:51:43 2013 -0500 +++ b/libgui/src/resource.qrc Sun May 05 16:34:11 2013 +0200 @@ -5,6 +5,7 @@ icons/editcut.png icons/editdelete.png icons/editpaste.png + icons/fileclose.png icons/filenew.png icons/fileopen.png icons/filesave.png