1 //
2 // Copyright (c) 2008-2017 the Urho3D project.
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining a copy
5 // of this software and associated documentation files (the "Software"), to deal
6 // in the Software without restriction, including without limitation the rights
7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 // copies of the Software, and to permit persons to whom the Software is
9 // furnished to do so, subject to the following conditions:
10 //
11 // The above copyright notice and this permission notice shall be included in
12 // all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 // THE SOFTWARE.
21 //
22
23 #pragma once
24
25 #include "../Core/Object.h"
26
27 namespace Urho3D
28 {
29
30 /// Global mouse click in the UI. Sent by the UI subsystem.
URHO3D_EVENT(E_UIMOUSECLICK,UIMouseClick)31 URHO3D_EVENT(E_UIMOUSECLICK, UIMouseClick)
32 {
33 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
34 URHO3D_PARAM(P_X, X); // int
35 URHO3D_PARAM(P_Y, Y); // int
36 URHO3D_PARAM(P_BUTTON, Button); // int
37 URHO3D_PARAM(P_BUTTONS, Buttons); // int
38 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
39 }
40
41 /// Global mouse click end in the UI. Sent by the UI subsystem.
URHO3D_EVENT(E_UIMOUSECLICKEND,UIMouseClickEnd)42 URHO3D_EVENT(E_UIMOUSECLICKEND, UIMouseClickEnd)
43 {
44 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
45 URHO3D_PARAM(P_BEGINELEMENT, BeginElement); // UIElement pointer
46 URHO3D_PARAM(P_X, X); // int
47 URHO3D_PARAM(P_Y, Y); // int
48 URHO3D_PARAM(P_BUTTON, Button); // int
49 URHO3D_PARAM(P_BUTTONS, Buttons); // int
50 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
51 }
52
53 /// Global mouse double click in the UI. Sent by the UI subsystem.
URHO3D_EVENT(E_UIMOUSEDOUBLECLICK,UIMouseDoubleClick)54 URHO3D_EVENT(E_UIMOUSEDOUBLECLICK, UIMouseDoubleClick)
55 {
56 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
57 URHO3D_PARAM(P_X, X); // int
58 URHO3D_PARAM(P_Y, Y); // int
59 URHO3D_PARAM(P_BUTTON, Button); // int
60 URHO3D_PARAM(P_BUTTONS, Buttons); // int
61 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
62 }
63
64 /// Mouse click on a UI element. Parameters are same as in UIMouseClick event, but is sent by the element.
URHO3D_EVENT(E_CLICK,Click)65 URHO3D_EVENT(E_CLICK, Click)
66 {
67 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
68 URHO3D_PARAM(P_X, X); // int
69 URHO3D_PARAM(P_Y, Y); // int
70 URHO3D_PARAM(P_BUTTON, Button); // int
71 URHO3D_PARAM(P_BUTTONS, Buttons); // int
72 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
73 }
74
75 /// Mouse click end on a UI element. Parameters are same as in UIMouseClickEnd event, but is sent by the element.
URHO3D_EVENT(E_CLICKEND,ClickEnd)76 URHO3D_EVENT(E_CLICKEND, ClickEnd)
77 {
78 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
79 URHO3D_PARAM(P_BEGINELEMENT, BeginElement); // UIElement pointer
80 URHO3D_PARAM(P_X, X); // int
81 URHO3D_PARAM(P_Y, Y); // int
82 URHO3D_PARAM(P_BUTTON, Button); // int
83 URHO3D_PARAM(P_BUTTONS, Buttons); // int
84 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
85 }
86
87 /// Mouse double click on a UI element. Parameters are same as in UIMouseDoubleClick event, but is sent by the element.
URHO3D_EVENT(E_DOUBLECLICK,DoubleClick)88 URHO3D_EVENT(E_DOUBLECLICK, DoubleClick)
89 {
90 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
91 URHO3D_PARAM(P_X, X); // int
92 URHO3D_PARAM(P_Y, Y); // int
93 URHO3D_PARAM(P_BUTTON, Button); // int
94 URHO3D_PARAM(P_BUTTONS, Buttons); // int
95 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
96 }
97
98 /// Drag and drop test.
URHO3D_EVENT(E_DRAGDROPTEST,DragDropTest)99 URHO3D_EVENT(E_DRAGDROPTEST, DragDropTest)
100 {
101 URHO3D_PARAM(P_SOURCE, Source); // UIElement pointer
102 URHO3D_PARAM(P_TARGET, Target); // UIElement pointer
103 URHO3D_PARAM(P_ACCEPT, Accept); // bool
104 };
105
106 /// Drag and drop finish.
URHO3D_EVENT(E_DRAGDROPFINISH,DragDropFinish)107 URHO3D_EVENT(E_DRAGDROPFINISH, DragDropFinish)
108 {
109 URHO3D_PARAM(P_SOURCE, Source); // UIElement pointer
110 URHO3D_PARAM(P_TARGET, Target); // UIElement pointer
111 URHO3D_PARAM(P_ACCEPT, Accept); // bool
112 };
113
114 /// Focus element changed.
URHO3D_EVENT(E_FOCUSCHANGED,FocusChanged)115 URHO3D_EVENT(E_FOCUSCHANGED, FocusChanged)
116 {
117 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
118 URHO3D_PARAM(P_CLICKEDELEMENT, ClickedElement); // UIElement pointer
119 }
120
121 /// UI element name changed.
URHO3D_EVENT(E_NAMECHANGED,NameChanged)122 URHO3D_EVENT(E_NAMECHANGED, NameChanged)
123 {
124 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
125 }
126
127 /// UI element resized.
URHO3D_EVENT(E_RESIZED,Resized)128 URHO3D_EVENT(E_RESIZED, Resized)
129 {
130 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
131 URHO3D_PARAM(P_WIDTH, Width); // int
132 URHO3D_PARAM(P_HEIGHT, Height); // int
133 URHO3D_PARAM(P_DX, DX); // int
134 URHO3D_PARAM(P_DY, DY); // int
135 }
136
137 /// UI element positioned.
URHO3D_EVENT(E_POSITIONED,Positioned)138 URHO3D_EVENT(E_POSITIONED, Positioned)
139 {
140 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
141 URHO3D_PARAM(P_X, X); // int
142 URHO3D_PARAM(P_Y, Y); // int
143 }
144
145 /// UI element visibility changed.
URHO3D_EVENT(E_VISIBLECHANGED,VisibleChanged)146 URHO3D_EVENT(E_VISIBLECHANGED, VisibleChanged)
147 {
148 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
149 URHO3D_PARAM(P_VISIBLE, Visible); // bool
150 }
151
152 /// UI element focused.
URHO3D_EVENT(E_FOCUSED,Focused)153 URHO3D_EVENT(E_FOCUSED, Focused)
154 {
155 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
156 URHO3D_PARAM(P_BYKEY, ByKey); // bool
157 }
158
159 /// UI element defocused.
URHO3D_EVENT(E_DEFOCUSED,Defocused)160 URHO3D_EVENT(E_DEFOCUSED, Defocused)
161 {
162 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
163 }
164
165 /// UI element layout updated.
URHO3D_EVENT(E_LAYOUTUPDATED,LayoutUpdated)166 URHO3D_EVENT(E_LAYOUTUPDATED, LayoutUpdated)
167 {
168 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
169 }
170
171 /// UI button pressed.
URHO3D_EVENT(E_PRESSED,Pressed)172 URHO3D_EVENT(E_PRESSED, Pressed)
173 {
174 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
175 }
176
177 /// UI button was pressed, then released.
URHO3D_EVENT(E_RELEASED,Released)178 URHO3D_EVENT(E_RELEASED, Released)
179 {
180 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
181 }
182
183 /// UI checkbox toggled.
URHO3D_EVENT(E_TOGGLED,Toggled)184 URHO3D_EVENT(E_TOGGLED, Toggled)
185 {
186 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
187 URHO3D_PARAM(P_STATE, State); // bool
188 }
189
190 /// UI slider value changed
URHO3D_EVENT(E_SLIDERCHANGED,SliderChanged)191 URHO3D_EVENT(E_SLIDERCHANGED, SliderChanged)
192 {
193 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
194 URHO3D_PARAM(P_VALUE, Value); // float
195 }
196
197 /// UI slider being paged.
URHO3D_EVENT(E_SLIDERPAGED,SliderPaged)198 URHO3D_EVENT(E_SLIDERPAGED, SliderPaged)
199 {
200 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
201 URHO3D_PARAM(P_OFFSET, Offset); // int
202 URHO3D_PARAM(P_PRESSED, Pressed); // bool
203 }
204
205 /// UI progressbar value changed
URHO3D_EVENT(E_PROGRESSBARCHANGED,ProgressBarChanged)206 URHO3D_EVENT(E_PROGRESSBARCHANGED, ProgressBarChanged)
207 {
208 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
209 URHO3D_PARAM(P_VALUE, Value); // float
210 }
211
212 /// UI scrollbar value changed.
URHO3D_EVENT(E_SCROLLBARCHANGED,ScrollBarChanged)213 URHO3D_EVENT(E_SCROLLBARCHANGED, ScrollBarChanged)
214 {
215 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
216 URHO3D_PARAM(P_VALUE, Value); // float
217 }
218
219 /// UI scrollview position changed.
URHO3D_EVENT(E_VIEWCHANGED,ViewChanged)220 URHO3D_EVENT(E_VIEWCHANGED, ViewChanged)
221 {
222 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
223 URHO3D_PARAM(P_X, X); // int
224 URHO3D_PARAM(P_Y, Y); // int
225 }
226
227 /// UI modal changed (currently only Window has modal flag).
URHO3D_EVENT(E_MODALCHANGED,ModalChanged)228 URHO3D_EVENT(E_MODALCHANGED, ModalChanged)
229 {
230 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
231 URHO3D_PARAM(P_MODAL, Modal); // bool
232 }
233
234 /// Text entry into a LineEdit. The text can be modified in the event data.
URHO3D_EVENT(E_TEXTENTRY,TextEntry)235 URHO3D_EVENT(E_TEXTENTRY, TextEntry)
236 {
237 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
238 URHO3D_PARAM(P_TEXT, Text); // String [in/out]
239 }
240
241 /// Editable text changed
URHO3D_EVENT(E_TEXTCHANGED,TextChanged)242 URHO3D_EVENT(E_TEXTCHANGED, TextChanged)
243 {
244 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
245 URHO3D_PARAM(P_TEXT, Text); // String
246 }
247
248 /// Text editing finished (enter pressed on a LineEdit)
URHO3D_EVENT(E_TEXTFINISHED,TextFinished)249 URHO3D_EVENT(E_TEXTFINISHED, TextFinished)
250 {
251 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
252 URHO3D_PARAM(P_TEXT, Text); // String
253 URHO3D_PARAM(P_VALUE, Value); // Float
254 }
255
256 /// Menu selected.
URHO3D_EVENT(E_MENUSELECTED,MenuSelected)257 URHO3D_EVENT(E_MENUSELECTED, MenuSelected)
258 {
259 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
260 }
261
262 /// Listview or DropDownList item selected.
URHO3D_EVENT(E_ITEMSELECTED,ItemSelected)263 URHO3D_EVENT(E_ITEMSELECTED, ItemSelected)
264 {
265 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
266 URHO3D_PARAM(P_SELECTION, Selection); // int
267 }
268
269 /// Listview item deselected.
URHO3D_EVENT(E_ITEMDESELECTED,ItemDeselected)270 URHO3D_EVENT(E_ITEMDESELECTED, ItemDeselected)
271 {
272 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
273 URHO3D_PARAM(P_SELECTION, Selection); // int
274 }
275
276 /// Listview selection change finished.
URHO3D_EVENT(E_SELECTIONCHANGED,SelectionChanged)277 URHO3D_EVENT(E_SELECTIONCHANGED, SelectionChanged)
278 {
279 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
280 }
281
282 /// 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.
URHO3D_EVENT(E_ITEMCLICKED,ItemClicked)283 URHO3D_EVENT(E_ITEMCLICKED, ItemClicked)
284 {
285 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
286 URHO3D_PARAM(P_ITEM, Item); // UIElement pointer
287 URHO3D_PARAM(P_SELECTION, Selection); // int
288 URHO3D_PARAM(P_BUTTON, Button); // int
289 URHO3D_PARAM(P_BUTTONS, Buttons); // int
290 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
291 }
292
293 /// Listview item double clicked.
URHO3D_EVENT(E_ITEMDOUBLECLICKED,ItemDoubleClicked)294 URHO3D_EVENT(E_ITEMDOUBLECLICKED, ItemDoubleClicked)
295 {
296 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
297 URHO3D_PARAM(P_ITEM, Item); // UIElement pointer
298 URHO3D_PARAM(P_SELECTION, Selection); // int
299 URHO3D_PARAM(P_BUTTON, Button); // int
300 URHO3D_PARAM(P_BUTTONS, Buttons); // int
301 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
302 }
303
304 /// LineEdit or ListView unhandled key pressed.
URHO3D_EVENT(E_UNHANDLEDKEY,UnhandledKey)305 URHO3D_EVENT(E_UNHANDLEDKEY, UnhandledKey)
306 {
307 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
308 URHO3D_PARAM(P_KEY, Key); // int
309 URHO3D_PARAM(P_BUTTONS, Buttons); // int
310 URHO3D_PARAM(P_QUALIFIERS, Qualifiers); // int
311 }
312
313 /// Fileselector choice.
URHO3D_EVENT(E_FILESELECTED,FileSelected)314 URHO3D_EVENT(E_FILESELECTED, FileSelected)
315 {
316 URHO3D_PARAM(P_FILENAME, FileName); // String
317 URHO3D_PARAM(P_FILTER, Filter); // String
318 URHO3D_PARAM(P_OK, Ok); // bool
319 }
320
321 /// MessageBox acknowlegement.
URHO3D_EVENT(E_MESSAGEACK,MessageACK)322 URHO3D_EVENT(E_MESSAGEACK, MessageACK)
323 {
324 URHO3D_PARAM(P_OK, Ok); // bool
325 }
326
327 /// A child element has been added to an element. Sent by the UI root element, or element-event-sender if set.
URHO3D_EVENT(E_ELEMENTADDED,ElementAdded)328 URHO3D_EVENT(E_ELEMENTADDED, ElementAdded)
329 {
330 URHO3D_PARAM(P_ROOT, Root); // UIElement pointer
331 URHO3D_PARAM(P_PARENT, Parent); // UIElement pointer
332 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
333 }
334
335 /// A child element is about to be removed from an element. Sent by the UI root element, or element-event-sender if set.
URHO3D_EVENT(E_ELEMENTREMOVED,ElementRemoved)336 URHO3D_EVENT(E_ELEMENTREMOVED, ElementRemoved)
337 {
338 URHO3D_PARAM(P_ROOT, Root); // UIElement pointer
339 URHO3D_PARAM(P_PARENT, Parent); // UIElement pointer
340 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
341 }
342
343 /// Hovering on an UI element has started
URHO3D_EVENT(E_HOVERBEGIN,HoverBegin)344 URHO3D_EVENT(E_HOVERBEGIN, HoverBegin)
345 {
346 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
347 URHO3D_PARAM(P_X, X); // int
348 URHO3D_PARAM(P_Y, Y); // int
349 URHO3D_PARAM(P_ELEMENTX, ElementX); // int
350 URHO3D_PARAM(P_ELEMENTY, ElementY); // int
351 }
352
353 /// Hovering on an UI element has ended
URHO3D_EVENT(E_HOVEREND,HoverEnd)354 URHO3D_EVENT(E_HOVEREND, HoverEnd)
355 {
356 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
357 }
358
359 /// Drag behavior of a UI Element has started
URHO3D_EVENT(E_DRAGBEGIN,DragBegin)360 URHO3D_EVENT(E_DRAGBEGIN, DragBegin)
361 {
362 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
363 URHO3D_PARAM(P_X, X); // int
364 URHO3D_PARAM(P_Y, Y); // int
365 URHO3D_PARAM(P_ELEMENTX, ElementX); // int
366 URHO3D_PARAM(P_ELEMENTY, ElementY); // int
367 URHO3D_PARAM(P_BUTTONS, Buttons); // int
368 URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
369 }
370
371 /// Drag behavior of a UI Element when the input device has moved
URHO3D_EVENT(E_DRAGMOVE,DragMove)372 URHO3D_EVENT(E_DRAGMOVE, DragMove)
373 {
374 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
375 URHO3D_PARAM(P_X, X); // int
376 URHO3D_PARAM(P_Y, Y); // int
377 URHO3D_PARAM(P_DX, DX); // int
378 URHO3D_PARAM(P_DY, DY); // int
379 URHO3D_PARAM(P_ELEMENTX, ElementX); // int
380 URHO3D_PARAM(P_ELEMENTY, ElementY); // int
381 URHO3D_PARAM(P_BUTTONS, Buttons); // int
382 URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
383 }
384
385 /// Drag behavior of a UI Element has finished
URHO3D_EVENT(E_DRAGEND,DragEnd)386 URHO3D_EVENT(E_DRAGEND, DragEnd)
387 {
388 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
389 URHO3D_PARAM(P_X, X); // int
390 URHO3D_PARAM(P_Y, Y); // int
391 URHO3D_PARAM(P_ELEMENTX, ElementX); // int
392 URHO3D_PARAM(P_ELEMENTY, ElementY); // int
393 URHO3D_PARAM(P_BUTTONS, Buttons); // int
394 URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
395 }
396
397 /// Drag of a UI Element was canceled by pressing ESC
URHO3D_EVENT(E_DRAGCANCEL,DragCancel)398 URHO3D_EVENT(E_DRAGCANCEL, DragCancel)
399 {
400 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
401 URHO3D_PARAM(P_X, X); // int
402 URHO3D_PARAM(P_Y, Y); // int
403 URHO3D_PARAM(P_ELEMENTX, ElementX); // int
404 URHO3D_PARAM(P_ELEMENTY, ElementY); // int
405 URHO3D_PARAM(P_BUTTONS, Buttons); // int
406 URHO3D_PARAM(P_NUMBUTTONS, NumButtons); // int
407 }
408
409 /// A file was drag-dropped into the application window. Includes also coordinates and UI element if applicable
URHO3D_EVENT(E_UIDROPFILE,UIDropFile)410 URHO3D_EVENT(E_UIDROPFILE, UIDropFile)
411 {
412 URHO3D_PARAM(P_FILENAME, FileName); // String
413 URHO3D_PARAM(P_ELEMENT, Element); // UIElement pointer
414 URHO3D_PARAM(P_X, X); // int
415 URHO3D_PARAM(P_Y, Y); // int
416 URHO3D_PARAM(P_ELEMENTX, ElementX); // int (only if element is non-null)
417 URHO3D_PARAM(P_ELEMENTY, ElementY); // int (only if element is non-null)
418 }
419
420 }
421