diff libgui/src/main-window.cc @ 27218:a044202208af

more refactoring of GUI classes that manage the interpreter * interpreter-qobject.h, interpreter-qobject.cc (interpreter_qobject::m_app_context): Delete. (interpreter_qobject::m_octave_qobject, interpreter_qobject::m_qt_link): New data members. (interpreter_qobject::interpreter_qobject): Accept reference to base_qobject as argument instead of qt_application object. Make octave_qt_link connections here. (interpreter_qobject::confirm_shutdown, interpreter_qobject::qt_link): New functions. * main-window.h, main-window.cc (main_window::m_octave_qapp, main_window::m_octave_qt_link): Delete data members. (main_window::m_octave_qobj): New data membeer. (main_window::main_window): Don't pass pointer to octave_qt_link as separate argument. In other member functions, get QApplication and octave_qt_link objects from m_octave_qobj as needed. * octave-qobject.h, octave-qobject.cc (base_qobject::m_octave_qt_link): Delete. (base_qobject::base_qobject): Don't make connections to octave_qt_lnk signals here. (base_qobject::confirm_shutdown_octave_internal): Delete. (base_qobject::confirm_shutdown_octave): Call interpreter_qobject::confirm_shutdown instead of confirm_shutdown_octave_internal. (gui_qobject::confirm_shutdown_octave): Likewise.
author John W. Eaton <jwe@octave.org>
date Fri, 28 Jun 2019 14:42:44 -0400
parents ac92aa74fa1a
children b88d66c631c8
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Thu Jun 27 13:27:22 2019 -0400
+++ b/libgui/src/main-window.cc	Fri Jun 28 14:42:44 2019 -0400
@@ -96,11 +96,8 @@
 #endif
   }
 
-  main_window::main_window (base_qobject& qobj,
-                            octave_qt_link *lnk)
-    : QMainWindow (),
-      m_octave_qapp (qobj.octave_qapp ()), m_octave_qt_link (lnk),
-      m_workspace_model (nullptr),
+  main_window::main_window (base_qobject& qobj)
+    : QMainWindow (), m_octave_qobj (qobj), m_workspace_model (nullptr),
       m_status_bar (nullptr), m_command_window (nullptr),
       m_history_window (nullptr), m_file_browser_window (nullptr),
       m_doc_browser_window (nullptr), m_editor_window (nullptr),
@@ -166,7 +163,9 @@
     QGuiApplication::setDesktopFileName ("org.octave.Octave.desktop");
 #endif
 
-    m_default_style = m_octave_qapp->style ()->objectName ();
+    QApplication *qapp = m_octave_qobj.qapplication ();
+
+    m_default_style = qapp->style ()->objectName ();
 
     QSettings *settings = resource_manager::get_settings ();
 
@@ -432,8 +431,12 @@
 
   void main_window::file_remove_proxy (const QString& o, const QString& n)
   {
+    interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
+
+    octave_qt_link *qt_link = interp_qobj->qt_link ();
+
     // Wait for worker to suspend
-    m_octave_qt_link->lock ();
+    qt_link->lock ();
 
     // Close the file if opened
 #if defined (HAVE_QSCINTILLA)
@@ -444,8 +447,8 @@
 #endif
 
     // We are done: Unlock and wake the worker thread
-    m_octave_qt_link->unlock ();
-    m_octave_qt_link->wake_all ();
+    qt_link->unlock ();
+    qt_link->wake_all ();
   }
 
   void main_window::open_online_documentation_page (void)
@@ -675,7 +678,11 @@
 
     QStyle *new_style = QStyleFactory::create (preferred_style);
     if (new_style)
-      m_octave_qapp->setStyle (new_style);
+      {
+        QApplication *qapp = m_octave_qobj.qapplication ();
+
+        qapp->setStyle (new_style);
+      }
 
     // the widget's icons (when floating)
     QString icon_set
@@ -1653,13 +1660,17 @@
     connect (m_workspace_model, SIGNAL (model_changed (void)),
              m_workspace_window, SLOT (handle_model_changed (void)));
 
-    connect (m_octave_qt_link,
+    interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
+
+    octave_qt_link *qt_link = interp_qobj->qt_link ();
+
+    connect (qt_link,
              SIGNAL (edit_variable_signal (const QString&,
                                            const octave_value&)),
              this,
              SLOT (edit_variable (const QString&, const octave_value&)));
 
-    connect (m_octave_qt_link, SIGNAL (refresh_variable_editor_signal (void)),
+    connect (qt_link, SIGNAL (refresh_variable_editor_signal (void)),
              this, SLOT (refresh_variable_editor (void)));
 
     connect (m_workspace_model,
@@ -1814,12 +1825,12 @@
              m_editor_window, SLOT (handle_file_renamed (bool)));
 
     // Signals for removing/renaming files/dirs in the temrinal window
-    connect (m_octave_qt_link, SIGNAL (file_renamed_signal (bool)),
+    connect (qt_link, SIGNAL (file_renamed_signal (bool)),
              m_editor_window, SLOT (handle_file_renamed (bool)));
 #endif
 
     // Signals for removing/renaming files/dirs in the temrinal window
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (file_remove_signal (const QString&, const QString&)),
              this, SLOT (file_remove_proxy (const QString&, const QString&)));
 
@@ -1831,88 +1842,92 @@
 
   void main_window::construct_octave_qt_link (void)
   {
-    connect (m_octave_qt_link,
+    interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
+
+    octave_qt_link *qt_link = interp_qobj->qt_link ();
+
+    connect (qt_link,
              SIGNAL (set_workspace_signal (bool, bool, const symbol_info_list&)),
              m_workspace_model,
              SLOT (set_workspace (bool, bool, const symbol_info_list&)));
 
-    connect (m_octave_qt_link, SIGNAL (clear_workspace_signal (void)),
+    connect (qt_link, SIGNAL (clear_workspace_signal (void)),
              m_workspace_model, SLOT (clear_workspace (void)));
 
-    connect (m_octave_qt_link, SIGNAL (change_directory_signal (QString)),
+    connect (qt_link, SIGNAL (change_directory_signal (QString)),
              this, SLOT (change_directory (QString)));
 
-    connect (m_octave_qt_link, SIGNAL (change_directory_signal (QString)),
+    connect (qt_link, SIGNAL (change_directory_signal (QString)),
              m_file_browser_window, SLOT (update_octave_directory (QString)));
 
-    connect (m_octave_qt_link, SIGNAL (change_directory_signal (QString)),
+    connect (qt_link, SIGNAL (change_directory_signal (QString)),
              m_editor_window, SLOT (update_octave_directory (QString)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (execute_command_in_terminal_signal (QString)),
              this, SLOT (execute_command_in_terminal (QString)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (set_history_signal (const QStringList&)),
              m_history_window, SLOT (set_history (const QStringList&)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (append_history_signal (const QString&)),
              m_history_window, SLOT (append_history (const QString&)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (clear_history_signal (void)),
              m_history_window, SLOT (clear_history (void)));
 
-    connect (m_octave_qt_link, SIGNAL (enter_debugger_signal (void)),
+    connect (qt_link, SIGNAL (enter_debugger_signal (void)),
              this, SLOT (handle_enter_debugger (void)));
 
-    connect (m_octave_qt_link, SIGNAL (exit_debugger_signal (void)),
+    connect (qt_link, SIGNAL (exit_debugger_signal (void)),
              this, SLOT (handle_exit_debugger (void)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (show_preferences_signal (void)),
              this, SLOT (process_settings_dialog_request (void)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (gui_preference_signal (const QString&, const QString&,
                                             QString*)),
              this, SLOT (gui_preference (const QString&, const QString&,
                                          QString*)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (edit_file_signal (const QString&)),
              m_active_editor,
              SLOT (handle_edit_file_request (const QString&)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (insert_debugger_pointer_signal (const QString&, int)),
              this,
              SLOT (handle_insert_debugger_pointer_request (const QString&,
                                                            int)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (delete_debugger_pointer_signal (const QString&, int)),
              this,
              SLOT (handle_delete_debugger_pointer_request (const QString&,
                                                            int)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (update_breakpoint_marker_signal (bool, const QString&,
                                                       int, const QString&)),
              this,
              SLOT (handle_update_breakpoint_marker_request (bool, const QString&,
                                                             int, const QString&)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (show_doc_signal (const QString &)),
              this, SLOT (handle_show_doc (const QString &)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (register_doc_signal (const QString &)),
              this, SLOT (handle_register_doc (const QString &)));
 
-    connect (m_octave_qt_link,
+    connect (qt_link,
              SIGNAL (unregister_doc_signal (const QString &)),
              this, SLOT (handle_unregister_doc (const QString &)));
   }
@@ -2428,8 +2443,12 @@
     QSettings *settings = resource_manager::get_settings ();
     *read_value = settings->value (key).toString ();
 
+    interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
+
+    octave_qt_link *qt_link = interp_qobj->qt_link ();
+
     // Wait for worker to suspend
-    m_octave_qt_link->lock ();
+    qt_link->lock ();
 
     // Some preferences need extra handling
     QString adjusted_value = gui_preference_adjust (key, value);
@@ -2442,8 +2461,8 @@
       }
 
     // We are done: Unlock and wake the worker thread
-    m_octave_qt_link->unlock ();
-    m_octave_qt_link->wake_all ();
+    qt_link->unlock ();
+    qt_link->wake_all ();
   }
 
   void main_window::rename_variable_callback (const main_window::name_pair& names)