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