From 7f5fff53caef3457550f59b4f58df3d582a3c11f Mon Sep 17 00:00:00 2001 From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Wed, 21 Apr 2010 13:13:33 +0000 Subject: [PATCH] Changed get_cpp_qobject to support python objects with qobject attribute git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2084 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/gui/pymod/export_panel_bar.cc | 12 ------------ modules/gui/pymod/sip_handler.hh | 3 +++ scripts/init.py | 2 +- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/modules/gui/pymod/export_panel_bar.cc b/modules/gui/pymod/export_panel_bar.cc index e83a8cb2b..cfac8c128 100644 --- a/modules/gui/pymod/export_panel_bar.cc +++ b/modules/gui/pymod/export_panel_bar.cc @@ -98,17 +98,6 @@ object panels_get_menu(Panels* panels) return get_py_qobject<QMenu>(panels->GetMenu()); } -object panels_get_qwidget(Panels* panels) -{ - static object sip_module=import("sip"); - static object pyqt4_module=import("PyQt4.QtGui"); - object sip_handle((size_t)panels); - object qwidget = pyqt4_module.attr("QWidget"); - object widget = sip_module.attr("wrapinstance")(sip_handle, qwidget); - - return widget; -} - void panel_bar_add_widget_a(PanelBar * pb, Widget* widget, bool hidden=false) { pb->AddWidget(widget,hidden); @@ -149,7 +138,6 @@ void export_PanelBar() .def("RemoveWidget", &panels_remove_widget_b) .def("RemoveWidget", &panels_remove_widget_c) .def("GetMenu", &panels_get_menu) - .def("GetQWidget", &panels_get_qwidget) .def("AddWidgetToPool", &panels_add_widget_to_pool_a) .def("AddWidgetToPool", &panels_add_widget_to_pool_b) .def("AddWidgetToPool", &panels_add_widget_to_pool_c) diff --git a/modules/gui/pymod/sip_handler.hh b/modules/gui/pymod/sip_handler.hh index 9eb6ac7c4..f9002d4ff 100644 --- a/modules/gui/pymod/sip_handler.hh +++ b/modules/gui/pymod/sip_handler.hh @@ -52,6 +52,9 @@ template <class O> object get_py_qobject(O* cpp_object) template <class O> O* get_cpp_qobject(object py_object) { if(py_object.ptr() != Py_None){ + if(PyObject_HasAttrString(py_object.ptr(), "qobject")){ + py_object = py_object.attr("qobject"); + } static object sip_module=import("sip"); unsigned long addr = extract<unsigned long>(sip_module.attr("unwrapinstance")(py_object)); if(addr){ diff --git a/scripts/init.py b/scripts/init.py index e892e1838..7ff24d5a6 100644 --- a/scripts/init.py +++ b/scripts/init.py @@ -53,7 +53,7 @@ def _InitFrontEnd(): _InitMenuBar(app) _InitSpaceNav(app) _InitContextMenu(app) - main_area.AddPersistentWidget("3D Scene", "gl_win" , app.gl_win.qobject, int(QtCore.Qt.WindowMaximized)) + main_area.AddPersistentWidget("3D Scene", "gl_win" , app.gl_win, int(QtCore.Qt.WindowMaximized)) app.perspective.Restore() additional_modules=getattr(__main__, 'ADDITIONAL_GUI_MODULES', []) for module_name in additional_modules: -- GitLab