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
00043
00045 EET_USER_EVENT
00046 };
00047
00049 enum EMOUSE_INPUT_EVENT
00050 {
00052 EMIE_LMOUSE_PRESSED_DOWN = 0,
00053
00055 EMIE_RMOUSE_PRESSED_DOWN,
00056
00058 EMIE_MMOUSE_PRESSED_DOWN,
00059
00061 EMIE_LMOUSE_LEFT_UP,
00062
00064 EMIE_RMOUSE_LEFT_UP,
00065
00067 EMIE_MMOUSE_LEFT_UP,
00068
00070 EMIE_MOUSE_MOVED,
00071
00074 EMIE_MOUSE_WHEEL,
00075
00077 EMIE_COUNT
00078 };
00079
00080 namespace gui
00081 {
00082
00083 class IGUIElement;
00084
00086 enum EGUI_EVENT_TYPE
00087 {
00089
00091 EGET_ELEMENT_FOCUS_LOST = 0,
00092
00094
00095 EGET_ELEMENT_FOCUSED,
00096
00098 EGET_ELEMENT_HOVERED,
00099
00101 EGET_ELEMENT_LEFT,
00102
00104
00106 EGET_ELEMENT_CLOSED,
00107
00109 EGET_BUTTON_CLICKED,
00110
00112 EGET_SCROLL_BAR_CHANGED,
00113
00115 EGET_CHECKBOX_CHANGED,
00116
00118 EGET_LISTBOX_CHANGED,
00119
00121 EGET_LISTBOX_SELECTED_AGAIN,
00122
00124 EGET_FILE_SELECTED,
00125
00127 EGET_FILE_CHOOSE_DIALOG_CANCELLED,
00128
00130 EGET_MESSAGEBOX_YES,
00131
00133 EGET_MESSAGEBOX_NO,
00134
00136 EGET_MESSAGEBOX_OK,
00137
00139 EGET_MESSAGEBOX_CANCEL,
00140
00142 EGET_EDITBOX_ENTER,
00143
00145 EGET_TAB_CHANGED,
00146
00148 EGET_MENU_ITEM_SELECTED,
00149
00151 EGET_COMBO_BOX_CHANGED,
00152
00154 EGET_SPINBOX_CHANGED
00155 };
00156 }
00157
00158
00160 struct SEvent
00161 {
00163 struct SGUIEvent
00164 {
00166 gui::IGUIElement* Caller;
00167
00169 gui::IGUIElement* Element;
00170
00172 gui::EGUI_EVENT_TYPE EventType;
00173
00174 };
00175
00177 struct SMouseInput
00178 {
00180 s32 X;
00181
00183 s32 Y;
00184
00186
00187 f32 Wheel;
00188
00190 EMOUSE_INPUT_EVENT Event;
00191 };
00192
00194 struct SKeyInput
00195 {
00197 wchar_t Char;
00198
00200 EKEY_CODE Key;
00201
00203 bool PressedDown;
00204
00206 bool Shift;
00207
00209 bool Control;
00210 };
00211
00213 struct SLogEvent
00214 {
00216 const c8* Text;
00217
00219 ELOG_LEVEL Level;
00220 };
00221
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
00258 virtual ~IEventReceiver() {}
00259
00261
00262 virtual bool OnEvent(const SEvent& event) = 0;
00263 };
00264
00265
00266 }
00267
00268 #endif
00269