diff --git a/modules/gui/pymod/CMakeLists.txt b/modules/gui/pymod/CMakeLists.txt
index c62fe901cc7a30482eb5b41da8aa60413efd1393..986a401304d365177c0cf4aebd59c833bf7caa65 100644
--- a/modules/gui/pymod/CMakeLists.txt
+++ b/modules/gui/pymod/CMakeLists.txt
@@ -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} 
diff --git a/modules/gui/pymod/export_panel_bar.cc b/modules/gui/pymod/export_panel_bar.cc
index ddf45c24bc97584a481387e8f0b75da32d2ae7ff..2153804cfae7e24eb60ff42cecf234906664292d 100644
--- a/modules/gui/pymod/export_panel_bar.cc
+++ b/modules/gui/pymod/export_panel_bar.cc
@@ -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)
diff --git a/modules/gui/pymod/init_spacenav.py b/modules/gui/pymod/init_spacenav.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce18343b3e9782222dbbe4cc61205eec498f1ddc
--- /dev/null
+++ b/modules/gui/pymod/init_spacenav.py
@@ -0,0 +1,47 @@
+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
diff --git a/scripts/init.py b/scripts/init.py
index 066e3fb74ba31bdcdc69089d409a855784d5055e..5032dc4b1eabd43ce9e3f562d9ee730b8fd202f7 100644
--- a/scripts/init.py
+++ b/scripts/init.py
@@ -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', [])