Mercurial > octave
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,