changeset 27273:aaf788e496a3

add file browser context menu for removing dirs from path (bug #55623) * files-dock-widget.cc (contextmenu_requested): add menu with submenus for removing dirs and dirs with subdirs from path; (contextmenu_add_to_path): additional parameter for removing dirs from path; (contextmenu_rm_from_path, contextmenu_rm_from_path_subdirs): new methods calling contextmenu_add_to_path with flags for removing and for subdirs * files-dock-widget.h: new parameter for contextmenu_add_to_path, new methods contextmenu_rm_from_path, contextmenu_rm_from_path_subdirs
author Torsten Lilge <ttl-octave@mailbox.org>
date Sun, 21 Jul 2019 15:46:19 +0200
parents 9de4741a896e
children f49226d21c26
files libgui/src/files-dock-widget.cc libgui/src/files-dock-widget.h
diffstat 2 files changed, 27 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc	Sun Jul 21 12:43:19 2019 +0200
+++ b/libgui/src/files-dock-widget.cc	Sun Jul 21 15:46:19 2019 +0200
@@ -544,6 +544,13 @@
             add_path_menu->addAction (tr ("Selected Directories and Subdirectories"),
                             this, SLOT (contextmenu_add_to_path_subdirs (bool)));
 
+            QMenu *rm_path_menu = menu.addMenu (tr ("Remove from Path"));
+
+            rm_path_menu->addAction (tr ("Selected Directories"),
+                            this, SLOT (contextmenu_rm_from_path (bool)));
+            rm_path_menu->addAction (tr ("Selected Directories and Subdirectories"),
+                            this, SLOT (contextmenu_rm_from_path_subdirs (bool)));
+
             menu.addSeparator ();
 
             menu.addAction (resource_manager::icon ("edit-find"),
@@ -803,7 +810,7 @@
       process_set_current_dir (infos.first ().absoluteFilePath ());
   }
 
-  void files_dock_widget::contextmenu_add_to_path (bool, bool subdirs)
+  void files_dock_widget::contextmenu_add_to_path (bool, bool rm, bool subdirs)
   {
     QList<QFileInfo> infos = get_selected_items_info (true);
 
@@ -818,7 +825,7 @@
           = __get_event_manager__ ("files_dock_widget::contextmenu_add_to_path");
 
         evmgr.post_event
-          ([dir_list, subdirs] (void)
+          ([dir_list, rm, subdirs] (void)
           {
             // INTERPRETER THREAD
 
@@ -836,14 +843,27 @@
             else
               paths = dir_list;
 
-            Faddpath (interp, paths);
+            if (rm)
+              Frmpath (interp, paths);
+            else
+              Faddpath (interp, paths);
           });
       }
   }
 
   void files_dock_widget::contextmenu_add_to_path_subdirs (bool)
   {
-    contextmenu_add_to_path (true, true);
+    contextmenu_add_to_path (true, false, true);
+  }
+
+  void files_dock_widget::contextmenu_rm_from_path (bool)
+  {
+    contextmenu_add_to_path (true, true, false);
+  }
+
+  void files_dock_widget::contextmenu_rm_from_path_subdirs (bool)
+  {
+    contextmenu_add_to_path (true, true, true);
   }
 
   void files_dock_widget::contextmenu_findfiles (bool)
--- a/libgui/src/files-dock-widget.h	Sun Jul 21 12:43:19 2019 +0200
+++ b/libgui/src/files-dock-widget.h	Sun Jul 21 15:46:19 2019 +0200
@@ -113,8 +113,10 @@
     void contextmenu_newfile (bool);
     void contextmenu_newdir (bool);
     void contextmenu_setcurrentdir (bool);
-    void contextmenu_add_to_path (bool, bool subdirs=false);
+    void contextmenu_add_to_path (bool, bool rm=false, bool subdirs=false);
     void contextmenu_add_to_path_subdirs (bool);
+    void contextmenu_rm_from_path (bool);
+    void contextmenu_rm_from_path_subdirs (bool);
     void contextmenu_findfiles (bool);
     //!@}