changeset 29773:5f404ae822ee

allow variable renaming in workspace_view to work without main_window * octave-qobject.cc (base_qobject::workspace_widget): Connect workspace_view::edit_variable_signal to lambda expression that emits interpreter event. * main-window.h, main-window.cc (main_window::construct): Don't connect workspace_view::rename_variable_signal to main_window::handle_rename_variable_request slot. (main_window::handle_rename_variable_request): Delete unnecessary slot.
author John W. Eaton <jwe@octave.org>
date Thu, 17 Jun 2021 14:11:04 -0400
parents fdbba73edde2
children aa46787ed8b7
files libgui/src/main-window.cc libgui/src/main-window.h libgui/src/octave-qobject.cc
diffstat 3 files changed, 25 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Fri Dec 11 14:45:39 2020 -0500
+++ b/libgui/src/main-window.cc	Thu Jun 17 14:11:04 2021 -0400
@@ -647,36 +647,6 @@
       emit undo_signal ();
   }
 
-  void main_window::handle_rename_variable_request (const QString& old_name_arg,
-                                                    const QString& new_name_arg)
-
-  {
-    std::string old_name = old_name_arg.toStdString ();
-    std::string new_name = new_name_arg.toStdString ();
-
-    emit interpreter_event
-      ([=] (interpreter& interp)
-       {
-         // INTERPRETER THREAD
-
-         symbol_scope scope = interp.get_current_scope ();
-
-         if (scope)
-           {
-             scope.rename (old_name, new_name);
-
-             tree_evaluator& tw = interp.get_evaluator ();
-
-             event_manager& xevmgr = interp.get_event_manager ();
-
-             xevmgr.set_workspace (true, tw.get_symbol_info ());
-           }
-
-         // FIXME: if this action fails, do we need a way to display that info
-         // in the GUI?
-       });
-  }
-
   void main_window::modify_path (const octave_value_list& dir_list,
                                  bool rm, bool subdirs)
   {
@@ -2051,9 +2021,6 @@
 
     qt_interpreter_events *qt_link = interp_qobj->qt_link ();
 
-    connect (m_workspace_window, &workspace_view::rename_variable_signal,
-             this, &main_window::handle_rename_variable_request);
-
     construct_menu_bar ();
 
     construct_tool_bar ();
--- a/libgui/src/main-window.h	Fri Dec 11 14:45:39 2020 -0500
+++ b/libgui/src/main-window.h	Thu Jun 17 14:11:04 2021 -0400
@@ -143,8 +143,6 @@
     void handle_clear_command_window_request (void);
     void handle_clear_history_request (void);
     void handle_undo_request (void);
-    void handle_rename_variable_request (const QString& old_name,
-                                         const QString& new_name);
     void modify_path (const octave_value_list& dir_list, bool rm, bool subdirs);
     void edit_mfile (const QString&, int);
     void file_remove_proxy (const QString& o, const QString& n);
--- a/libgui/src/octave-qobject.cc	Fri Dec 11 14:45:39 2020 -0500
+++ b/libgui/src/octave-qobject.cc	Thu Jun 17 14:11:04 2021 -0400
@@ -510,6 +510,31 @@
 
         connect (m_workspace_widget, &workspace_view::edit_variable_signal,
                  this, &base_qobject::show_variable_editor_window);
+
+        connect (m_workspace_widget, &workspace_view::rename_variable_signal,
+                 [=] (const QString& old_name, const QString& new_name) {
+                   emit interpreter_event
+                     ([=] (interpreter& interp) {
+                       // INTERPRETER THREAD
+
+                       symbol_scope scope = interp.get_current_scope ();
+
+                       if (scope)
+                         {
+                           scope.rename (old_name.toStdString (),
+                                         new_name.toStdString ());
+
+                           tree_evaluator& tw = interp.get_evaluator ();
+
+                           event_manager& xevmgr = interp.get_event_manager ();
+
+                           xevmgr.set_workspace (true, tw.get_symbol_info ());
+                         }
+
+                       // FIXME: if this action fails, do we need a way to
+                       // display that info in the GUI?
+                     });
+                 });
       }
 
     return m_workspace_widget;