diff libgui/graphics/qt-graphics-toolkit.cc @ 27647:2a506bc4a7af

eliminate global access to Octave interpreter in qt graphics classes Provide reference to interprerter to qt graphics classes to eliminate need for accessing it through a global variable. * qt-graphics-toolkit.cc (qt_graphics_toolkit::create_object): Pass m_interpreter to create functions for individual graphics objects. * BaseControl.h, BaseControl.cc, ButtonControl.h, ButtonControl.cc, ButtonGroup.h, ButtonGroup.cc, Canvas.h, Canvas.cc, CheckBoxControl.h, CheckBoxControl.cc, Container.h, Container.cc, ContextMenu.h, ContextMenu.cc, EditControl.h, EditControl.cc, Figure.h, Figure.cc, GLCanvas.h, GLCanvas.cc, ListBoxControl.h, ListBoxControl.cc, Menu.h, Menu.cc, Object.h, Object.cc, Panel.h, Panel.cc, PopupMenuControl.h, PopupMenuControl.cc, PushButtonControl.h, PushButtonControl.cc, PushTool.h, PushTool.cc, QtHandlesUtils.h, RadioButtonControl.h, RadioButtonControl.cc, SliderControl.h, SliderControl.cc, Table.h, Table.cc, TextControl.h, TextControl.cc, ToggleButtonControl.h, ToggleButtonControl.cc, ToggleTool.h, ToggleTool.cc, ToolBar.h, ToolBar.cc, ToolBarButton.h, ToolBarButton.cc: Accept reference to interpreter in create function and constructors for graphics objects. Eliminate global access to interpreter object and graphics_handle manager.
author John W. Eaton <jwe@octave.org>
date Wed, 06 Nov 2019 12:42:12 -0500
parents 028205a91a07
children b442ec6dda5c
line wrap: on
line diff
--- a/libgui/graphics/qt-graphics-toolkit.cc	Tue Nov 05 18:23:20 2019 -0500
+++ b/libgui/graphics/qt-graphics-toolkit.cc	Wed Nov 06 12:42:12 2019 -0500
@@ -370,82 +370,85 @@
 
     graphics_object go (gh_mgr.get_object (graphics_handle (handle)));
 
-    if (go.valid_object ())
+    if (! go.valid_object ())
       {
-        if (go.get_properties ().is_beingdeleted ())
-          qWarning ("qt_graphics_toolkit::create_object: object is being deleted");
-        else
-          {
-            ObjectProxy *proxy = qt_graphics_toolkit::toolkitObjectProxy (go);
+        qWarning ("qt_graphics_toolkit::create_object: invalid object for handle %g",
+                  handle);
+        return;
+      }
+
+    if (go.get_properties ().is_beingdeleted ())
+      {
+        qWarning ("qt_graphics_toolkit::create_object: object is being deleted");
+        return;
+      }
+
+    ObjectProxy *proxy = qt_graphics_toolkit::toolkitObjectProxy (go);
 
-            if (proxy)
-              {
-                Logger::debug ("qt_graphics_toolkit::create_object: "
-                               "create %s from thread %08x",
-                               go.type ().c_str (), QThread::currentThreadId ());
+    if (! proxy)
+      {
+        qWarning ("qt_graphics_toolkit::create_object: no proxy for handle %g",
+                  handle);
+        return;
+      }
 
-                Object *obj = nullptr;
+    Logger::debug ("qt_graphics_toolkit::create_object: "
+                   "create %s from thread %08x",
+                   go.type ().c_str (), QThread::currentThreadId ());
+
+    Object *obj = nullptr;
 
-                if (go.isa ("figure"))
-                  obj = Figure::create (m_octave_qobj, go);
-                else if (go.isa ("uicontrol"))
-                  {
-                    uicontrol::properties& up =
-                      Utils::properties<uicontrol> (go);
+    if (go.isa ("figure"))
+      obj = Figure::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uicontrol"))
+      {
+        uicontrol::properties& up =
+          Utils::properties<uicontrol> (go);
 
-                    if (up.style_is ("pushbutton"))
-                      obj = PushButtonControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("edit"))
-                      obj = EditControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("checkbox"))
-                      obj = CheckBoxControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("radiobutton"))
-                      obj = RadioButtonControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("togglebutton"))
-                      obj = ToggleButtonControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("text"))
-                      obj = TextControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("popupmenu"))
-                      obj = PopupMenuControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("slider"))
-                      obj = SliderControl::create (m_octave_qobj, go);
-                    else if (up.style_is ("listbox"))
-                      obj = ListBoxControl::create (m_octave_qobj, go);
-                  }
-                else if (go.isa ("uibuttongroup"))
-                  obj = ButtonGroup::create (m_octave_qobj, go);
-                else if (go.isa ("uipanel"))
-                  obj = Panel::create (m_octave_qobj, go);
-                else if (go.isa ("uimenu"))
-                  obj = Menu::create (m_octave_qobj, go);
-                else if (go.isa ("uicontextmenu"))
-                  obj = ContextMenu::create (m_octave_qobj, go);
-                else if (go.isa ("uitable"))
-                  obj = Table::create (m_octave_qobj, go);
-                else if (go.isa ("uitoolbar"))
-                  obj = ToolBar::create (m_octave_qobj, go);
-                else if (go.isa ("uipushtool"))
-                  obj = PushTool::create (m_octave_qobj, go);
-                else if (go.isa ("uitoggletool"))
-                  obj = ToggleTool::create (m_octave_qobj, go);
-                else
-                  qWarning ("qt_graphics_toolkit::create_object: unsupported type '%s'",
-                            go.type ().c_str ());
+        if (up.style_is ("pushbutton"))
+          obj = PushButtonControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("edit"))
+          obj = EditControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("checkbox"))
+          obj = CheckBoxControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("radiobutton"))
+          obj = RadioButtonControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("togglebutton"))
+          obj = ToggleButtonControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("text"))
+          obj = TextControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("popupmenu"))
+          obj = PopupMenuControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("slider"))
+          obj = SliderControl::create (m_octave_qobj, m_interpreter, go);
+        else if (up.style_is ("listbox"))
+          obj = ListBoxControl::create (m_octave_qobj, m_interpreter, go);
+      }
+    else if (go.isa ("uibuttongroup"))
+      obj = ButtonGroup::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uipanel"))
+      obj = Panel::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uimenu"))
+      obj = Menu::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uicontextmenu"))
+      obj = ContextMenu::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uitable"))
+      obj = Table::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uitoolbar"))
+      obj = ToolBar::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uipushtool"))
+      obj = PushTool::create (m_octave_qobj, m_interpreter, go);
+    else if (go.isa ("uitoggletool"))
+      obj = ToggleTool::create (m_octave_qobj, m_interpreter, go);
+    else
+      qWarning ("qt_graphics_toolkit::create_object: unsupported type '%s'",
+                go.type ().c_str ());
 
-                if (obj)
-                  {
-                    proxy->setObject (obj);
-                    obj->do_connections (this);
-                  }
-              }
-            else
-              qWarning ("qt_graphics_toolkit::create_object: no proxy for handle %g",
-                        handle);
-          }
+    if (obj)
+      {
+        proxy->setObject (obj);
+        obj->do_connections (this);
       }
-    else
-      qWarning ("qt_graphics_toolkit::create_object: invalid object for handle %g",
-                handle);
   }
 
   void qt_graphics_toolkit::gh_callback_event (const graphics_handle& h,