Version 1, last updated by wycc at September 28, 2010 23:46 UTC
EventDispatch
Introduction
The MadButterfly use the observer pattern to dispatch events. Every event source can generate one or more subjects for others to monitor. The MadButterfly itself will generate events from keyboard, mouse and screen. However, these low level events might not be convenient for GUI application. We may want to have higher level events, such as drag&drop, click or content change. Therefore, we can use the same mechanism to create more subjects.
Firstly of all, we will briefly describe the observer pattern used in the MadButterfly.
Observer pattern
The observer pattern is explained in the full detail in WikiPedia.
[To be filled]
Events
Here is the full list of events available for any MB object. We can subscribe to the subjects by using the subject_add_observer. Every observers can filter only the events they want to handle. This is similiar with the addListener in the javascript.
When we want to subscribe to any events, we need to figure out the subject of the events. In the MadButterfly, we have the following default subjects. * Keyboard: mb_object_mouseSubject(); * Mouse: mb_object_keyboardSubject(); * Object: mb_object_objectSubject();
Mouse Events
- EVT_MOUSE_BUT_PRESS
- EVT_MOUSE_BUT_RELEASE
- EVT_MOUSE_OVER
- EVT_MOUSE_MOVE
- EVT_MOUSE_OUT
Keyboard Events
- EVT_KB_PRESS
- EVT_KB_RELEASE
Object Events
- EVT_DRAG_OUT
- EVT_DRAG_OVER
- EVT_PRESS
- EVT_RELEASE
- EVT_RELEASE_OUT
- EVT_ROLL_OUT
- EVT_ROLL_OVER
- EVT_FOCUS
- EVT_LOAD
- EVT_UNLOAD