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
Branches
Tags
No related merge requests found
...@@ -113,21 +113,40 @@ class DokkGLCanvas(QGLWidget): ...@@ -113,21 +113,40 @@ class DokkGLCanvas(QGLWidget):
self.update() self.update()
def keyReleaseEvent(self, event): def keyReleaseEvent(self, event):
self.emit(SIGNAL("KeyPressed"),event)
if event.key() == Qt.Key_Escape: if event.key() == Qt.Key_Escape:
QApplication.exit() 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 not self._lock_input:
if event.key() == Qt.Key_Left or event.key() == Qt.Key_A: if event.key() == Qt.Key_Left or event.key() == Qt.Key_A:
self.OnTransform(gfx.INPUT_COMMAND_TRANSX,0, gfx.TRANSFORM_VIEW, -TRANS_VAL) 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) 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) 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) 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): def SetLockInput(self, lock):
self._lock_input = lock self._lock_input = lock
...@@ -140,38 +159,38 @@ class DokkGLWin(gfx.GLWinBase): ...@@ -140,38 +159,38 @@ class DokkGLWin(gfx.GLWinBase):
return fmt return fmt
def __init__(self,dokk): def __init__(self,dokk):
gfx.GLWinBase.__init__(self) gfx.GLWinBase.__init__(self)
self.canvas_=DokkGLCanvas(self._CreateFormat(),dokk) self.canvas=DokkGLCanvas(self._CreateFormat(),dokk)
def DoRefresh(self): def DoRefresh(self):
self.refresh_=True self.refresh_=True
def SetLevel(self, level): def SetLevel(self, level):
self.canvas_.SetLevel(level) self.canvas.SetLevel(level)
def Show(self, fullscreen): def Show(self, fullscreen):
if fullscreen: if fullscreen:
self.canvas_.showFullScreen() self.canvas.showFullScreen()
else: else:
self.canvas_.show() self.canvas.show()
def SetStereo(): def SetStereo():
pass pass
def SetLockInput(self, lock): def SetLockInput(self, lock):
self.canvas_.SetLockInput(lock) self.canvas.SetLockInput(lock)
def Width(self): def Width(self):
return self.canvas_.width() return self.canvas.width()
def Height(self): def Height(self):
return self.canvas_.height() return self.canvas.height()
def ClearHUDObjects(self): def ClearHUDObjects(self):
self.canvas_.hud.Clear() self.canvas.hud.Clear()
def RemoveHUDObject(self, hud_object): def RemoveHUDObject(self, hud_object):
self.canvas_.hud.Remove(hud_object) self.canvas.hud.Remove(hud_object)
def AddHUDObject(self, 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 ...@@ -11,9 +11,13 @@ NAME_BREAK = 8000
class NameEnter(QtCore.QObject): class NameEnter(QtCore.QObject):
def __init__(self, parent=None): def __init__(self, parent=None):
QtCore.QObject.__init__(self, parent) QtCore.QObject.__init__(self, parent)
self.spnav = gui.SpnavInput.GetQThread() try:
self.spnav.start() self._spnav = gui.SpnavInput.GetQThread()
self._spnav.start()
except AttributeError:
self._spnav = None
self.Reset() self.Reset()
def Reset(self): def Reset(self):
...@@ -43,6 +47,22 @@ class NameEnter(QtCore.QObject): ...@@ -43,6 +47,22 @@ class NameEnter(QtCore.QObject):
elif(self.letter_score < -LETTER_BREAK): elif(self.letter_score < -LETTER_BREAK):
self.letter_pos -=1 self.letter_pos -=1
self.__SetLetterPos() 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): def ToggleInputMode(self, button):
if button == 10: if button == 10:
...@@ -53,13 +73,17 @@ class NameEnter(QtCore.QObject): ...@@ -53,13 +73,17 @@ class NameEnter(QtCore.QObject):
def Start(self): def Start(self):
self.Reset() self.Reset()
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged) if self._spnav:
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode) 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): def Stop(self):
QtCore.QObject.disconnect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged) if self._spnav:
QtCore.QObject.disconnect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode) 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): def __SetLetterPos(self):
self.letter_pos = self.letter_pos % self.al_len self.letter_pos = self.letter_pos % self.al_len
self.__SetName() self.__SetName()
......
...@@ -9,11 +9,14 @@ class SpnavInputDevice(QtCore.QObject): ...@@ -9,11 +9,14 @@ class SpnavInputDevice(QtCore.QObject):
def __init__(self, gfx_win, parent=None): def __init__(self, gfx_win, parent=None):
QtCore.QObject.__init__(self, parent) QtCore.QObject.__init__(self, parent)
self.refresh_rate_ = DEFAULT_REFRESHRATE self.refresh_rate_ = DEFAULT_REFRESHRATE
self.spnav = gui.SpnavInput.GetQThread() try:
self.spnav.start() self.spnav = gui.SpnavInput.GetQThread()
self.gfx_win = gfx_win self.spnav.start()
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged) self.gfx_win = gfx_win
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode) 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.trans = True
self.rot = 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