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