UIEvents.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "../Core/Object.h"
  5. namespace Urho3D
  6. {
  7. /// Global mouse click in the UI. Sent by the UI subsystem.
  8. URHO3D_EVENT(E_UIMOUSECLICK, UIMouseClick)
  9. {
  10. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  11. URHO3D_PARAM(P_X, X); // int
  12. URHO3D_PARAM(P_Y, Y); // int
  13. URHO3D_PARAM(P_BUTTON, Button); // int
  14. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  15. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  16. }
  17. /// Global mouse click end in the UI. Sent by the UI subsystem.
  18. URHO3D_EVENT(E_UIMOUSECLICKEND, UIMouseClickEnd)
  19. {
  20. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  21. URHO3D_PARAM(P_BEGINELEMENT, BeginElement); // UIElement pointer
  22. URHO3D_PARAM(P_X, X); // int
  23. URHO3D_PARAM(P_Y, Y); // int
  24. URHO3D_PARAM(P_BUTTON, Button); // int
  25. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  26. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  27. }
  28. /// Global mouse double click in the UI. Sent by the UI subsystem.
  29. URHO3D_EVENT(E_UIMOUSEDOUBLECLICK, UIMouseDoubleClick)
  30. {
  31. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  32. URHO3D_PARAM(P_X, X); // int
  33. URHO3D_PARAM(P_Y, Y); // int
  34. URHO3D_PARAM(P_XBEGIN, XBegin); // int
  35. URHO3D_PARAM(P_YBEGIN, YBegin); // int
  36. URHO3D_PARAM(P_BUTTON, Button); // int
  37. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  38. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  39. }
  40. /// Mouse click on a UI element. Parameters are same as in UIMouseClick event, but is sent by the element.
  41. URHO3D_EVENT(E_CLICK, Click)
  42. {
  43. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  44. URHO3D_PARAM(P_X, X); // int
  45. URHO3D_PARAM(P_Y, Y); // int
  46. URHO3D_PARAM(P_BUTTON, Button); // int
  47. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  48. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  49. }
  50. /// Mouse click end on a UI element. Parameters are same as in UIMouseClickEnd event, but is sent by the element.
  51. URHO3D_EVENT(E_CLICKEND, ClickEnd)
  52. {
  53. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  54. URHO3D_PARAM(P_BEGINELEMENT, BeginElement); // UIElement pointer
  55. URHO3D_PARAM(P_X, X); // int
  56. URHO3D_PARAM(P_Y, Y); // int
  57. URHO3D_PARAM(P_BUTTON, Button); // int
  58. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  59. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  60. }
  61. /// Mouse double click on a UI element. Parameters are same as in UIMouseDoubleClick event, but is sent by the element.
  62. URHO3D_EVENT(E_DOUBLECLICK, DoubleClick)
  63. {
  64. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  65. URHO3D_PARAM(P_X, X); // int
  66. URHO3D_PARAM(P_Y, Y); // int
  67. URHO3D_PARAM(P_XBEGIN, XBegin); // int
  68. URHO3D_PARAM(P_YBEGIN, YBegin); // int
  69. URHO3D_PARAM(P_BUTTON, Button); // int
  70. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  71. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  72. }
  73. /// Drag and drop test.
  74. URHO3D_EVENT(E_DRAGDROPTEST, DragDropTest)
  75. {
  76. URHO3D_PARAM(P_SOURCE, Source); // UIElement pointer
  77. URHO3D_PARAM(P_TARGET, Target); // UIElement pointer
  78. URHO3D_PARAM(P_ACCEPT, Accept); // bool
  79. }
  80. /// Drag and drop finish.
  81. URHO3D_EVENT(E_DRAGDROPFINISH, DragDropFinish)
  82. {
  83. URHO3D_PARAM(P_SOURCE, Source); // UIElement pointer
  84. URHO3D_PARAM(P_TARGET, Target); // UIElement pointer
  85. URHO3D_PARAM(P_ACCEPT, Accept); // bool
  86. }
  87. /// Focus element changed.
  88. URHO3D_EVENT(E_FOCUSCHANGED, FocusChanged)
  89. {
  90. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  91. URHO3D_PARAM(P_CLICKEDELEMENT, ClickedElement); // UIElement pointer
  92. }
  93. /// UI element name changed.
  94. URHO3D_EVENT(E_NAMECHANGED, NameChanged)
  95. {
  96. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  97. }
  98. /// UI element resized.
  99. URHO3D_EVENT(E_RESIZED, Resized)
  100. {
  101. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  102. URHO3D_PARAM(P_WIDTH, Width); // int
  103. URHO3D_PARAM(P_HEIGHT, Height); // int
  104. URHO3D_PARAM(P_DX, DX); // int
  105. URHO3D_PARAM(P_DY, DY); // int
  106. }
  107. /// UI element positioned.
  108. URHO3D_EVENT(E_POSITIONED, Positioned)
  109. {
  110. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  111. URHO3D_PARAM(P_X, X); // int
  112. URHO3D_PARAM(P_Y, Y); // int
  113. }
  114. /// UI element visibility changed.
  115. URHO3D_EVENT(E_VISIBLECHANGED, VisibleChanged)
  116. {
  117. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  118. URHO3D_PARAM(P_VISIBLE, Visible); // bool
  119. }
  120. /// UI element focused.
  121. URHO3D_EVENT(E_FOCUSED, Focused)
  122. {
  123. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  124. URHO3D_PARAM(P_BYKEY, ByKey); // bool
  125. }
  126. /// UI element defocused.
  127. URHO3D_EVENT(E_DEFOCUSED, Defocused)
  128. {
  129. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  130. }
  131. /// UI element layout updated.
  132. URHO3D_EVENT(E_LAYOUTUPDATED, LayoutUpdated)
  133. {
  134. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  135. }
  136. /// UI button pressed.
  137. URHO3D_EVENT(E_PRESSED, Pressed)
  138. {
  139. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  140. }
  141. /// UI button was pressed, then released.
  142. URHO3D_EVENT(E_RELEASED, Released)
  143. {
  144. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  145. }
  146. /// UI checkbox toggled.
  147. URHO3D_EVENT(E_TOGGLED, Toggled)
  148. {
  149. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  150. URHO3D_PARAM(P_STATE, State); // bool
  151. }
  152. /// UI slider value changed.
  153. URHO3D_EVENT(E_SLIDERCHANGED, SliderChanged)
  154. {
  155. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  156. URHO3D_PARAM(P_VALUE, Value); // float
  157. }
  158. /// UI slider being paged.
  159. URHO3D_EVENT(E_SLIDERPAGED, SliderPaged)
  160. {
  161. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  162. URHO3D_PARAM(P_OFFSET, Offset); // int
  163. URHO3D_PARAM(P_PRESSED, Pressed); // bool
  164. }
  165. /// UI progressbar value changed.
  166. URHO3D_EVENT(E_PROGRESSBARCHANGED, ProgressBarChanged)
  167. {
  168. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  169. URHO3D_PARAM(P_VALUE, Value); // float
  170. }
  171. /// UI scrollbar value changed.
  172. URHO3D_EVENT(E_SCROLLBARCHANGED, ScrollBarChanged)
  173. {
  174. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  175. URHO3D_PARAM(P_VALUE, Value); // float
  176. }
  177. /// UI scrollview position changed.
  178. URHO3D_EVENT(E_VIEWCHANGED, ViewChanged)
  179. {
  180. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  181. URHO3D_PARAM(P_X, X); // int
  182. URHO3D_PARAM(P_Y, Y); // int
  183. }
  184. /// UI modal changed (currently only Window has modal flag).
  185. URHO3D_EVENT(E_MODALCHANGED, ModalChanged)
  186. {
  187. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  188. URHO3D_PARAM(P_MODAL, Modal); // bool
  189. }
  190. /// Text entry into a LineEdit. The text can be modified in the event data.
  191. URHO3D_EVENT(E_TEXTENTRY, TextEntry)
  192. {
  193. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  194. URHO3D_PARAM(P_TEXT, Text); // String [in/out]
  195. }
  196. /// Editable text changed.
  197. URHO3D_EVENT(E_TEXTCHANGED, TextChanged)
  198. {
  199. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  200. URHO3D_PARAM(P_TEXT, Text); // String
  201. }
  202. /// Text editing finished (enter pressed on a LineEdit).
  203. URHO3D_EVENT(E_TEXTFINISHED, TextFinished)
  204. {
  205. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  206. URHO3D_PARAM(P_TEXT, Text); // String
  207. URHO3D_PARAM(P_VALUE, Value); // Float
  208. }
  209. /// Menu selected.
  210. URHO3D_EVENT(E_MENUSELECTED, MenuSelected)
  211. {
  212. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  213. }
  214. /// Listview or DropDownList item selected.
  215. URHO3D_EVENT(E_ITEMSELECTED, ItemSelected)
  216. {
  217. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  218. URHO3D_PARAM(P_SELECTION, Selection); // int
  219. }
  220. /// Listview item deselected.
  221. URHO3D_EVENT(E_ITEMDESELECTED, ItemDeselected)
  222. {
  223. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  224. URHO3D_PARAM(P_SELECTION, Selection); // int
  225. }
  226. /// Listview selection change finished.
  227. URHO3D_EVENT(E_SELECTIONCHANGED, SelectionChanged)
  228. {
  229. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  230. }
  231. /// Listview item clicked. If this is a left-click, also ItemSelected event will be sent. If this is a right-click, only this event is sent.
  232. URHO3D_EVENT(E_ITEMCLICKED, ItemClicked)
  233. {
  234. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  235. URHO3D_PARAM(P_ITEM, Item); // UIElement pointer
  236. URHO3D_PARAM(P_SELECTION, Selection); // int
  237. URHO3D_PARAM(P_BUTTON, Button); // int
  238. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  239. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  240. }
  241. /// Listview item double clicked.
  242. URHO3D_EVENT(E_ITEMDOUBLECLICKED, ItemDoubleClicked)
  243. {
  244. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  245. URHO3D_PARAM(P_ITEM, Item); // UIElement pointer
  246. URHO3D_PARAM(P_SELECTION, Selection); // int
  247. URHO3D_PARAM(P_BUTTON, Button); // int
  248. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  249. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  250. }
  251. /// LineEdit or ListView unhandled key pressed.
  252. URHO3D_EVENT(E_UNHANDLEDKEY, UnhandledKey)
  253. {
  254. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  255. URHO3D_PARAM(P_KEY, Key); // int
  256. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  257. URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
  258. }
  259. /// Fileselector choice.
  260. URHO3D_EVENT(E_FILESELECTED, FileSelected)
  261. {
  262. URHO3D_PARAM(P_FILENAME, FileName); // String
  263. URHO3D_PARAM(P_FILTER, Filter); // String
  264. URHO3D_PARAM(P_OK, OK); // bool
  265. }
  266. /// MessageBox acknowlegement.
  267. URHO3D_EVENT(E_MESSAGEACK, MessageACK)
  268. {
  269. URHO3D_PARAM(P_OK, OK); // bool
  270. }
  271. /// A child element has been added to an element. Sent by the UI root element, or element-event-sender if set.
  272. URHO3D_EVENT(E_ELEMENTADDED, ElementAdded)
  273. {
  274. URHO3D_PARAM(P_ROOT, Root); // UIElement pointer
  275. URHO3D_PARAM(P_PARENT, Parent); // UIElement pointer
  276. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  277. }
  278. /// A child element is about to be removed from an element. Sent by the UI root element, or element-event-sender if set.
  279. URHO3D_EVENT(E_ELEMENTREMOVED, ElementRemoved)
  280. {
  281. URHO3D_PARAM(P_ROOT, Root); // UIElement pointer
  282. URHO3D_PARAM(P_PARENT, Parent); // UIElement pointer
  283. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  284. }
  285. /// Hovering on an UI element has started.
  286. URHO3D_EVENT(E_HOVERBEGIN, HoverBegin)
  287. {
  288. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  289. URHO3D_PARAM(P_X, X); // int
  290. URHO3D_PARAM(P_Y, Y); // int
  291. URHO3D_PARAM(P_ELEMENTX, ElementX); // int
  292. URHO3D_PARAM(P_ELEMENTY, ElementY); // int
  293. }
  294. /// Hovering on an UI element has ended.
  295. URHO3D_EVENT(E_HOVEREND, HoverEnd)
  296. {
  297. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  298. }
  299. /// Drag behavior of a UI Element has started.
  300. URHO3D_EVENT(E_DRAGBEGIN, DragBegin)
  301. {
  302. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  303. URHO3D_PARAM(P_X, X); // int
  304. URHO3D_PARAM(P_Y, Y); // int
  305. URHO3D_PARAM(P_ELEMENTX, ElementX); // int
  306. URHO3D_PARAM(P_ELEMENTY, ElementY); // int
  307. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  308. URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
  309. }
  310. /// Drag behavior of a UI Element when the input device has moved.
  311. URHO3D_EVENT(E_DRAGMOVE, DragMove)
  312. {
  313. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  314. URHO3D_PARAM(P_X, X); // int
  315. URHO3D_PARAM(P_Y, Y); // int
  316. URHO3D_PARAM(P_DX, DX); // int
  317. URHO3D_PARAM(P_DY, DY); // int
  318. URHO3D_PARAM(P_ELEMENTX, ElementX); // int
  319. URHO3D_PARAM(P_ELEMENTY, ElementY); // int
  320. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  321. URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
  322. }
  323. /// Drag behavior of a UI Element has finished.
  324. URHO3D_EVENT(E_DRAGEND, DragEnd)
  325. {
  326. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  327. URHO3D_PARAM(P_X, X); // int
  328. URHO3D_PARAM(P_Y, Y); // int
  329. URHO3D_PARAM(P_ELEMENTX, ElementX); // int
  330. URHO3D_PARAM(P_ELEMENTY, ElementY); // int
  331. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  332. URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
  333. }
  334. /// Drag of a UI Element was canceled by pressing ESC.
  335. URHO3D_EVENT(E_DRAGCANCEL, DragCancel)
  336. {
  337. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  338. URHO3D_PARAM(P_X, X); // int
  339. URHO3D_PARAM(P_Y, Y); // int
  340. URHO3D_PARAM(P_ELEMENTX, ElementX); // int
  341. URHO3D_PARAM(P_ELEMENTY, ElementY); // int
  342. URHO3D_PARAM(P_BUTTONS, Buttons); // int
  343. URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
  344. }
  345. /// A file was drag-dropped into the application window. Includes also coordinates and UI element if applicable.
  346. URHO3D_EVENT(E_UIDROPFILE, UIDropFile)
  347. {
  348. URHO3D_PARAM(P_FILENAME, FileName); // String
  349. URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
  350. URHO3D_PARAM(P_X, X); // int
  351. URHO3D_PARAM(P_Y, Y); // int
  352. URHO3D_PARAM(P_ELEMENTX, ElementX); // int (only if element is non-null)
  353. URHO3D_PARAM(P_ELEMENTY, ElementY); // int (only if element is non-null)
  354. }
  355. }