00001
00002
00003
00004
00005 #ifndef __I_EVENT_RECEIVER_H_INCLUDED__
00006 #define __I_EVENT_RECEIVER_H_INCLUDED__
00007
00008 #include "ILogger.h"
00009 #include "position2d.h"
00010 #include "Keycodes.h"
00011
00012 namespace irr
00013 {
00015 enum EEVENT_TYPE
00016 {
00018
00022 EET_GUI_EVENT = 0,
00023
00025
00030 EET_MOUSE_INPUT_EVENT,
00031
00033
00035 EET_KEY_INPUT_EVENT,
00036
00038
00040 EET_LOG_TEXT_EVENT,
00041
00044 EET_USER_EVENT
00045 };
00046
00048 enum EMOUSE_INPUT_EVENT
00049 {
00051 EMIE_LMOUSE_PRESSED_DOWN = 0,
00052
00054 EMIE_RMOUSE_PRESSED_DOWN,
00055
00057 EMIE_MMOUSE_PRESSED_DOWN,
00058
00060 EMIE_LMOUSE_LEFT_UP,
00061
00063 EMIE_RMOUSE_LEFT_UP,
00064
00066 EMIE_MMOUSE_LEFT_UP,
00067
00069 EMIE_MOUSE_MOVED,
00070
00073 EMIE_MOUSE_WHEEL,
00074
00076 EMIE_COUNT
00077 };
00078
00079 namespace gui
00080 {
00081
00082 class IGUIElement;
00083
00085 enum EGUI_EVENT_TYPE
00086 {
00090 EGET_ELEMENT_FOCUS_LOST = 0,
00091
00094 EGET_ELEMENT_FOCUSED,
00095
00097 EGET_ELEMENT_HOVERED,
00098
00100 EGET_ELEMENT_LEFT,
00101
00105 EGET_ELEMENT_CLOSED,
00106
00108 EGET_BUTTON_CLICKED,
00109
00111 EGET_SCROLL_BAR_CHANGED,
00112
00114 EGET_CHECKBOX_CHANGED,
00115
00117 EGET_LISTBOX_CHANGED,
00118
00120 EGET_LISTBOX_SELECTED_AGAIN,
00121
00123 EGET_FILE_SELECTED,
00124
00126 EGET_FILE_CHOOSE_DIALOG_CANCELLED,
00127
00129 EGET_MESSAGEBOX_YES,
00130
00132 EGET_MESSAGEBOX_NO,
00133
00135 EGET_MESSAGEBOX_OK,
00136
00138 EGET_MESSAGEBOX_CANCEL,
00139
00141 EGET_EDITBOX_ENTER,
00142
00144 EGET_TAB_CHANGED,
00145
00147 EGET_MENU_ITEM_SELECTED,
00148
00150 EGET_COMBO_BOX_CHANGED,
00151
00153 EGET_SPINBOX_CHANGED,
00154
00156 EGET_TABLE_CHANGED,
00157 EGET_TABLE_HEADER_CHANGED,
00158 EGET_TABLE_SELECTED_AGAIN
00159
00160 };
00161 }
00162
00163
00165 struct SEvent
00166 {
00167 struct SGUIEvent
00168 {
00170 gui::IGUIElement* Caller;
00171
00173 gui::IGUIElement* Element;
00174
00176 gui::EGUI_EVENT_TYPE EventType;
00177
00178 };
00179
00180 struct SMouseInput
00181 {
00183 s32 X;
00184
00186 s32 Y;
00187
00189
00190 f32 Wheel;
00191
00193 EMOUSE_INPUT_EVENT Event;
00194 };
00195
00196 struct SKeyInput
00197 {
00199 wchar_t Char;
00200
00202 EKEY_CODE Key;
00203
00205 bool PressedDown;
00206
00208 bool Shift;
00209
00211 bool Control;
00212 };
00213
00214 struct SLogEvent
00215 {
00217 const c8* Text;
00218
00220 ELOG_LEVEL Level;
00221 };
00222
00223 struct SUserEvent
00224 {
00226 s32 UserData1;
00227
00229 s32 UserData2;
00230
00232 f32 UserData3;
00233 };
00234
00235 EEVENT_TYPE EventType;
00236 union
00237 {
00238 struct SGUIEvent GUIEvent;
00239 struct SMouseInput MouseInput;
00240 struct SKeyInput KeyInput;
00241 struct SLogEvent LogEvent;
00242 struct SUserEvent UserEvent;
00243 };
00244
00245 };
00246
00248
00253 class IEventReceiver
00254 {
00255 public:
00256
00257 virtual ~IEventReceiver() {}
00258
00261 virtual bool OnEvent(const SEvent& event) = 0;
00262 };
00263
00264
00265 }
00266
00267 #endif
00268
00269
00270
00271