event.monkey2 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  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. WindowClose,
  39. WindowMoved,
  40. WindowResized,
  41. WindowGainedFocus,
  42. WindowLostFocus,
  43. Eaten=$40000000
  44. End
  45. #rem monkeydoc The Event class.
  46. #end
  47. Class Event Abstract
  48. #rem monkedoc The event type.
  49. #end
  50. Property Type:EventType()
  51. Return _type
  52. End
  53. #rem monkeydoc The event view.
  54. #end
  55. Property View:View()
  56. Return _view
  57. End
  58. #rem monkeydoc True if event has been eaten.
  59. #end
  60. Property Eaten:Bool()
  61. Return (_type & EventType.Eaten)<>Null
  62. End
  63. #rem monkeydoc Eats the event.
  64. #end
  65. Method Eat()
  66. _type|=EventType.Eaten
  67. End
  68. Protected
  69. #rem monkeydoc @hidden
  70. #end
  71. Field _type:EventType
  72. #rem monkeydoc @hidden
  73. #end
  74. Field _view:View
  75. #rem monkeydoc @hidden
  76. #end
  77. Method New( type:EventType,view:View )
  78. _type=type
  79. _view=view
  80. End
  81. End
  82. #rem monkeydoc The KeyEvent class.
  83. #end
  84. Class KeyEvent Extends Event
  85. #rem monkeydoc Creates a new key event.
  86. #end
  87. Method New( type:EventType,view:View,key:Key,rawKey:Key,modifiers:Modifier,text:String )
  88. Super.New( type,view )
  89. _key=key
  90. _rawKey=rawKey
  91. _modifiers=modifiers
  92. _text=text
  93. End
  94. #rem monkeydoc The key involved in the event.
  95. #end
  96. Property Key:Key()
  97. Return _key
  98. End
  99. #rem monkeydoc The raw key involved in the event.
  100. #end
  101. Property RawKey:Key()
  102. Return _rawKey
  103. End
  104. #rem monkeydoc The modifiers at the time of the event.
  105. #end
  106. Property Modifiers:Modifier()
  107. Return _modifiers
  108. End
  109. #rem monkeydoc The text for [[EventType.KeyChar]] events.
  110. #end
  111. Property Text:String()
  112. Return _text
  113. End
  114. Private
  115. Field _key:Key
  116. Field _rawKey:Key
  117. Field _modifiers:Modifier
  118. Field _text:String
  119. End
  120. #rem monkeydoc The MouseEvent class.
  121. #end
  122. Class MouseEvent Extends Event
  123. #rem monkeydoc Creates a new mouse event.
  124. #end
  125. Method New( type:EventType,view:View,location:Vec2i,button:MouseButton,wheel:Vec2i,modifiers:Modifier,clicks:Int )
  126. Super.New( type,view )
  127. _location=location
  128. _button=button
  129. _wheel=wheel
  130. _modifiers=modifiers
  131. _clicks=clicks
  132. End
  133. #rem monkeydoc Mouse location in View.
  134. #end
  135. Property Location:Vec2i()
  136. Return _location
  137. End
  138. #rem monkeydoc Mouse button.
  139. #end
  140. Property Button:MouseButton()
  141. Return _button
  142. End
  143. #rem monkeydoc Mouse wheel deltas.
  144. #end
  145. Property Wheel:Vec2i()
  146. Return _wheel
  147. End
  148. #rem monkeydoc Event modifiers.
  149. #end
  150. Property Modifiers:Modifier()
  151. Return _modifiers
  152. End
  153. #rem monkeydoc Number of mouse clicks.
  154. #end
  155. Property Clicks:Int()
  156. Return _clicks
  157. End
  158. Method TransformToView:MouseEvent( view:View )
  159. If view=View Return self
  160. Local location:=view.TransformPointFromView( _location,_view )
  161. Return New MouseEvent( Type,View,location,_button,_wheel,_modifiers,_clicks )
  162. End
  163. Private
  164. Field _location:Vec2i
  165. Field _button:MouseButton
  166. Field _wheel:Vec2i
  167. Field _modifiers:Modifier
  168. Field _clicks:Int
  169. End
  170. #rem monkeydoc The WindowEvent class.
  171. #end
  172. Class WindowEvent Extends Event
  173. #rem monkeydoc Creates a new window event.
  174. #end
  175. Method New( type:EventType,window:Window )
  176. Super.New( type,window )
  177. _window=window
  178. End
  179. #rem monkeydoc The window the event was sent to.
  180. #end
  181. Property Window:Window()
  182. Return _window
  183. End
  184. Private
  185. Field _window:Window
  186. End