Skip to content
Snippets Groups Projects
Commit 1d33c323 authored by stefan's avatar stefan
Browse files

dokk (the docking game):

 -works without spnav input device

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1962 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 6c69619e
No related branches found
No related tags found
No related merge requests found
......@@ -113,21 +113,40 @@ class DokkGLCanvas(QGLWidget):
self.update()
def keyReleaseEvent(self, event):
self.emit(SIGNAL("KeyPressed"),event)
if event.key() == Qt.Key_Escape:
QApplication.exit()
elif event.key() == Qt.Key_P:
self.dokk.PreviousLevel()
elif event.key() == Qt.Key_N:
self.dokk.NextLevel()
elif event.key() == Qt.Key_Space:
self.dokk.GetLevel().Begin()
if not self._lock_input:
if event.key() == Qt.Key_Left or event.key() == Qt.Key_A:
self.OnTransform(gfx.INPUT_COMMAND_TRANSX,0, gfx.TRANSFORM_VIEW, -TRANS_VAL)
if event.key() == Qt.Key_Right or event.key() == Qt.Key_D:
elif event.key() == Qt.Key_Right or event.key() == Qt.Key_D:
self.OnTransform(gfx.INPUT_COMMAND_TRANSX,0, gfx.TRANSFORM_VIEW, TRANS_VAL)
if event.key() == Qt.Key_Down or event.key() == Qt.Key_S:
elif event.key() == Qt.Key_Down or event.key() == Qt.Key_S:
self.OnTransform(gfx.INPUT_COMMAND_TRANSZ,0, gfx.TRANSFORM_VIEW, TRANS_VAL)
if event.key() == Qt.Key_Up or event.key() == Qt.Key_W:
elif event.key() == Qt.Key_Up or event.key() == Qt.Key_W:
self.OnTransform(gfx.INPUT_COMMAND_TRANSZ,0, gfx.TRANSFORM_VIEW, -TRANS_VAL)
elif event.key() == Qt.Key_Backspace:
self.dokk.GetLevel().Reset()
elif event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return:
self.dokk.GetLevel().Finished()
elif event.key() == Qt.Key_E:
self.dokk.GetLevel().Solve()
elif event.key() == Qt.Key_R:
self.dokk.GetLevel().ResetPos()
def SetLockInput(self, lock):
self._lock_input = lock
......@@ -140,38 +159,38 @@ class DokkGLWin(gfx.GLWinBase):
return fmt
def __init__(self,dokk):
gfx.GLWinBase.__init__(self)
self.canvas_=DokkGLCanvas(self._CreateFormat(),dokk)
gfx.GLWinBase.__init__(self)
self.canvas=DokkGLCanvas(self._CreateFormat(),dokk)
def DoRefresh(self):
self.refresh_=True
def SetLevel(self, level):
self.canvas_.SetLevel(level)
self.canvas.SetLevel(level)
def Show(self, fullscreen):
if fullscreen:
self.canvas_.showFullScreen()
self.canvas.showFullScreen()
else:
self.canvas_.show()
self.canvas.show()
def SetStereo():
pass
def SetLockInput(self, lock):
self.canvas_.SetLockInput(lock)
self.canvas.SetLockInput(lock)
def Width(self):
return self.canvas_.width()
return self.canvas.width()
def Height(self):
return self.canvas_.height()
return self.canvas.height()
def ClearHUDObjects(self):
self.canvas_.hud.Clear()
self.canvas.hud.Clear()
def RemoveHUDObject(self, hud_object):
self.canvas_.hud.Remove(hud_object)
self.canvas.hud.Remove(hud_object)
def AddHUDObject(self, hud_object):
self.canvas_.hud.Add(hud_object)
self.canvas.hud.Add(hud_object)
......@@ -11,9 +11,13 @@ NAME_BREAK = 8000
class NameEnter(QtCore.QObject):
def __init__(self, parent=None):
QtCore.QObject.__init__(self, parent)
self.spnav = gui.SpnavInput.GetQThread()
self.spnav.start()
try:
self._spnav = gui.SpnavInput.GetQThread()
self._spnav.start()
except AttributeError:
self._spnav = None
self.Reset()
def Reset(self):
......@@ -43,6 +47,22 @@ class NameEnter(QtCore.QObject):
elif(self.letter_score < -LETTER_BREAK):
self.letter_pos -=1
self.__SetLetterPos()
def KeyPressed(self, event):
if event.key() == Qt.Key_Right:
self.name_pos +=1
self.__SetNamePos()
elif event.key() == Qt.Key_Left:
self.name_pos -=1
self.__SetNamePos()
elif event.key() == Qt.Key_Up:
self.letter_pos +=1
self.__SetLetterPos()
elif event.key() == Qt.Key_Down:
self.letter_pos -=1
self.__SetLetterPos()
elif event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return:
self.emit(QtCore.SIGNAL("Finished()"))
def ToggleInputMode(self, button):
if button == 10:
......@@ -53,13 +73,17 @@ class NameEnter(QtCore.QObject):
def Start(self):
self.Reset()
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged)
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode)
if self._spnav:
QtCore.QObject.connect(self._spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged)
QtCore.QObject.connect(self._spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode)
self.connect(dokk.Dokk().gl_win.canvas, QtCore.SIGNAL("KeyPressed"),self.KeyPressed)
def Stop(self):
QtCore.QObject.disconnect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged)
QtCore.QObject.disconnect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode)
if self._spnav:
QtCore.QObject.disconnect(self._spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged)
QtCore.QObject.disconnect(self._spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode)
self.disconnect(dokk.Dokk().gl_win.canvas, QtCore.SIGNAL("KeyPressed"),self.KeyPressed)
def __SetLetterPos(self):
self.letter_pos = self.letter_pos % self.al_len
self.__SetName()
......
......@@ -9,11 +9,14 @@ class SpnavInputDevice(QtCore.QObject):
def __init__(self, gfx_win, parent=None):
QtCore.QObject.__init__(self, parent)
self.refresh_rate_ = DEFAULT_REFRESHRATE
self.spnav = gui.SpnavInput.GetQThread()
self.spnav.start()
self.gfx_win = gfx_win
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged)
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode)
try:
self.spnav = gui.SpnavInput.GetQThread()
self.spnav.start()
self.gfx_win = gfx_win
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged)
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode)
except AttributeError:
pass #No SpaceNav Support
self.trans = True
self.rot = True
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment