event.monkey2 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. Namespace mojo.app
  2. #rem monkeydoc Event types.
  3. | EventType | Description
  4. |:------------------|:-----------
  5. | KeyDown | Key down event.
  6. | KeyRepeat | Key repeat event.
  7. | KeyUp | Key up event.
  8. | KeyChar | Key char event.
  9. | MouseDown | Mouse button down event.
  10. | MouseClick | Mouse left click event.
  11. | MouseRightClick | Mouse right click event.
  12. | MouseDoubleClick | Mouse double left click event.
  13. | MouseUp | Mouse button up event.
  14. | MouseMove | Mouse movement event.
  15. | MouseWheel | Mouse wheel event.
  16. | MouseEnter | Mouse enter event.
  17. | MouseLeave | Mouse leave event.
  18. | WindowClose | Window close clicked event.
  19. | WindowMoved | Window moved event.
  20. | WindowResized | Window resized event.
  21. | WindowGainedFocus | Window gained input focus.
  22. | WindowLostFocus | Window lost input focus.
  23. #end
  24. Enum EventType
  25. KeyDown,
  26. KeyRepeat,
  27. KeyUp,
  28. KeyChar,
  29. MouseDown,
  30. MouseClick,
  31. MouseRightClick,
  32. MouseDoubleClick,
  33. MouseUp,
  34. MouseMove,
  35. MouseWheel,
  36. MouseEnter,
  37. MouseLeave,
  38. TouchDown,
  39. TouchUp,
  40. TouchMove,
  41. WindowClose,
  42. WindowMoved,
  43. WindowResized,
  44. WindowGainedFocus,
  45. WindowLostFocus,
  46. WindowMaximized,
  47. WindowMinimized,
  48. WindowRestored
  49. Eaten=$40000000
  50. End
  51. #rem monkeydoc The Event class.
  52. #end
  53. Class Event Abstract
  54. #rem monkedoc The event type.
  55. #end
  56. Property Type:EventType()
  57. Return _type
  58. End
  59. #rem monkeydoc The event view.
  60. #end
  61. Property View:View()
  62. Return _view
  63. End
  64. #rem monkeydoc True if event has been eaten.
  65. #end
  66. Property Eaten:Bool()
  67. Return (_type & EventType.Eaten)<>Null
  68. End
  69. #rem monkeydoc Eats the event.
  70. #end
  71. Method Eat()
  72. _type|=EventType.Eaten
  73. End
  74. Protected
  75. #rem monkeydoc @hidden
  76. #end
  77. Field _type:EventType
  78. #rem monkeydoc @hidden
  79. #end
  80. Field _view:View
  81. #rem monkeydoc @hidden
  82. #end
  83. Method New( type:EventType,view:View )
  84. _type=type
  85. _view=view
  86. End
  87. End
  88. #rem monkeydoc The KeyEvent class.
  89. #end
  90. Class KeyEvent Extends Event
  91. #rem monkeydoc Creates a new key event.
  92. #end
  93. Method New( type:EventType,view:View,key:Key,rawKey:Key,modifiers:Modifier,text:String )
  94. Super.New( type,view )
  95. _key=key
  96. _rawKey=rawKey
  97. _modifiers=modifiers
  98. _text=text
  99. End
  100. #rem monkeydoc The key involved in the event.
  101. #end
  102. Property Key:Key()
  103. Return _key
  104. End
  105. #rem monkeydoc The raw key involved in the event.
  106. #end
  107. Property RawKey:Key()
  108. Return _rawKey
  109. End
  110. #rem monkeydoc The modifiers at the time of the event.
  111. #end
  112. Property Modifiers:Modifier()
  113. Return _modifiers
  114. End
  115. #rem monkeydoc The text for [[EventType.KeyChar]] events.
  116. #end
  117. Property Text:String()
  118. Return _text
  119. End
  120. Private
  121. Field _key:Key
  122. Field _rawKey:Key
  123. Field _modifiers:Modifier
  124. Field _text:String
  125. End
  126. #rem monkeydoc The MouseEvent class.
  127. #end
  128. Class MouseEvent Extends Event
  129. #rem monkeydoc Creates a new mouse event.
  130. #end
  131. Method New( type:EventType,view:View,location:Vec2i,button:MouseButton,wheel:Vec2i,modifiers:Modifier,clicks:Int )
  132. Super.New( type,view )
  133. _location=location
  134. _button=button
  135. _wheel=wheel
  136. _modifiers=modifiers
  137. _clicks=clicks
  138. End
  139. #rem monkeydoc Mouse location in View.
  140. #end
  141. Property Location:Vec2i()
  142. Return _location
  143. End
  144. #rem monkeydoc Mouse button.
  145. #end
  146. Property Button:MouseButton()
  147. Return _button
  148. End
  149. #rem monkeydoc Mouse wheel deltas.
  150. #end
  151. Property Wheel:Vec2i()
  152. Return _wheel
  153. End
  154. #rem monkeydoc Event modifiers.
  155. #end
  156. Property Modifiers:Modifier()
  157. Return _modifiers
  158. End
  159. #rem monkeydoc Number of mouse clicks.
  160. #end
  161. Property Clicks:Int()
  162. Return _clicks
  163. End
  164. #rem monkeydoc Transforms mouse event to different view.
  165. #end
  166. Method TransformToView:MouseEvent( view:View )
  167. If view=_view Return self
  168. Local location:=view.TransformPointFromView( _location,_view )
  169. Return New MouseEvent( _type,view,location,_button,_wheel,_modifiers,_clicks )
  170. End
  171. Private
  172. Field _location:Vec2i
  173. Field _button:MouseButton
  174. Field _wheel:Vec2i
  175. Field _modifiers:Modifier
  176. Field _clicks:Int
  177. End
  178. #rem monkeydoc The TouchEvent class.
  179. #end
  180. Class TouchEvent Extends Event
  181. #rem monkeydoc Creates a new touch event.
  182. #end
  183. Method New( type:EventType,view:View,location:Vec2i,finger:int,pressure:Float )
  184. Super.New( type,view )
  185. _location=location
  186. _finger=finger
  187. _pressure=pressure
  188. End
  189. #rem monkeydoc Finger location in view.
  190. #end
  191. Property Location:Vec2i()
  192. Return _location
  193. End
  194. #rem monkeydoc Finger index (0-9).
  195. #end
  196. Property Finger:Int()
  197. Return _finger
  198. End
  199. #rem monkeydoc Finger pressure (0-1).
  200. #end
  201. Property Pressure:Float()
  202. Return _pressure
  203. End
  204. #rem monkeydoc Transforms touch event to different view.
  205. #end
  206. Method TransformToView:TouchEvent( view:View )
  207. If view=_view return Self
  208. Local location:=view.TransformPointFromView( _location,_view )
  209. Return New TouchEvent( _type,view,location,_finger,_pressure )
  210. End
  211. Private
  212. Field _location:Vec2i
  213. Field _finger:Int
  214. field _pressure:Float
  215. End
  216. #rem monkeydoc The WindowEvent class.
  217. #end
  218. Class WindowEvent Extends Event
  219. #rem monkeydoc Creates a new window event.
  220. #end
  221. Method New( type:EventType,window:Window )
  222. Super.New( type,window )
  223. _window=window
  224. End
  225. #rem monkeydoc The window the event was sent to.
  226. #end
  227. Property Window:Window()
  228. Return _window
  229. End
  230. Private
  231. Field _window:Window
  232. End