diff --git a/modules/gui/pymod/export_gosty.cc b/modules/gui/pymod/export_gosty.cc index 0dc3d1889a5cbd83e4d21b31c2383b4cc82fb9d6..170afd97239f1aa6ab64b816f539ef51a59aa636 100644 --- a/modules/gui/pymod/export_gosty.cc +++ b/modules/gui/pymod/export_gosty.cc @@ -25,6 +25,7 @@ using namespace boost::python; #include <ost/gui/gl_win.hh> #include <ost/gui/perspective.hh> +#include <ost/gui/scene_win/scene_win.hh> #include <ost/gui/tools/tool_options_win.hh> #include <ost/gui/python_shell/python_shell.hh> @@ -32,7 +33,6 @@ using namespace boost::python; #include "sip_handler.hh" #include "tool_options_win_proxy.hh" -#include "scene_win_proxy.hh" #include "sequence_viewer_proxy.hh" #if OST_IMG_ENABLED #include "data_viewer_proxy.hh" @@ -49,11 +49,6 @@ ToolOptionsWinProxy app_get_tool_options_win(GostyApp* app) return ToolOptionsWinProxy(app->GetToolOptionsWin()); } -SceneWinProxy app_get_scene_win(GostyApp* app) -{ - return SceneWinProxy(app->GetSceneWin()); -} - SequenceViewerProxy app_get_seq_viewer(GostyApp* app) { return SequenceViewerProxy(app->GetSequenceViewer()); @@ -103,8 +98,10 @@ void export_Gosty() return_value_policy<reference_existing_object>()) .add_property("gl_win", make_function(&GostyApp::GetGLWin, return_value_policy<reference_existing_object>())) - .def("GetSceneWin", &app_get_scene_win) - .add_property("scene_win", &app_get_scene_win) + .def("GetSceneWin", &GostyApp::GetSceneWin, + return_value_policy<reference_existing_object>()) + .add_property("scene_win", make_function(&GostyApp::GetSceneWin, + return_value_policy<reference_existing_object>())) .def("GetSequenceViewer", &app_get_seq_viewer) .add_property("seq_viewer", &app_get_seq_viewer) .def("GetToolOptionsWin", &app_get_tool_options_win) diff --git a/modules/gui/pymod/export_scene_win.cc b/modules/gui/pymod/export_scene_win.cc index 1ded4aea89ebdefd026b6a71db7cf15e540ce4b3..766a676f4db85cfe1afa954264eb7cd87ac86e66 100644 --- a/modules/gui/pymod/export_scene_win.cc +++ b/modules/gui/pymod/export_scene_win.cc @@ -22,6 +22,8 @@ #include "scene_win_proxy.hh" +#include "sip_handler.hh" + #include <ost/gui/scene_win/context_menu.hh> using namespace boost::python; @@ -32,32 +34,13 @@ namespace { void context_menu_add_action(ContextMenu* cm, object action, int types) { - static object sip_module=import("sip"); - static object gui_module=import("ost.gui"); - static object pyqt4_module=import("PyQt4.QtCore"); - - unsigned long addr = extract<unsigned long>(sip_module.attr("unwrapinstance")(action)); - QAction* act = reinterpret_cast<QAction*>(addr); + QAction* act = get_cpp_qobject<QAction>(action); if(act){ ContextActionTypes type = ContextActionTypes(types); cm->AddAction(act,type); } } -object context_menu_get_qobject(ContextMenu* cm) -{ - static object sip_module=import("sip"); - static object pyqt4_module=import("PyQt4.QtCore"); - size_t addr = reinterpret_cast<size_t>(cm); - object obj(addr); - object sip_handle=obj; - object qobject = pyqt4_module.attr("QObject"); - object object = sip_module.attr("wrapinstance")(sip_handle, qobject); - - return object; -} - - } void export_SceneWin() @@ -80,14 +63,16 @@ void export_SceneWin() class_<ContextMenu, boost::noncopyable>("ContextMenu", no_init) .def("AddAction", &context_menu_add_action) - .def("GetQObject", &context_menu_get_qobject) - .add_property("qobject",&context_menu_get_qobject) + .def("GetQObject",&get_py_qobject<ContextMenu>) + .add_property("qobject", &get_py_qobject<ContextMenu>) ; - class_<SceneWinProxy, bases<SipHandlerBase> >("SceneWin") - .def("Show", &SceneWinProxy::Show) - .def("Hide", &SceneWinProxy::Hide) - .def("GetContextMenu", &SceneWinProxy::GetContextMenu, return_value_policy<reference_existing_object>()) + class_<SceneWin, boost::noncopyable>("SceneWin", no_init) + .def("Show", &SceneWin::show) + .def("Hide", &SceneWin::hide) + .def("GetContextMenu", &SceneWin::GetContextMenu, return_value_policy<reference_existing_object>()) + .def("GetQObject",&get_py_qobject<SceneWin>) + .add_property("qobject", &get_py_qobject<SceneWin>) ; } diff --git a/modules/gui/pymod/init_context_menu.py b/modules/gui/pymod/init_context_menu.py index 43f2231018e7d5324b593aa2f4e1cd71a3831404..e2d68d1ce3fa7cf7584dafdf688647c31ef2538d 100644 --- a/modules/gui/pymod/init_context_menu.py +++ b/modules/gui/pymod/init_context_menu.py @@ -147,6 +147,6 @@ class AlignmentContextMenu(QtCore.QObject): ShowResultDialog(ent_list, res_list).exec_() -def _InitContextMenu(): - cm=gui.GostyApp.Instance().GetSceneWin().GetContextMenu() +def _InitContextMenu(app): + cm=app.scene_win.GetContextMenu() AlignmentContextMenu(cm) \ No newline at end of file diff --git a/modules/gui/pymod/init_menubar.py b/modules/gui/pymod/init_menubar.py index 6c253aa3e453f17bbaf0d62b4216bd39112dfadb..360b02b1b692ead1983d5962ae4aac83328b6dcc 100644 --- a/modules/gui/pymod/init_menubar.py +++ b/modules/gui/pymod/init_menubar.py @@ -77,8 +77,8 @@ class InitMenuBar(QtCore.QObject): def OpenDocs(self): QtGui.QDesktopServices.openUrl(QtCore.QUrl("http://www.openstructure.org/docs/index.html")) -def _InitMenuBar(menu_bar): - InitMenuBar(menu_bar) +def _InitMenuBar(app): + InitMenuBar(app.perspective.menubar) ## \example menubar_example.py # diff --git a/modules/gui/pymod/init_spacenav.py b/modules/gui/pymod/init_spacenav.py index 5ca0f30835508dedbedad77c9b2e482937abf255..df8bf383b3efa580d385196d57a6a515a38fe2a5 100644 --- a/modules/gui/pymod/init_spacenav.py +++ b/modules/gui/pymod/init_spacenav.py @@ -33,10 +33,11 @@ class SpacenavControl(QtCore.QObject): self.rot = not self.rot print "Rotation Enabled:",self.rot -def _InitSpaceNav(parent): +def _InitSpaceNav(app): try: spnav = gui.SpnavInput.GetQThread() spnav.start() + parent = app.gl_win.qobject SpacenavControl(spnav,parent) except AttributeError: pass \ No newline at end of file diff --git a/modules/gui/pymod/scene/init_inspector.py b/modules/gui/pymod/scene/init_inspector.py index 74801269192122bb16a95e6758725d4c056345d1..3009a57ca9031e450b99c1095b92f1b60cc59866 100644 --- a/modules/gui/pymod/scene/init_inspector.py +++ b/modules/gui/pymod/scene/init_inspector.py @@ -41,8 +41,7 @@ class InitInspectorMenu(QtCore.QObject): def Toggle(self): self.inspector_.setVisible(self.show_.isChecked()) -def _InitInspector(): - app=gui.GostyApp.Instance() +def _InitInspector(app): mywidget = InspectorDialog(app.gl_win.qobject) mywidget.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.Tool) mywidget.show() diff --git a/modules/gui/pymod/scene/inspector_widget.py b/modules/gui/pymod/scene/inspector_widget.py index b23f0bb7f0f5e0393855393eb180b548ae2906ae..68215c66169164a1b4fa5a4cd384fe1bb9edb025 100644 --- a/modules/gui/pymod/scene/inspector_widget.py +++ b/modules/gui/pymod/scene/inspector_widget.py @@ -47,10 +47,8 @@ class InspectorWidget(ToolBarOptionsWidget): self.obs = SceneObserverImpl() self.obs.AttachObserver(self) ost.scene.AttachObserver(self.obs) - app=gui.GostyApp.Instance() self.scene_selection_ = gui.SceneSelection.Instance() - scenewin = sip.wrapinstance(app.GetSceneWin().GetSipHandle(),QtGui.QWidget) - QtCore.QObject.connect(scenewin,QtCore.SIGNAL("ActiveNodesChanged()"), + QtCore.QObject.connect(app.scene_win.qobject,QtCore.SIGNAL("ActiveNodesChanged()"), self.ActiveNodesChanged) self.setMinimumSize(250,215) diff --git a/scripts/init.py b/scripts/init.py index 1fcf39cb82137ee91e176d3ce6c8a73a1cee6c3d..e892e1838d1eed87919b40e36a3783c3c92443ec 100644 --- a/scripts/init.py +++ b/scripts/init.py @@ -29,7 +29,8 @@ def _InitRuleBasedBuilder(): # switch to rule-based builder for high fidelity if compounds.chemlib is # available _InitRuleBasedBuilder() -def _InitPanels(app, panels): +def _InitPanels(app): + panels = app.perspective.panels panels.AddWidgetToPool('ost.gui.FileBrowser', -1) panels.AddWidgetToPool('ost.gui.PythonShell', 1) panels.AddWidgetToPool('ost.gui.RemoteLoader', -1) @@ -48,17 +49,17 @@ def _InitFrontEnd(): app=gui.GostyApp.Instance() app.SetAppTitle("DNG") main_area=app.perspective.main_area - _InitPanels(app, app.perspective.panels) - _InitMenuBar(app.perspective.menubar) - _InitSpaceNav(app.perspective.panels.qobject) - _InitContextMenu() + _InitPanels(app) + _InitMenuBar(app) + _InitSpaceNav(app) + _InitContextMenu(app) main_area.AddPersistentWidget("3D Scene", "gl_win" , app.gl_win.qobject, int(QtCore.Qt.WindowMaximized)) app.perspective.Restore() additional_modules=getattr(__main__, 'ADDITIONAL_GUI_MODULES', []) for module_name in additional_modules: __import__(module_name) app.ProcessEvents() - _InitInspector() + _InitInspector(app) def _load_files(): for pdb_id in options.pdb_ids: