changeset 27643:337132e66ec2

eliminate need for global access to resource manager in uiwidget objects * dialog.h, dialog.cc (QUIWidgetCreator::m_octave_qobj): New data member. (QUIWidgetCreator::QUIWidgetCreator, MessageDialog::MessageDialog, ListDialog::ListDialog, InputDialog::InputDialog, FileDialog::FileDialog): Accept reference to base_qobject argument. Change all uses. (FileDialog::FileDialog): Access resource_manager through local base_qobject object instead of using global __get_resource_manager__ function.
author John W. Eaton <jwe@octave.org>
date Tue, 05 Nov 2019 07:49:38 -0500
parents 2f4213af7067
children cca325162ed7
files libgui/src/dialog.cc libgui/src/dialog.h libgui/src/qt-interpreter-events.cc libgui/src/qt-interpreter-events.h
diffstat 4 files changed, 48 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/dialog.cc	Tue Nov 05 12:09:52 2019 -0800
+++ b/libgui/src/dialog.cc	Tue Nov 05 07:49:38 2019 -0500
@@ -44,9 +44,9 @@
 
 namespace octave
 {
-  QUIWidgetCreator::QUIWidgetCreator (void)
-    : QObject (), m_dialog_result (-1), m_dialog_button (),
-      m_string_list (), m_list_index (), m_path_name ()
+  QUIWidgetCreator::QUIWidgetCreator (base_qobject& oct_qobj)
+    : QObject (), m_octave_qobj (oct_qobj), m_dialog_result (-1),
+      m_dialog_button (), m_string_list (), m_list_index (), m_path_name ()
   {
     connect (this,
              SIGNAL (create_dialog (const QString&, const QString&,
@@ -205,7 +205,8 @@
                                                const QStringList& role)
   {
     MessageDialog *message_dialog
-      = new MessageDialog (message, title, icon, button, defbutton, role);
+      = new MessageDialog (m_octave_qobj, message, title, icon,
+                           button, defbutton, role);
 
     connect (message_dialog, SIGNAL (buttonClicked (QAbstractButton *)),
              this, SLOT (dialog_button_clicked (QAbstractButton *)));
@@ -256,8 +257,8 @@
                                                  const QString& cancel_string)
   {
     ListDialog *list_dialog
-      = new ListDialog (list, mode, wd, ht, initial, name, prompt,
-                        ok_string, cancel_string);
+      = new ListDialog (m_octave_qobj, list, mode, wd, ht, initial,
+                        name, prompt, ok_string, cancel_string);
 
     connect (list_dialog, SIGNAL (finish_selection (const QIntList&, int)),
              this, SLOT (list_select_finished (const QIntList&, int)));
@@ -288,7 +289,7 @@
                                                     const QStringList& defaults)
   {
     InputDialog *input_dialog
-      = new InputDialog (prompt, title, nr, nc, defaults);
+      = new InputDialog (m_octave_qobj, prompt, title, nr, nc, defaults);
 
     connect (input_dialog, SIGNAL (finish_input (const QStringList&, int)),
              this, SLOT (input_finished (const QStringList&, int)));
@@ -316,7 +317,8 @@
                                                    const QString& multimode)
   {
     FileDialog *file_dialog
-      = new FileDialog (filters, title, filename, dirname, multimode);
+      = new FileDialog (m_octave_qobj, filters, title, filename,
+                        dirname, multimode);
 
     connect (file_dialog, SIGNAL (finish_input (const QStringList&,
                                                 const QString&, int)),
@@ -341,9 +343,8 @@
     wake_all ();
   }
 
-  MessageDialog::MessageDialog (const QString& message,
-                                const QString& title,
-                                const QString& qsicon,
+  MessageDialog::MessageDialog (base_qobject&, const QString& message,
+                                const QString& title, const QString& qsicon,
                                 const QStringList& qsbutton,
                                 const QString& defbutton,
                                 const QStringList& role)
@@ -414,9 +415,10 @@
       }
   }
 
-  ListDialog::ListDialog (const QStringList& list, const QString& mode,
-                          int wd, int ht, const QList<int>& initial,
-                          const QString& title, const QStringList& prompt,
+  ListDialog::ListDialog (base_qobject&, const QStringList& list,
+                          const QString& mode, int wd, int ht,
+                          const QList<int>& initial, const QString& title,
+                          const QStringList& prompt,
                           const QString& ok_string,
                           const QString& cancel_string)
     : QDialog (), m_model (new QStringListModel (list))
@@ -554,9 +556,9 @@
     buttonOk_clicked ();
   }
 
-  InputDialog::InputDialog (const QStringList& prompt, const QString& title,
-                            const QFloatList& nr, const QFloatList& nc,
-                            const QStringList& defaults)
+  InputDialog::InputDialog (base_qobject&, const QStringList& prompt,
+                            const QString& title, const QFloatList& nr,
+                            const QFloatList& nc, const QStringList& defaults)
     : QDialog ()
   {
 
@@ -648,9 +650,10 @@
     buttonCancel_clicked ();
   }
 
-  FileDialog::FileDialog (const QStringList& name_filters, const QString& title,
-                          const QString& filename, const QString& dirname,
-                          const QString& multimode)
+  FileDialog::FileDialog (base_qobject& oct_qobj,
+                          const QStringList& name_filters,
+                          const QString& title, const QString& filename,
+                          const QString& dirname, const QString& multimode)
     : QFileDialog ()
   {
     // Create a NonModal message.
@@ -660,8 +663,7 @@
     setDirectory (dirname);
 
     // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
-    resource_manager& rmgr
-      = __get_resource_manager__ ("FileDialog::FileDialog");
+    resource_manager& rmgr = oct_qobj.get_resource_manager ();
     gui_settings *settings = rmgr.get_settings ();
     if (! settings->value ("use_native_file_dialogs", true).toBool ())
       setOption(QFileDialog::DontUseNativeDialog);
--- a/libgui/src/dialog.h	Tue Nov 05 12:09:52 2019 -0800
+++ b/libgui/src/dialog.h	Tue Nov 05 07:49:38 2019 -0500
@@ -42,13 +42,15 @@
 
 namespace octave
 {
+  class base_qobject;
+
   class QUIWidgetCreator : public QObject
   {
     Q_OBJECT
 
   public:
 
-    QUIWidgetCreator (void);
+    QUIWidgetCreator (base_qobject& oct_qobj);
 
     ~QUIWidgetCreator (void) = default;
 
@@ -144,6 +146,8 @@
 
   private:
 
+    base_qobject& m_octave_qobj;
+
     int m_dialog_result;
     QString m_dialog_button;
 
@@ -170,10 +174,10 @@
 
   public:
 
-    explicit MessageDialog (const QString& message, const QString& title,
-                            const QString& icon, const QStringList& button,
-                            const QString& defbutton,
-                            const QStringList& role);
+    MessageDialog (base_qobject& oct_qobj, const QString& message,
+                   const QString& title, const QString& icon,
+                   const QStringList& button, const QString& defbutton,
+                   const QStringList& role);
 
   private:
 
@@ -193,11 +197,11 @@
 
   public:
 
-    explicit ListDialog (const QStringList& list, const QString& mode,
-                         int width, int height, const QList<int>& initial,
-                         const QString& name, const QStringList& prompt,
-                         const QString& ok_string,
-                         const QString& cancel_string);
+    ListDialog (base_qobject& oct_qobj, const QStringList& list,
+                const QString& mode, int width, int height,
+                const QList<int>& initial, const QString& name,
+                const QStringList& prompt, const QString& ok_string,
+                const QString& cancel_string);
 
     ~ListDialog (void);
 
@@ -228,9 +232,9 @@
 
   public:
 
-    explicit InputDialog (const QStringList& prompt, const QString& title,
-                          const QFloatList& nr, const QFloatList& nc,
-                          const QStringList& defaults);
+    InputDialog (base_qobject& oct_qobj, const QStringList& prompt,
+                 const QString& title, const QFloatList& nr,
+                 const QFloatList& nc, const QStringList& defaults);
 
   signals:
 
@@ -251,9 +255,9 @@
 
   public:
 
-    explicit FileDialog (const QStringList& filters,
-                         const QString& title, const QString& filename,
-                         const QString& dirname, const QString& multimode);
+    FileDialog (base_qobject& oct_qobj, const QStringList& filters,
+                const QString& title, const QString& filename,
+                const QString& dirname, const QString& multimode);
 
   signals:
 
--- a/libgui/src/qt-interpreter-events.cc	Tue Nov 05 12:09:52 2019 -0800
+++ b/libgui/src/qt-interpreter-events.cc	Tue Nov 05 07:49:38 2019 -0500
@@ -104,7 +104,8 @@
 
   qt_interpreter_events::qt_interpreter_events (base_qobject& oct_qobj)
     : interpreter_events (), m_octave_qobj (oct_qobj),
-      m_result (), m_mutex (), m_waitcondition (), m_uiwidget_creator ()
+      m_uiwidget_creator (oct_qobj), m_result (), m_mutex (),
+      m_waitcondition ()
   {
     qRegisterMetaType<QIntList> ("QIntList");
     qRegisterMetaType<QFloatList> ("QFloatList");
--- a/libgui/src/qt-interpreter-events.h	Tue Nov 05 12:09:52 2019 -0800
+++ b/libgui/src/qt-interpreter-events.h	Tue Nov 05 07:49:38 2019 -0500
@@ -257,13 +257,13 @@
 
     base_qobject& m_octave_qobj;
 
+    QUIWidgetCreator m_uiwidget_creator;
+
     QVariant m_result;
 
     QMutex m_mutex;
 
     QWaitCondition m_waitcondition;
-
-    QUIWidgetCreator m_uiwidget_creator;
   };
 }