Skip to content
Snippets Groups Projects
Commit 6eebab15 authored by stefan's avatar stefan
Browse files

Enable SpaceNav Device if available

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2017 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent dd2a2d07
No related branches found
No related tags found
No related merge requests found
......@@ -75,6 +75,7 @@ endif()
set(OST_GUI_PYMOD_MODULES
__init__.py
init_menubar.py
init_spacenav.py
)
pymod(NAME gui CPP ${OST_GUI_PYMOD_SOURCES}
......
......@@ -85,6 +85,17 @@ object panels_get_menu(Panels* panels)
return menu;
}
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(PanelBar * pb, const SipHandlerBase& sh, bool hidden)
{
pb->AddWidget(reinterpret_cast<Widget*>(sh.GetSipHandle()),hidden);
......@@ -111,11 +122,13 @@ void export_PanelBar()
.def("RemoveWidget", &panels_remove_widget_a)
.def("RemoveWidget", &panels_remove_widget_b)
.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("Save", &Panels::Save)
.def("Restore", &Panels::Restore)
.add_property("menu", &panels_get_menu)
.add_property("qwidget", &panels_get_qwidget)
;
class_<PanelBar, boost::noncopyable>("PanelBar", no_init)
......
from PyQt4 import QtCore, QtGui
from ost import geom, gfx, gui
import sys, random
import sip
class SpacenavControl(QtCore.QObject):
def __init__(self, spnav,
parent=None):
QtCore.QObject.__init__(self, parent)
QtCore.QObject.connect(spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.Changed)
QtCore.QObject.connect(spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.Toggle)
self.trans = True
self.rot = True
def Changed(self, tx,ty,tz,rx,ry,rz):
transf = gfx.Scene().GetTransform()
if(self.trans):
transf.ApplyXAxisTranslation(tx/480.0)
transf.ApplyYAxisTranslation(ty/480.0)
transf.ApplyZAxisTranslation(-tz/480.0)
if(self.rot):
transf.ApplyXAxisRotation(rx/480.0)
transf.ApplyYAxisRotation(ry/480.0)
transf.ApplyZAxisRotation(rz/480.0)
gfx.Scene().SetTransform(transf)
gfx.Scene().RequestRedraw()
def Toggle(self, button):
if button == 0:
self.trans = not self.trans
print "Translation Enabled:",self.trans
elif button == 1:
self.rot = not self.rot
print "Rotation Enabled:",self.rot
def _InitSpaceNav(parent):
try:
spnav = gui.SpnavInput.GetQThread()
spnav.start()
snc=SpacenavControl(spnav,parent)
gfx.Scene().AutoAutoslab(False)
gfx.Scene().SetNearFar(1,10000)
except AttributeError:
pass
\ No newline at end of file
......@@ -17,6 +17,7 @@ import httplib
from PyQt4 import QtGui, QtCore
from ost.gui.scene.init_inspector import _InitInspector
from ost.gui.init_menubar import _InitMenuBar
from ost.gui.init_spacenav import _InitSpaceNav
def _InitRuleBasedBuilder():
compound_lib_path=os.path.join(ost.GetSharedDataPath(), 'compounds.chemlib')
......@@ -50,6 +51,7 @@ def _InitFrontEnd():
main_area=app.perspective.main_area
_InitPanels(app, app.perspective.panels)
_InitMenuBar(app.perspective.GetMenuBar())
_InitSpaceNav(app.perspective.panels.qwidget)
main_area.AddPersistentWidget("3D Scene", "gl_win" , app.gl_win, int(QtCore.Qt.WindowMaximized))
app.perspective.Restore()
additional_modules=getattr(__main__, 'ADDITIONAL_GUI_MODULES', [])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment