home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / lib / site-packages / cgkit / events.py < prev    next >
Encoding:
Python Source  |  2007-01-11  |  10.1 KB  |  328 lines

  1. # ***** BEGIN LICENSE BLOCK *****
  2. # Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3. #
  4. # The contents of this file are subject to the Mozilla Public License Version
  5. # 1.1 (the "License"); you may not use this file except in compliance with
  6. # the License. You may obtain a copy of the License at
  7. # http://www.mozilla.org/MPL/
  8. #
  9. # Software distributed under the License is distributed on an "AS IS" basis,
  10. # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. # for the specific language governing rights and limitations under the
  12. # License.
  13. #
  14. # The Original Code is the Python Computer Graphics Kit.
  15. #
  16. # The Initial Developer of the Original Code is Matthias Baas.
  17. # Portions created by the Initial Developer are Copyright (C) 2004
  18. # the Initial Developer. All Rights Reserved.
  19. #
  20. # Contributor(s):
  21. #
  22. # Alternatively, the contents of this file may be used under the terms of
  23. # either the GNU General Public License Version 2 or later (the "GPL"), or
  24. # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  25. # in which case the provisions of the GPL or the LGPL are applicable instead
  26. # of those above. If you wish to allow use of your version of this file only
  27. # under the terms of either the GPL or the LGPL, and not to allow others to
  28. # use your version of this file under the terms of the MPL, indicate your
  29. # decision by deleting the provisions above and replace them with the notice
  30. # and other provisions required by the GPL or the LGPL. If you do not delete
  31. # the provisions above, a recipient may use your version of this file under
  32. # the terms of any one of the MPL, the GPL or the LGPL.
  33. #
  34. # ***** END LICENSE BLOCK *****
  35. # $Id: events.py,v 1.3 2005/09/20 13:35:14 mbaas Exp $
  36.  
  37. ## \file events.py
  38. ## Contains the standard event names and some predefined event classes.
  39.  
  40. import string
  41. import keydefs
  42.  
  43. # STEP_FRAME is called whenever the timer is stepped forward one frame
  44. # using timer.step().
  45. # The event takes no arguments.
  46. STEP_FRAME = "StepFrame"
  47.  
  48. # Reset the simulation/animation
  49. RESET = "Reset"
  50.  
  51. # A key was pressed on the keyboard.
  52. # The argument to the event is a KeyEvent object.
  53. KEY_PRESS = "KeyPress"
  54. # A key was released on the keyboard
  55. # The argument to the event is a KeyEvent object.
  56. KEY_RELEASE = "KeyRelease"
  57.  
  58. LEFT_DOWN = "LeftDown"
  59. LEFT_UP = "LeftUp"
  60. MIDDLE_DOWN = "MiddleDown"
  61. MIDDLE_UP = "MiddleUp"
  62. RIGHT_DOWN = "RightDown"
  63. RIGHT_UP = "RightUp"
  64. MOUSE_BUTTON_DOWN = "MouseButtonDown"
  65. MOUSE_BUTTON_UP = "MouseButtonUp"
  66. MOUSE_MOVE = "MouseMove"
  67. MOUSE_WHEEL = "MouseWheel"
  68.  
  69. JOYSTICK_AXIS = "JoystickAxis"
  70. JOYSTICK_BALL = "JoystickBall"
  71. JOYSTICK_HAT = "JoystickHat"
  72. JOYSTICK_BUTTON_DOWN = "JoystickButtonDown"
  73. JOYSTICK_BUTTON_UP = "JoystickButtonUp"
  74.  
  75. SPACE_MOTION = "SpaceMotion"
  76. SPACE_BUTTON_DOWN = "SpaceButtonDown"
  77. SPACE_BUTTON_UP = "SpaceButtonUp"
  78. SPACE_ZERO = "SpaceZero"
  79.  
  80. TABLET = "Tablet"
  81.  
  82. # KeyEvent
  83. class KeyEvent:
  84.     """Keyboard event (key press or release).
  85.  
  86.     This event is sent as argument to the KEY_PRESS and KEY_RELEASE events.
  87.     The data is stored in the attributes key, keycode and mods.
  88.     """
  89.     
  90.     def __init__(self, key, keycode, mods=0):
  91.         """Constructor.
  92.  
  93.         \param key (\c unicode) Unicode key
  94.         \param keycode Key (\c int) Key code (untranslated)
  95.         \param mods (\c int) Modifier flags
  96.         """
  97.         # Unicode key
  98.         self.key = key
  99.         # Key code
  100.         self.keycode = keycode
  101.         # Modifier flags
  102.         self.mods = mods
  103.  
  104.     def __str__(self):
  105.         c = repr(self.key)
  106. #        if self.key in string.printable:
  107. #           c = self.key
  108. #        else:
  109. #            c = "."
  110.         return u"<KeyEvent key:%s (%d) mods:%d>"%(c,self.keycode,self.mods)
  111.  
  112.     # shiftKey
  113.     def shiftKey(self):
  114.         """Return True if the key is a Shift key."""
  115.         return self.keycode==keydefs.KEY_SHIFT_LEFT or \
  116.                self.keycode==keydefs.KEY_SHIFT_RIGHT
  117.  
  118.     # controlKey
  119.     def controlKey(self):
  120.         """Return True if the key is a Control key."""
  121.         return self.keycode==keydefs.KEY_CONTROL_LEFT or \
  122.                self.keycode==keydefs.KEY_CONTROL_RIGHT
  123.  
  124.     # altKey
  125.     def altKey(self):
  126.         """Return True if the key is an Alt key."""
  127.         return self.keycode==keydefs.KEY_ALT_LEFT or \
  128.                self.keycode==keydefs.KEY_ALT_RIGHT
  129.  
  130. # MouseButtonEvent
  131. class MouseButtonEvent:
  132.     """Mouse button event.
  133.     """
  134.  
  135.     def __init__(self, button, x, y, x0, y0):
  136.         """Constructor.
  137.  
  138.         \param button (\c int) Button number (1=Left / 2=Middle / 3=Right)
  139.         \param x (\c int) Mouse position (pixel coordinate)
  140.         \param y (\c int) Mouse position (pixel coordinate)
  141.         \param x0 (\c float) Mouse position (normalized)
  142.         \param y0 (\c float) Mouse position (normalized)
  143.         """
  144.         self.button = button
  145.         self.x = x
  146.         self.y = y
  147.         self.x0 = x0
  148.         self.y0 = y0
  149.  
  150.     def __str__(self):
  151.         return "<MouseButtonEvent button:%d x:%d y:%d x0:%1.2f y0:%1.2f>"%(self.button, self.x, self.y, self.x0, self.y0)
  152.  
  153. # MouseWheelEvent
  154. class MouseWheelEvent:
  155.     """Mouse wheel event.
  156.     """
  157.  
  158.     def __init__(self, delta, x, y, x0, y0):
  159.         """Constructor.
  160.  
  161.         \param delta (\c int) Wheel delta
  162.         \param x (\c int) Mouse position (pixel coordinate)
  163.         \param y (\c int) Mouse position (pixel coordinate)
  164.         \param x0 (\c float) Mouse position (normalized)
  165.         \param y0 (\c float) Mouse position (normalized)
  166.         """
  167.         self.delta = delta
  168.         self.x = x
  169.         self.y = y
  170.         self.x0 = x0
  171.         self.y0 = y0
  172.  
  173.     def __str__(self):
  174.         return "<MouseWheelEvent delta:%d x:%d y:%d x0:%1.2f y0:%1.2f>"%(self.delta, self.x, self.y, self.x0, self.y0)
  175.  
  176.  
  177. # MouseMoveEvent
  178. class MouseMoveEvent:
  179.     """Mouse move event.
  180.     """
  181.  
  182.     def __init__(self, x, y, dx, dy, x0, y0, dx0, dy0, buttons):
  183.         """Constructor.
  184.  
  185.         \param x (\c int) Mouse position (pixel coordinate)
  186.         \param y (\c int) Mouse position (pixel coordinate)
  187.         \param dx (\c int) Mouse delta (pixel)
  188.         \param dy (\c int) Mouse delta (pixel)
  189.         \param x0 (\c float) Mouse position (normalized)
  190.         \param y0 (\c float) Mouse position (normalized)
  191.         \param dx0 (\c float) Mouse delta (normalized)
  192.         \param dy0 (\c float) Mouse delta (normalized)
  193.         \param buttons (\c int) Mouse buttons (each bit is a mouse button)
  194.         """
  195.         self.x = x
  196.         self.y = y
  197.         self.dx = dx
  198.         self.dy = dy
  199.         self.x0 = x0
  200.         self.y0 = y0
  201.         self.dx0 = dx0
  202.         self.dy0 = dy0
  203.         self.buttons = buttons
  204.  
  205.     def __str__(self):
  206.         return "<MouseMoveEvent %d/%d (%d/%d) %1.2f/%1.2f (%1.3f/%1.3f) btns:%s>"%(self.x, self.y, self.dx, self.dy, self.x0, self.y0, self.dx0, self.dy0, hex(self.buttons))
  207. #        return "<MouseMoveEvent x:%d y:%d dx:%d dy:%d x0:%1.2f y0:%1.2f dx:%1.2f dy:%1.2f buttons:%s>"%(self.x, self.y, self.dx, self.dy, self.x0, self.y0, self.dx0, self.dy0, hex(self.buttons))
  208.  
  209.  
  210. # JoystickAxisEvent
  211. class JoystickAxisEvent:
  212.     """Joystick axis event.
  213.     """
  214.  
  215.     def __init__(self, joystick, axis, value):
  216.         """Constructor.
  217.  
  218.         \param joystick (\c int) Joystick ID (0,1,...)
  219.         \param axis (\c int) Axis ID (0,1,...)
  220.         \param value (\c float) The current value of the specified axis
  221.         """
  222.         self.joystick = joystick
  223.         self.axis = axis
  224.         self.value = value
  225.  
  226.     def __str__(self):
  227.         return "<JoystickAxisEvent joystick:#%d axis:#%d value:%f>"%(self.joystick, self.axis, self.value)
  228.  
  229. # JoystickHatEvent
  230. class JoystickHatEvent:
  231.     """Joystick hat event.
  232.     """
  233.  
  234.     def __init__(self, joystick, hat, x, y):
  235.         """Constructor.
  236.  
  237.         \param joystick (\c int) Joystick ID (0,1,...)
  238.         \param hat (\c int) Hat ID (0,1,...)
  239.         \param x (\c int) The current x value of the specified hat
  240.         \param y (\c int) The current x value of the specified hat
  241.         """
  242.         self.joystick = joystick
  243.         self.hat = hat
  244.         self.x = x
  245.         self.y = y
  246.  
  247.     def __str__(self):
  248.         return "<JoystickHatEvent joystick:#%d hat:#%d x:%d y:%d>"%(self.joystick, self.hat, self.x, self.y)
  249.  
  250. # JoystickBallEvent
  251. class JoystickBallEvent:
  252.     """Joystick ball event.
  253.     """
  254.  
  255.     def __init__(self, joystick, ball, value):
  256.         """Constructor.
  257.  
  258.         \param joystick (\c int) Joystick ID (0,1,...)
  259.         \param ball (\c int) Ball ID (0,1,...)
  260.         \param value (\c float) The current value of the specified ball
  261.         """
  262.         self.joystick = joystick
  263.         self.ball = ball
  264.         self.value = value
  265.  
  266.     def __str__(self):
  267.         return "<JoystickBallEvent joystick:#%d ball:#%d value:%f>"%(self.joystick, self.ball, self.value)
  268.  
  269. # JoystickButtonEvent
  270. class JoystickButtonEvent:
  271.     """Joystick button event.
  272.  
  273.     This event is sent as argument to the JOYSTICK_BUTTON_DOWN and
  274.     JOYSTICK_BUTTON_UP events.
  275.     """
  276.  
  277.     def __init__(self, joystick, button):
  278.         """Constructor.
  279.  
  280.         \param joystick (\c int) Joystick ID (0,1,...)
  281.         \param button (\c int) Button ID (0,1,...)
  282.         """
  283.         self.joystick = joystick
  284.         self.button = button
  285.  
  286.     def __str__(self):
  287.         return "<JoystickButtonEvent joystick:#%d button:#%d>"%(self.joystick, self.button)
  288.  
  289.  
  290. # SpaceMotion
  291. class SpaceMotionEvent:
  292.     """SpaceMotion event.
  293.  
  294.     This event is created when a SpaceMouse or SpaceBall is moved or rotated.
  295.     """
  296.  
  297.     def __init__(self, translation, rotation, period):
  298.         """Constructor.
  299.  
  300.         \param translation (\c vec3) Translation vector
  301.         \param rotation (\c vec3) Rotation vector
  302.         \param period (\c int) Time in milliseconds since the last event
  303.         """
  304.         self.translation = translation
  305.         self.rotation = rotation
  306.         self.period = period
  307.  
  308.     def __str__(self):
  309.         return "<SpaceMotion t:%s r:%s period:%d>"%(self.translation, self.rotation, self.period)
  310.  
  311. # SpaceButton
  312. class SpaceButtonEvent:
  313.     """SpaceButton event.
  314.  
  315.     This event is generated when a SpaceMouse or SpaceBall button was
  316.     pressed or released.
  317.     """
  318.  
  319.     def __init__(self, button):
  320.         """Constructor.
  321.         
  322.         \param button (\c int) Button number (1-29)
  323.         """
  324.         self.button = button
  325.  
  326.     def __str__(self):
  327.         return "<SpaceButton button:%d>"%(self.button)
  328.