Mercurial > octave
changeset 27645:028205a91a07
eliminate global access to Octave resources in qt graphics classes
Provide reference to base_qobject to qt graphics classes to
eliminate need for accessing it through a global variable.
* qt-graphics-toolkit.h, qt-graphics-toolkit.cc
(qt_graphics_toolkit::m_octave_qobj): New member variable.
(qt_graphics_toolkit::qt_graphics_toolkit): Accept reference to
base_qobject as argument.
(qt_graphics_toolkit::create_object): Pass m_octave_qobj to create
functions for individual graphics objects.
* __init_qt__.cc (__init__): Temporarily access base_qobject by
calling octave::base_qobject::the_octave_qobject. Pass it to
qt_graphics_toolkit constructor.
* 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, Panel.h, Panel.cc, PopupMenuControl.h, PopupMenuControl.cc,
PushButtonControl.h, PushButtonControl.cc, PushTool.h, PushTool.cc,
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, annotation-dialog.h, annotation-dialog.cc:
Accept reference to base_qobject in create function and constructors
for graphics objects. Eliminate global access to GUI resources.
line wrap: on
line diff
--- a/libgui/graphics/BaseControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/BaseControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -93,7 +93,8 @@ w->setPalette (p); } - BaseControl::BaseControl (const graphics_object& go, QWidget *w) + BaseControl::BaseControl (octave::base_qobject&, const graphics_object& go, + QWidget *w) : Object (go, w), m_normalizedFont (false), m_keyPressHandlerDefined (false) { qObject ()->setObjectName ("UIControl");
--- a/libgui/graphics/BaseControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/BaseControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -28,13 +28,19 @@ class QEvent; class QObject; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { class BaseControl : public Object { public: - BaseControl (const graphics_object& go, QWidget *w); + BaseControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QWidget *w); ~BaseControl (void); Container * innerContainer (void) { return nullptr; }
--- a/libgui/graphics/ButtonControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ButtonControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -37,8 +37,10 @@ namespace QtHandles { - ButtonControl::ButtonControl (const graphics_object& go, QAbstractButton *btn) - : BaseControl (go, btn), m_blockCallback (false) + ButtonControl::ButtonControl (octave::base_qobject& oct_qobj, + const graphics_object& go, + QAbstractButton *btn) + : BaseControl (oct_qobj, go, btn), m_blockCallback (false) { uicontrol::properties& up = properties<uicontrol> ();
--- a/libgui/graphics/ButtonControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ButtonControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,6 +27,11 @@ class QAbstractButton; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -35,7 +40,8 @@ Q_OBJECT public: - ButtonControl (const graphics_object& go, QAbstractButton *btn); + ButtonControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QAbstractButton *btn); ~ButtonControl (void); protected:
--- a/libgui/graphics/ButtonGroup.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ButtonGroup.cc Tue Nov 05 13:28:45 2019 -0500 @@ -42,6 +42,8 @@ #include "QtHandlesUtils.h" #include "qt-graphics-toolkit.h" +#include "octave-qobject.h" + #include "interpreter-private.h" #include "ov-struct.h" @@ -94,7 +96,8 @@ } ButtonGroup* - ButtonGroup::create (const graphics_object& go) + ButtonGroup::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -105,15 +108,17 @@ if (container) { QFrame *frame = new QFrame (container); - return new ButtonGroup (go, new QButtonGroup (frame), frame); + return new ButtonGroup (oct_qobj, go, new QButtonGroup (frame), + frame); } } return nullptr; } - ButtonGroup::ButtonGroup (const graphics_object& go, QButtonGroup *buttongroup, - QFrame *frame) + ButtonGroup::ButtonGroup (octave::base_qobject& oct_qobj, + const graphics_object& go, + QButtonGroup *buttongroup, QFrame *frame) : Object (go, frame), m_hiddenbutton(nullptr), m_container (nullptr), m_title (nullptr), m_blockUpdates (false) { @@ -134,7 +139,7 @@ m_hiddenbutton->hide (); m_buttongroup->addButton (m_hiddenbutton); - m_container = new Container (frame); + m_container = new Container (frame, oct_qobj); m_container->canvas (m_handle); connect (m_container, SIGNAL (interpeter_event (const fcn_callback&)),
--- a/libgui/graphics/ButtonGroup.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ButtonGroup.h Tue Nov 05 13:28:45 2019 -0500 @@ -31,6 +31,11 @@ class QLabel; class QRadioButton; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -41,15 +46,16 @@ Q_OBJECT public: - ButtonGroup (const graphics_object& go, QButtonGroup *buttongroup, - QFrame *frame); + ButtonGroup (octave::base_qobject& oct_qobj, const graphics_object& go, + QButtonGroup *buttongroup, QFrame *frame); ~ButtonGroup (void); Container * innerContainer (void) { return m_container; } bool eventFilter (QObject *watched, QEvent *event); - static ButtonGroup * create (const graphics_object& go); + static ButtonGroup * create (octave::base_qobject& oct_qobj, + const graphics_object& go); void addButton (QAbstractButton *btn);
--- a/libgui/graphics/Canvas.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Canvas.cc Tue Nov 05 13:28:45 2019 -0500 @@ -72,11 +72,10 @@ m_redrawBlocked = block; } - static QCursor - make_cursor (const QString& name, int hot_x = -1, int hot_y = -1) + QCursor + Canvas::make_cursor (const QString& name, int hot_x, int hot_y) { - octave::resource_manager& rmgr - = octave::__get_resource_manager__ ("make_cursor"); + octave::resource_manager& rmgr = m_octave_qobj.get_resource_manager (); QIcon icon = rmgr.icon (name); @@ -873,7 +872,7 @@ octave_value_list props = ovl ("textbox", bb); - annotation_dialog anno_dlg (w, props); + annotation_dialog anno_dlg (m_octave_qobj, w, props); if (anno_dlg.exec () == QDialog::Accepted) { @@ -1077,11 +1076,12 @@ } Canvas* - Canvas::create (const std::string& /* name */, QWidget *parent, - const graphics_handle& handle) + Canvas::create (octave::base_qobject& oct_qobj, + const graphics_handle& handle, QWidget *parent, + const std::string& /* name */) { // Only OpenGL - return new GLCanvas (parent, handle); + return new GLCanvas (oct_qobj, handle, parent); } }
--- a/libgui/graphics/Canvas.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Canvas.h Tue Nov 05 13:28:45 2019 -0500 @@ -38,6 +38,11 @@ class octave_value_list; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -72,8 +77,9 @@ virtual QWidget * qWidget (void) = 0; - static Canvas * create (const std::string& name, QWidget *parent, - const graphics_handle& handle); + static Canvas * create (octave::base_qobject& oct_qobj, + const graphics_handle& handle, QWidget *parent, + const std::string& name); virtual uint8NDArray getPixels (void) { return do_getPixels (m_handle); }; @@ -107,8 +113,9 @@ const graphics_handle& handle) = 0; protected: - Canvas (const graphics_handle& handle) - : m_handle (handle), + Canvas (octave::base_qobject& oct_qobj, const graphics_handle& handle) + : m_octave_qobj (oct_qobj), + m_handle (handle), m_redrawBlocked (false), m_mouseMode (NoMode), m_clickMode (false), @@ -139,6 +146,10 @@ std::vector<std::string> omit = std::vector<std::string> ()); private: + + QCursor make_cursor (const QString& name, int hot_x = -1, int hot_y = -1); + + octave::base_qobject& m_octave_qobj; graphics_handle m_handle; bool m_redrawBlocked; MouseMode m_mouseMode;
--- a/libgui/graphics/CheckBoxControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/CheckBoxControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -29,11 +29,14 @@ #include "CheckBoxControl.h" #include "Container.h" +#include "octave-qobject.h" + namespace QtHandles { CheckBoxControl* - CheckBoxControl::create (const graphics_object& go) + CheckBoxControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -42,14 +45,15 @@ Container *container = parent->innerContainer (); if (container) - return new CheckBoxControl (go, new QCheckBox (container)); + return new CheckBoxControl (oct_qobj, go, new QCheckBox (container)); } return nullptr; } - CheckBoxControl::CheckBoxControl (const graphics_object& go, QCheckBox *box) - : ButtonControl (go, box) + CheckBoxControl::CheckBoxControl (octave::base_qobject& oct_obj, + const graphics_object& go, QCheckBox *box) + : ButtonControl (oct_obj, go, box) { box->setAutoFillBackground (true); }
--- a/libgui/graphics/CheckBoxControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/CheckBoxControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,16 +27,23 @@ class QCheckBox; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { class CheckBoxControl : public ButtonControl { public: - CheckBoxControl (const graphics_object& go, QCheckBox *box); + CheckBoxControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QCheckBox *box); ~CheckBoxControl (void); - static CheckBoxControl * create (const graphics_object& go); + static CheckBoxControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); }; }
--- a/libgui/graphics/Container.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Container.cc Tue Nov 05 13:28:45 2019 -0500 @@ -38,8 +38,8 @@ namespace QtHandles { - Container::Container (QWidget *xparent) - : ContainerBase (xparent), m_canvas (nullptr) + Container::Container (QWidget *xparent, octave::base_qobject& oct_qobj) + : ContainerBase (xparent), m_octave_qobj (oct_qobj), m_canvas (nullptr) { setFocusPolicy (Qt::ClickFocus); } @@ -62,8 +62,8 @@ { graphics_object fig = go.get_ancestor ("figure"); - m_canvas = Canvas::create (fig.get ("renderer").string_value (), - this, gh); + m_canvas = Canvas::create (m_octave_qobj, gh, this, + fig.get ("renderer").string_value ()); connect (m_canvas, SIGNAL (interpeter_event (const fcn_callback&)), this, SIGNAL (interpeter_event (const fcn_callback&)));
--- a/libgui/graphics/Container.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Container.h Tue Nov 05 13:28:45 2019 -0500 @@ -30,6 +30,11 @@ #include "event-manager.h" #include "graphics.h" +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -42,7 +47,7 @@ Q_OBJECT public: - Container (QWidget *parent); + Container (QWidget *parent, octave::base_qobject& oct_qobj); ~Container (void); Canvas * canvas (const graphics_handle& handle, bool create = true); @@ -72,6 +77,7 @@ void resizeEvent (QResizeEvent *event); private: + octave::base_qobject& m_octave_qobj; Canvas *m_canvas; };
--- a/libgui/graphics/ContextMenu.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ContextMenu.cc Tue Nov 05 13:28:45 2019 -0500 @@ -30,13 +30,16 @@ #include "QtHandlesUtils.h" #include "qt-graphics-toolkit.h" +#include "octave-qobject.h" + #include "interpreter-private.h" namespace QtHandles { ContextMenu* - ContextMenu::create (const graphics_object& go) + ContextMenu::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *xparent = Object::parentObject (go); @@ -44,13 +47,14 @@ { QWidget *w = xparent->qWidget<QWidget> (); - return new ContextMenu (go, new QMenu (w)); + return new ContextMenu (oct_qobj, go, new QMenu (w)); } return nullptr; } - ContextMenu::ContextMenu (const graphics_object& go, QMenu *xmenu) + ContextMenu::ContextMenu (octave::base_qobject&, + const graphics_object& go, QMenu *xmenu) : Object (go, xmenu) { xmenu->setAutoFillBackground (true);
--- a/libgui/graphics/ContextMenu.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ContextMenu.h Tue Nov 05 13:28:45 2019 -0500 @@ -30,6 +30,11 @@ class QMenu; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -38,10 +43,13 @@ Q_OBJECT public: - ContextMenu (const graphics_object& go, QMenu *menu); + ContextMenu (octave::base_qobject& oct_qobj, const graphics_object& go, + QMenu *menu); ~ContextMenu (void); - static ContextMenu * create (const graphics_object& go); + static ContextMenu * create (octave::base_qobject& oct_qobj, + const graphics_object& go); + static void executeAt (const base_properties& props, const QPoint& pt); Container * innerContainer (void) { return nullptr; }
--- a/libgui/graphics/EditControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/EditControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -31,11 +31,14 @@ #include "TextEdit.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { EditControl* - EditControl::create (const graphics_object& go) + EditControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -48,17 +51,19 @@ uicontrol::properties& up = Utils::properties<uicontrol> (go); if ((up.get_max () - up.get_min ()) > 1) - return new EditControl (go, new TextEdit (container)); + return new EditControl (oct_qobj, go, new TextEdit (container)); else - return new EditControl (go, new QLineEdit (container)); + return new EditControl (oct_qobj, go, new QLineEdit (container)); } } return nullptr; } - EditControl::EditControl (const graphics_object& go, QLineEdit *edit) - : BaseControl (go, edit), m_multiLine (false), m_textChanged (false) + EditControl::EditControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QLineEdit *edit) + : BaseControl (oct_qobj, go, edit), m_multiLine (false), + m_textChanged (false) { init (edit); } @@ -86,8 +91,10 @@ SLOT (returnPressed (void))); } - EditControl::EditControl (const graphics_object& go, TextEdit *edit) - : BaseControl (go, edit), m_multiLine (true), m_textChanged (false) + EditControl::EditControl (octave::base_qobject& oct_qobj, + const graphics_object& go, TextEdit *edit) + : BaseControl (oct_qobj, go, edit), m_multiLine (true), + m_textChanged (false) { init (edit); }
--- a/libgui/graphics/EditControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/EditControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -28,6 +28,11 @@ class QLineEdit; class QWidget; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -38,11 +43,16 @@ Q_OBJECT public: - EditControl (const graphics_object& go, QLineEdit *edit); - EditControl (const graphics_object& go, TextEdit *edit); + EditControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QLineEdit *edit); + + EditControl (octave::base_qobject& oct_qobj, const graphics_object& go, + TextEdit *edit); + ~EditControl (void); - static EditControl * create (const graphics_object& go); + static EditControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/Figure.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Figure.cc Tue Nov 05 13:28:45 2019 -0500 @@ -107,17 +107,18 @@ } Figure* - Figure::create (const graphics_object& go) + Figure::create (octave::base_qobject& oct_qobj, const graphics_object& go) { - return new Figure (go, new FigureWindow ()); + return new Figure (oct_qobj, go, new FigureWindow ()); } - Figure::Figure (const graphics_object& go, FigureWindow *win) + Figure::Figure (octave::base_qobject& oct_qobj, const graphics_object& go, + FigureWindow *win) : Object (go, win), m_blockUpdates (false), m_figureToolBar (nullptr), m_menuBar (nullptr), m_innerRect (), m_outerRect (), m_previousHeight (0), m_resizable (true) { - m_container = new Container (win); + m_container = new Container (win, oct_qobj); win->setCentralWidget (m_container); connect (m_container, SIGNAL (interpeter_event (const fcn_callback&)),
--- a/libgui/graphics/Figure.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Figure.h Tue Nov 05 13:28:45 2019 -0500 @@ -34,6 +34,11 @@ class QToolBar; class QScreen; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -63,10 +68,12 @@ friend class ToolBar; public: - Figure (const graphics_object& go, FigureWindow *win); + Figure (octave::base_qobject& oct_qobj, const graphics_object& go, + FigureWindow *win); ~Figure (void); - static Figure * create (const graphics_object& go); + static Figure * create (octave::base_qobject& oct_qobj, + const graphics_object& go); QString fileName (void); void setFileName (const QString& name);
--- a/libgui/graphics/GLCanvas.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/GLCanvas.cc Tue Nov 05 13:28:45 2019 -0500 @@ -47,9 +47,10 @@ # endif #endif - GLCanvas::GLCanvas (QWidget *xparent, const graphics_handle& gh) + GLCanvas::GLCanvas (octave::base_qobject& oct_qobj, + const graphics_handle& gh, QWidget *xparent) : OCTAVE_QT_OPENGL_WIDGET (OCTAVE_QT_OPENGL_WIDGET_FORMAT_ARGS xparent), - Canvas (gh), m_glfcns (), m_renderer (m_glfcns) + Canvas (oct_qobj, gh), m_glfcns (), m_renderer (m_glfcns) { setFocusPolicy (Qt::ClickFocus); setFocus ();
--- a/libgui/graphics/GLCanvas.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/GLCanvas.h Tue Nov 05 13:28:45 2019 -0500 @@ -46,12 +46,18 @@ #include "gl-render.h" #include "qopengl-functions.h" +namespace octave +{ + class base_qobject; +} + namespace QtHandles { class GLCanvas : public OCTAVE_QT_OPENGL_WIDGET, public Canvas { public: - GLCanvas (QWidget *parent, const graphics_handle& handle); + GLCanvas (octave::base_qobject& oct_qobj, const graphics_handle& handle, + QWidget *parent); ~GLCanvas (void); void initializeGL (void);
--- a/libgui/graphics/ListBoxControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ListBoxControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -32,6 +32,8 @@ #include "ListBoxControl.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { @@ -65,7 +67,8 @@ } ListBoxControl* - ListBoxControl::create (const graphics_object& go) + ListBoxControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -74,14 +77,16 @@ Container *container = parent->innerContainer (); if (container) - return new ListBoxControl (go, new QListWidget (container)); + return new ListBoxControl (oct_qobj, go, new QListWidget (container)); } return nullptr; } - ListBoxControl::ListBoxControl (const graphics_object& go, QListWidget *list) - : BaseControl (go, list), m_blockCallback (false), m_selectionChanged (false) + ListBoxControl::ListBoxControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QListWidget *list) + : BaseControl (oct_qobj, go, list), m_blockCallback (false), + m_selectionChanged (false) { uicontrol::properties& up = properties<uicontrol> ();
--- a/libgui/graphics/ListBoxControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ListBoxControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -29,6 +29,11 @@ class QListWidgetItem; class QModelIndex; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -37,10 +42,12 @@ Q_OBJECT public: - ListBoxControl (const graphics_object& go, QListWidget *list); + ListBoxControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QListWidget *list); ~ListBoxControl (void); - static ListBoxControl * create (const graphics_object& go); + static ListBoxControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/Menu.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Menu.cc Tue Nov 05 13:28:45 2019 -0500 @@ -33,6 +33,8 @@ #include "Menu.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { @@ -58,7 +60,7 @@ } Menu* - Menu::create (const graphics_object& go) + Menu::create (octave::base_qobject& oct_qobj, const graphics_object& go) { Object *parent_obj = Object::parentObject (go); @@ -67,13 +69,14 @@ QObject *qObj = parent_obj->qObject (); if (qObj) - return new Menu (go, new QAction (qObj), parent_obj); + return new Menu (oct_qobj, go, new QAction (qObj), parent_obj); } return nullptr; } - Menu::Menu (const graphics_object& go, QAction *action, Object *xparent) + Menu::Menu (octave::base_qobject&, const graphics_object& go, + QAction *action, Object *xparent) : Object (go, action), m_parent (nullptr), m_separator (nullptr) { uimenu::properties& up = properties<uimenu> ();
--- a/libgui/graphics/Menu.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Menu.h Tue Nov 05 13:28:45 2019 -0500 @@ -30,6 +30,11 @@ class QMenu; class QWidget; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -38,10 +43,12 @@ Q_OBJECT public: - Menu (const graphics_object& go, QAction *action, Object *parent); + Menu (octave::base_qobject& oct_qobj, const graphics_object& go, + QAction *action, Object *parent); ~Menu (void); - static Menu * create (const graphics_object& go); + static Menu * create (octave::base_qobject& oct_qobj, + const graphics_object& go); Container * innerContainer (void) { return nullptr; }
--- a/libgui/graphics/Panel.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Panel.cc Tue Nov 05 13:28:45 2019 -0500 @@ -36,6 +36,8 @@ #include "Panel.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + #include "graphics.h" #include "interpreter-private.h" @@ -88,7 +90,7 @@ } Panel* - Panel::create (const graphics_object& go) + Panel::create (octave::base_qobject& oct_qobj, const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -97,13 +99,14 @@ Container *container = parent->innerContainer (); if (container) - return new Panel (go, new QFrame (container)); + return new Panel (oct_qobj, go, new QFrame (container)); } return nullptr; } - Panel::Panel (const graphics_object& go, QFrame *frame) + Panel::Panel (octave::base_qobject& oct_qobj, const graphics_object& go, + QFrame *frame) : Object (go, frame), m_container (nullptr), m_title (nullptr), m_blockUpdates (false) { @@ -120,7 +123,7 @@ setupPalette (pp, pal); frame->setPalette (pal); - m_container = new Container (frame); + m_container = new Container (frame, oct_qobj); m_container->canvas (m_handle); connect (m_container, SIGNAL (interpeter_event (const fcn_callback&)),
--- a/libgui/graphics/Panel.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Panel.h Tue Nov 05 13:28:45 2019 -0500 @@ -28,6 +28,11 @@ class QFrame; class QLabel; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -36,14 +41,16 @@ class Panel : public Object { public: - Panel (const graphics_object& go, QFrame *frame); + Panel (octave::base_qobject& oct_qobj, const graphics_object& go, + QFrame *frame); ~Panel (void); Container * innerContainer (void) { return m_container; } bool eventFilter (QObject *watched, QEvent *event); - static Panel * create (const graphics_object& go); + static Panel * create (octave::base_qobject& oct_qobj, + const graphics_object& go); void do_connections (const QObject *receiver, const QObject *emitter = nullptr);
--- a/libgui/graphics/PopupMenuControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/PopupMenuControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -30,11 +30,14 @@ #include "PopupMenuControl.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { PopupMenuControl* - PopupMenuControl::create (const graphics_object& go) + PopupMenuControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -43,14 +46,16 @@ Container *container = parent->innerContainer (); if (container) - return new PopupMenuControl (go, new QComboBox (container)); + return new PopupMenuControl (oct_qobj, go, + new QComboBox (container)); } return nullptr; } - PopupMenuControl::PopupMenuControl (const graphics_object& go, QComboBox *box) - : BaseControl (go, box), m_blockUpdate (false) + PopupMenuControl::PopupMenuControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QComboBox *box) + : BaseControl (oct_qobj, go, box), m_blockUpdate (false) { uicontrol::properties& up = properties<uicontrol> ();
--- a/libgui/graphics/PopupMenuControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/PopupMenuControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,6 +27,11 @@ class QComboBox; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -35,10 +40,12 @@ Q_OBJECT public: - PopupMenuControl (const graphics_object& go, QComboBox *box); + PopupMenuControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QComboBox *box); ~PopupMenuControl (void); - static PopupMenuControl * create (const graphics_object& go); + static PopupMenuControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/PushButtonControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/PushButtonControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -31,11 +31,14 @@ #include "Container.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { PushButtonControl* - PushButtonControl::create (const graphics_object& go) + PushButtonControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -44,15 +47,17 @@ Container *container = parent->innerContainer (); if (container) - return new PushButtonControl (go, new QPushButton (container)); + return new PushButtonControl (oct_qobj, go, + new QPushButton (container)); } return nullptr; } - PushButtonControl::PushButtonControl (const graphics_object& go, + PushButtonControl::PushButtonControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QPushButton *btn) - : ButtonControl (go, btn) + : ButtonControl (oct_qobj, go, btn) { uicontrol::properties& up = properties<uicontrol> ();
--- a/libgui/graphics/PushButtonControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/PushButtonControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,16 +27,23 @@ class QPushButton; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { class PushButtonControl : public ButtonControl { public: - PushButtonControl (const graphics_object& go, QPushButton *btn); + PushButtonControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QPushButton *btn); ~PushButtonControl (void); - static PushButtonControl * create (const graphics_object& go); + static PushButtonControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/PushTool.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/PushTool.cc Tue Nov 05 13:28:45 2019 -0500 @@ -28,11 +28,13 @@ #include "ToolBarButton.cc" +#include "octave-qobject.h" + namespace QtHandles { PushTool* - PushTool::create (const graphics_object& go) + PushTool::create (octave::base_qobject& oct_qobj, const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -41,14 +43,15 @@ QWidget *parentWidget = parent->qWidget<QWidget> (); if (parentWidget) - return new PushTool (go, new QAction (parentWidget)); + return new PushTool (oct_qobj, go, new QAction (parentWidget)); } return nullptr; } - PushTool::PushTool (const graphics_object& go, QAction *action) - : ToolBarButton<uipushtool> (go, action) + PushTool::PushTool (octave::base_qobject& oct_qobj, + const graphics_object& go, QAction *action) + : ToolBarButton<uipushtool> (oct_qobj, go, action) { connect (action, SIGNAL (triggered (bool)), this, SLOT (clicked (void))); }
--- a/libgui/graphics/PushTool.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/PushTool.h Tue Nov 05 13:28:45 2019 -0500 @@ -25,6 +25,11 @@ #include "ToolBarButton.h" +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -33,10 +38,12 @@ Q_OBJECT public: - PushTool (const graphics_object& go, QAction *action); + PushTool (octave::base_qobject& oct_qobj, const graphics_object& go, + QAction *action); ~PushTool (void); - static PushTool * create (const graphics_object& go); + static PushTool * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/RadioButtonControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/RadioButtonControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -31,11 +31,14 @@ #include "Container.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { RadioButtonControl* - RadioButtonControl::create (const graphics_object& go) + RadioButtonControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -44,15 +47,17 @@ Container *container = parent->innerContainer (); if (container) - return new RadioButtonControl (go, new QRadioButton (container)); + return new RadioButtonControl (oct_qobj, go, + new QRadioButton (container)); } return nullptr; } - RadioButtonControl::RadioButtonControl (const graphics_object& go, + RadioButtonControl::RadioButtonControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QRadioButton *radio) - : ButtonControl (go, radio) + : ButtonControl (oct_qobj, go, radio) { Object *parent = Object::parentObject (go); ButtonGroup *btnGroup = dynamic_cast<ButtonGroup *>(parent);
--- a/libgui/graphics/RadioButtonControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/RadioButtonControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,16 +27,23 @@ class QRadioButton; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { class RadioButtonControl : public ButtonControl { public: - RadioButtonControl (const graphics_object& go, QRadioButton *box); + RadioButtonControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QRadioButton *box); ~RadioButtonControl (void); - static RadioButtonControl * create (const graphics_object& go); + static RadioButtonControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); }; }
--- a/libgui/graphics/SliderControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/SliderControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -30,6 +30,8 @@ #include "SliderControl.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + #include "graphics.h" #include "interpreter-private.h" @@ -39,7 +41,8 @@ { SliderControl* - SliderControl::create (const graphics_object& go) + SliderControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -48,15 +51,16 @@ Container *container = parent->innerContainer (); if (container) - return new SliderControl (go, new QScrollBar (container)); + return new SliderControl (oct_qobj, go, new QScrollBar (container)); } return nullptr; } - SliderControl::SliderControl (const graphics_object& go, + SliderControl::SliderControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QAbstractSlider *slider) - : BaseControl (go, slider), m_blockUpdates (false) + : BaseControl (oct_qobj, go, slider), m_blockUpdates (false) { uicontrol::properties& up = properties<uicontrol> ();
--- a/libgui/graphics/SliderControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/SliderControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,6 +27,11 @@ class QAbstractSlider; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -35,10 +40,12 @@ Q_OBJECT public: - SliderControl (const graphics_object& go, QAbstractSlider *slider); + SliderControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QAbstractSlider *slider); ~SliderControl (void); - static SliderControl * create (const graphics_object& go); + static SliderControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/Table.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Table.cc Tue Nov 05 13:28:45 2019 -0500 @@ -45,6 +45,8 @@ #include "Table.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + #include "graphics.h" #include "interpreter-private.h" #include "oct-stream.h" @@ -424,7 +426,7 @@ } Table* - Table::create (const graphics_object& go) + Table::create (octave::base_qobject& oct_qobj, const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -433,13 +435,14 @@ Container *container = parent->innerContainer (); if (container) - return new Table (go, new QTableWidget (container)); + return new Table (oct_qobj, go, new QTableWidget (container)); } return 0; } - Table::Table (const graphics_object& go, QTableWidget *tableWidget) + Table::Table (octave::base_qobject&, const graphics_object& go, + QTableWidget *tableWidget) : Object (go, tableWidget), m_tableWidget (tableWidget), m_curData (), m_blockUpdates (false) {
--- a/libgui/graphics/Table.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/Table.h Tue Nov 05 13:28:45 2019 -0500 @@ -29,6 +29,11 @@ class QTableWidget; class QTableWidgetItem; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -39,14 +44,16 @@ Q_OBJECT public: - Table (const graphics_object& go, QTableWidget* tableWidget); + Table (octave::base_qobject& oct_qobj, const graphics_object& go, + QTableWidget* tableWidget); ~Table (void); Container* innerContainer (void) { return m_container; } bool eventFilter (QObject* watched, QEvent* event); - static Table* create (const graphics_object& go); + static Table* create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/TextControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/TextControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -30,11 +30,14 @@ #include "TextControl.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { TextControl* - TextControl::create (const graphics_object& go) + TextControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -43,14 +46,15 @@ Container *container = parent->innerContainer (); if (container) - return new TextControl (go, new QLabel (container)); + return new TextControl (oct_qobj, go, new QLabel (container)); } return nullptr; } - TextControl::TextControl (const graphics_object& go, QLabel *label) - : BaseControl (go, label) + TextControl::TextControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QLabel *label) + : BaseControl (oct_qobj, go, label) { uicontrol::properties& up = properties<uicontrol> ();
--- a/libgui/graphics/TextControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/TextControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,16 +27,23 @@ class QLabel; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { class TextControl : public BaseControl { public: - TextControl (const graphics_object& go, QLabel *label); + TextControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QLabel *label); ~TextControl (void); - static TextControl * create (const graphics_object& go); + static TextControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/ToggleButtonControl.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToggleButtonControl.cc Tue Nov 05 13:28:45 2019 -0500 @@ -31,11 +31,14 @@ #include "Container.h" #include "QtHandlesUtils.h" +#include "octave-qobject.h" + namespace QtHandles { ToggleButtonControl* - ToggleButtonControl::create (const graphics_object& go) + ToggleButtonControl::create (octave::base_qobject& oct_qobj, + const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -44,15 +47,17 @@ Container *container = parent->innerContainer (); if (container) - return new ToggleButtonControl (go, new QPushButton (container)); + return new ToggleButtonControl (oct_qobj, go, + new QPushButton (container)); } return nullptr; } - ToggleButtonControl::ToggleButtonControl (const graphics_object& go, + ToggleButtonControl::ToggleButtonControl (octave::base_qobject& oct_qobj, + const graphics_object& go, QPushButton *btn) - : ButtonControl (go, btn) + : ButtonControl (oct_qobj, go, btn) { Object *parent = Object::parentObject (go); ButtonGroup *btnGroup = dynamic_cast<ButtonGroup *>(parent);
--- a/libgui/graphics/ToggleButtonControl.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToggleButtonControl.h Tue Nov 05 13:28:45 2019 -0500 @@ -27,16 +27,23 @@ class QPushButton; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { class ToggleButtonControl : public ButtonControl { public: - ToggleButtonControl (const graphics_object& go, QPushButton *box); + ToggleButtonControl (octave::base_qobject& oct_qobj, const graphics_object& go, + QPushButton *box); ~ToggleButtonControl (void); - static ToggleButtonControl * create (const graphics_object& go); + static ToggleButtonControl * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/ToggleTool.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToggleTool.cc Tue Nov 05 13:28:45 2019 -0500 @@ -28,11 +28,13 @@ #include "ToolBarButton.cc" +#include "octave-qobject.h" + namespace QtHandles { ToggleTool* - ToggleTool::create (const graphics_object& go) + ToggleTool::create (octave::base_qobject& oct_qobj, const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -41,14 +43,15 @@ QWidget *parentWidget = parent->qWidget<QWidget> (); if (parentWidget) - return new ToggleTool (go, new QAction (parentWidget)); + return new ToggleTool (oct_qobj, go, new QAction (parentWidget)); } return nullptr; } - ToggleTool::ToggleTool (const graphics_object& go, QAction *action) - : ToolBarButton<uitoggletool> (go, action) + ToggleTool::ToggleTool (octave::base_qobject& oct_qobj, + const graphics_object& go, QAction *action) + : ToolBarButton<uitoggletool> (oct_qobj, go, action) { uitoggletool::properties& tp = properties<uitoggletool> ();
--- a/libgui/graphics/ToggleTool.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToggleTool.h Tue Nov 05 13:28:45 2019 -0500 @@ -25,6 +25,11 @@ #include "ToolBarButton.h" +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -33,10 +38,12 @@ Q_OBJECT public: - ToggleTool (const graphics_object& go, QAction *action); + ToggleTool (octave::base_qobject& oct_qobj, const graphics_object& go, + QAction *action); ~ToggleTool (void); - static ToggleTool * create (const graphics_object& go); + static ToggleTool * create (octave::base_qobject& oct_qobj, + const graphics_object& go); protected: void update (int pId);
--- a/libgui/graphics/ToolBar.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToolBar.cc Tue Nov 05 13:28:45 2019 -0500 @@ -34,12 +34,13 @@ #include <QTimer> #include <QToolBar> -#include "gui-preferences-global.h" - #include "Figure.h" #include "ToolBar.h" #include "QtHandlesUtils.h" +#include "gui-preferences-global.h" +#include "octave-qobject.h" + namespace QtHandles { static QIcon makeEmptyIcon (void) @@ -65,7 +66,7 @@ } ToolBar* - ToolBar::create (const graphics_object& go) + ToolBar::create (octave::base_qobject& oct_qobj, const graphics_object& go) { Object *parent = Object::parentObject (go); @@ -74,13 +75,14 @@ QWidget *parentWidget = parent->qWidget<QWidget> (); if (parentWidget) - return new ToolBar (go, new QToolBar (parentWidget)); + return new ToolBar (oct_qobj, go, new QToolBar (parentWidget)); } return nullptr; } - ToolBar::ToolBar (const graphics_object& go, QToolBar *bar) + ToolBar::ToolBar (octave::base_qobject&, const graphics_object& go, + QToolBar *bar) : Object (go, bar), m_empty (nullptr), m_figure (nullptr) { uitoolbar::properties& tp = properties<uitoolbar> ();
--- a/libgui/graphics/ToolBar.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToolBar.h Tue Nov 05 13:28:45 2019 -0500 @@ -28,6 +28,11 @@ class QAction; class QToolBar; +namespace octave +{ + class base_qobject; +} + namespace QtHandles { @@ -38,10 +43,12 @@ Q_OBJECT public: - ToolBar (const graphics_object& go, QToolBar *bar); + ToolBar (octave::base_qobject& oct_qobj, const graphics_object& go, + QToolBar *bar); ~ToolBar (void); - static ToolBar * create (const graphics_object& go); + static ToolBar * create (octave::base_qobject& oct_qobj, + const graphics_object& go); Container * innerContainer (void) { return nullptr; }
--- a/libgui/graphics/ToolBarButton.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToolBarButton.cc Tue Nov 05 13:28:45 2019 -0500 @@ -25,6 +25,7 @@ // this file. #include <QAction> +#include <QIcon> #include <QWidget> #include "ToolBarButton.h" @@ -33,17 +34,10 @@ namespace QtHandles { - static QIcon get_icon (const std::string& name) - { - octave::resource_manager& rmgr - = octave::__get_resource_manager__ ("get_icon"); - - return rmgr.icon (QString::fromStdString (name)); - } - template <typename T> - ToolBarButton<T>::ToolBarButton (const graphics_object& go, QAction *action) - : Object (go, action), m_separator (nullptr) + ToolBarButton<T>::ToolBarButton (octave::base_qobject& oct_qobj, + const graphics_object& go, QAction *action) + : Object (go, action), m_octave_qobj (oct_qobj), m_separator (nullptr) { typename T::properties& tp = properties<T> (); @@ -154,4 +148,12 @@ } } + template <typename T> + QIcon ToolBarButton<T>::get_icon (const std::string& name) + { + octave::resource_manager& rmgr = m_octave_qobj.get_resource_manager (); + + return rmgr.icon (QString::fromStdString (name)); + } + }
--- a/libgui/graphics/ToolBarButton.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/ToolBarButton.h Tue Nov 05 13:28:45 2019 -0500 @@ -26,6 +26,12 @@ #include "Object.h" class QAction; +class QIcon; + +namespace octave +{ + class base_qobject; +} namespace QtHandles { @@ -36,7 +42,8 @@ class ToolBarButton : public Object { public: - ToolBarButton (const graphics_object& go, QAction *action); + ToolBarButton (octave::base_qobject& oct_qobj, const graphics_object& go, + QAction *action); ~ToolBarButton (void); Container * innerContainer (void) { return nullptr; } @@ -45,7 +52,10 @@ void update (int pId); private: + octave::base_qobject& m_octave_qobj; QAction *m_separator; + + QIcon get_icon (const std::string& name); }; };
--- a/libgui/graphics/__init_qt__.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/__init_qt__.cc Tue Nov 05 13:28:45 2019 -0500 @@ -32,6 +32,7 @@ #include <QRegExp> #include <QThread> +#include "octave-qobject.h" #include "qt-graphics-toolkit.h" #include "QtHandlesUtils.h" #include "__init_qt__.h" @@ -66,9 +67,12 @@ gh_mgr.enable_event_processing (true); - octave::gtk_manager& gtk_mgr = interp.get_gtk_manager (); + // FIXME: temporary? + octave::base_qobject& octave_qobj + = *(octave::base_qobject::the_octave_qobject ()); - qt_graphics_toolkit *qt_gtk = new qt_graphics_toolkit (interp); + qt_graphics_toolkit *qt_gtk + = new qt_graphics_toolkit (interp, octave_qobj); if (QThread::currentThread () != QApplication::instance ()->thread ()) @@ -76,6 +80,8 @@ graphics_toolkit tk (qt_gtk); + octave::gtk_manager& gtk_mgr = interp.get_gtk_manager (); + gtk_mgr.load_toolkit (tk); octave::interpreter::add_atexit_function ("__shutdown_qt__");
--- a/libgui/graphics/annotation-dialog.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/annotation-dialog.cc Tue Nov 05 13:28:45 2019 -0500 @@ -29,7 +29,7 @@ #include <QPalette> #include "gui-settings.h" -#include "resource-manager.h" +#include "octave-qobject.h" #include "QtHandlesUtils.h" #include "annotation-dialog.h" @@ -37,8 +37,9 @@ using namespace QtHandles; -annotation_dialog::annotation_dialog (QWidget *p, const octave_value_list& pr): - QDialog (p), ui (new Ui::annotation_dialog) +annotation_dialog::annotation_dialog (octave::base_qobject& oct_qobj, + QWidget *p, const octave_value_list& pr): + QDialog (p), m_octave_qobj (oct_qobj), ui (new Ui::annotation_dialog) { props = pr; @@ -50,8 +51,7 @@ { ui->setupUi (this); - octave::resource_manager& rmgr - = octave::__get_resource_manager__ ("annotation_dialog::init"); + octave::resource_manager& rmgr = m_octave_qobj.get_resource_manager (); octave::gui_settings *settings = rmgr.get_settings (); @@ -97,8 +97,7 @@ QDialogButtonBox::ButtonRole button_role = ui->button_box->buttonRole (button); - octave::resource_manager& rmgr - = octave::__get_resource_manager__ ("annotation_dialog::button_clicked"); + octave::resource_manager& rmgr = m_octave_qobj.get_resource_manager (); octave::gui_settings *settings = rmgr.get_settings ();
--- a/libgui/graphics/annotation-dialog.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/annotation-dialog.h Tue Nov 05 13:28:45 2019 -0500 @@ -29,6 +29,11 @@ #include "ovl.h" +namespace octave +{ + class base_qobject; +} + namespace Ui { class annotation_dialog; @@ -38,7 +43,8 @@ { Q_OBJECT public: - explicit annotation_dialog (QWidget *parent, const octave_value_list& pr); + annotation_dialog (octave::base_qobject& oct_qobj, QWidget *parent, + const octave_value_list& pr); ~annotation_dialog (); octave_value_list get_properties () const; @@ -55,6 +61,7 @@ void get_gui_props (); void set_gui_props (); + octave::base_qobject& m_octave_qobj; Ui::annotation_dialog *ui; octave_value_list props; };
--- a/libgui/graphics/qt-graphics-toolkit.cc Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/qt-graphics-toolkit.cc Tue Nov 05 13:28:45 2019 -0500 @@ -54,6 +54,8 @@ #include "ToolBar.h" #include "qt-graphics-toolkit.h" +#include "octave-qobject.h" + #include "event-manager.h" #include "graphics.h" #include "interpreter.h" @@ -93,8 +95,10 @@ return ""; } - qt_graphics_toolkit::qt_graphics_toolkit (octave::interpreter& interp) - : QObject (), base_graphics_toolkit ("qt"), m_interpreter (interp) + qt_graphics_toolkit::qt_graphics_toolkit (octave::interpreter& interp, + octave::base_qobject& oct_qobj) + : QObject (), base_graphics_toolkit ("qt"), m_interpreter (interp), + m_octave_qobj (oct_qobj) { // Implemented with a signal/slot connection in order to properly // cross from the interpreter thread (where requests to create @@ -383,47 +387,47 @@ Object *obj = nullptr; if (go.isa ("figure")) - obj = Figure::create (go); + obj = Figure::create (m_octave_qobj, go); else if (go.isa ("uicontrol")) { uicontrol::properties& up = Utils::properties<uicontrol> (go); if (up.style_is ("pushbutton")) - obj = PushButtonControl::create (go); + obj = PushButtonControl::create (m_octave_qobj, go); else if (up.style_is ("edit")) - obj = EditControl::create (go); + obj = EditControl::create (m_octave_qobj, go); else if (up.style_is ("checkbox")) - obj = CheckBoxControl::create (go); + obj = CheckBoxControl::create (m_octave_qobj, go); else if (up.style_is ("radiobutton")) - obj = RadioButtonControl::create (go); + obj = RadioButtonControl::create (m_octave_qobj, go); else if (up.style_is ("togglebutton")) - obj = ToggleButtonControl::create (go); + obj = ToggleButtonControl::create (m_octave_qobj, go); else if (up.style_is ("text")) - obj = TextControl::create (go); + obj = TextControl::create (m_octave_qobj, go); else if (up.style_is ("popupmenu")) - obj = PopupMenuControl::create (go); + obj = PopupMenuControl::create (m_octave_qobj, go); else if (up.style_is ("slider")) - obj = SliderControl::create (go); + obj = SliderControl::create (m_octave_qobj, go); else if (up.style_is ("listbox")) - obj = ListBoxControl::create (go); + obj = ListBoxControl::create (m_octave_qobj, go); } else if (go.isa ("uibuttongroup")) - obj = ButtonGroup::create (go); + obj = ButtonGroup::create (m_octave_qobj, go); else if (go.isa ("uipanel")) - obj = Panel::create (go); + obj = Panel::create (m_octave_qobj, go); else if (go.isa ("uimenu")) - obj = Menu::create (go); + obj = Menu::create (m_octave_qobj, go); else if (go.isa ("uicontextmenu")) - obj = ContextMenu::create (go); + obj = ContextMenu::create (m_octave_qobj, go); else if (go.isa ("uitable")) - obj = Table::create (go); + obj = Table::create (m_octave_qobj, go); else if (go.isa ("uitoolbar")) - obj = ToolBar::create (go); + obj = ToolBar::create (m_octave_qobj, go); else if (go.isa ("uipushtool")) - obj = PushTool::create (go); + obj = PushTool::create (m_octave_qobj, go); else if (go.isa ("uitoggletool")) - obj = ToggleTool::create (go); + obj = ToggleTool::create (m_octave_qobj, go); else qWarning ("qt_graphics_toolkit::create_object: unsupported type '%s'", go.type ().c_str ());
--- a/libgui/graphics/qt-graphics-toolkit.h Tue Nov 05 08:31:06 2019 -0500 +++ b/libgui/graphics/qt-graphics-toolkit.h Tue Nov 05 13:28:45 2019 -0500 @@ -31,6 +31,7 @@ namespace octave { class interpreter; + class base_qobject; } namespace QtHandles @@ -44,7 +45,8 @@ public: - qt_graphics_toolkit (octave::interpreter& interp); + qt_graphics_toolkit (octave::interpreter& interp, + octave::base_qobject& oct_qobj); ~qt_graphics_toolkit (void) = default; @@ -116,6 +118,8 @@ private: octave::interpreter& m_interpreter; + + octave::base_qobject& m_octave_qobj; }; }