| // |
| // Copyright 2005 The Android Open Source Project |
| // |
| // A "user event" for wxWidgets. |
| // |
| #ifndef _SIM_USER_EVENT_H |
| #define _SIM_USER_EVENT_H |
| |
| /* |
| * Event declaration. The book says to use DECLARE_EVENT_TYPE, but that |
| * causes a compiler warning and a link failure with gcc under MinGW. |
| * |
| * It looks like the "magic number", in this case 12345, is just picked |
| * by hand. There may be a better mechanism in this version of |
| * wxWidgets, but the documentation and sample code doesn't reflect it. |
| */ |
| BEGIN_DECLARE_EVENT_TYPES() |
| DECLARE_LOCAL_EVENT_TYPE(wxEVT_USER_EVENT, 12345) |
| END_DECLARE_EVENT_TYPES() |
| |
| /* |
| * A "user event" class. This can be used like any other wxWidgets |
| * event, but we get to stuff anything we want to in it. |
| */ |
| class UserEvent : public wxEvent { |
| public: |
| UserEvent(int id = 0, void* data = (void*) 0) |
| : wxEvent(id, wxEVT_USER_EVENT), mData(data) |
| {} |
| UserEvent(const UserEvent& event) |
| : wxEvent(event), mData(event.mData) |
| {} |
| |
| virtual wxEvent* Clone() const { |
| return new UserEvent(*this); |
| } |
| |
| void* GetData(void) const { return mData; } |
| |
| DECLARE_DYNAMIC_CLASS(UserEvent); |
| |
| private: |
| UserEvent& operator=(const UserEvent&); // not implemented |
| void* mData; |
| }; |
| |
| typedef void (wxEvtHandler::*UserEventFunction)(UserEvent&); |
| |
| #define EVT_USER_EVENT(fn) \ |
| DECLARE_EVENT_TABLE_ENTRY(wxEVT_USER_EVENT, wxID_ANY, wxID_ANY, \ |
| (wxObjectEventFunction)(wxEventFunction)(UserEventFunction)&fn, \ |
| (wxObject*) NULL ), |
| |
| #endif // _SIM_USER_EVENT_H |