From: Uwe S. <us...@us...> - 2002-09-20 04:49:57
|
Update of /cvsroot/elj/elj-2002/lib/ifs/eiffel/ewxw In directory usw-pr-cvs1:/tmp/cvs-serv12245 Modified Files: ewxw_glue.h wx_event_handler.e wx_window.e Log Message: proof of concept for controller pattern Index: ewxw_glue.h =================================================================== RCS file: /cvsroot/elj/elj-2002/lib/ifs/eiffel/ewxw/ewxw_glue.h,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** ewxw_glue.h 19 Sep 2002 04:50:17 -0000 1.42 --- ewxw_glue.h 20 Sep 2002 04:49:54 -0000 1.43 *************** *** 436,439 **** --- 436,452 ---- int _stdcall wxEvtHandler_Connect(void* _obj, int first, int last, int type, void* data); int _stdcall wxEvtHandler_Disconnect(void* _obj, int first, int last, int type, int id); + void* _stdcall wxEvtHandler_Create(); + void _stdcall wxEvtHandler_Delete(void* _obj); + int _stdcall wxEvtHandler_Connect(void* _obj, int first, int last, int type, void* data); + int _stdcall wxEvtHandler_Disconnect(void* _obj, int first, int last, int type, int data); + void* _stdcall wxEvtHandler_GetNextHandler(void* _obj); + void* _stdcall wxEvtHandler_GetPreviousHandler(void* _obj); + void _stdcall wxEvtHandler_SetNextHandler(void* _obj, void* handler); + void _stdcall wxEvtHandler_SetPreviousHandler(void* _obj, void* handler); + void _stdcall wxEvtHandler_SetEvtHandlerEnabled(void* _obj, int enabled); + int _stdcall wxEvtHandler_GetEvtHandlerEnabled(void* _obj); + int _stdcall wxEvtHandler_ProcessEvent(void* _obj, void* event); + void _stdcall wxEvtHandler_AddPendingEvent(void* _obj, void* event); + void _stdcall wxEvtHandler_ProcessPendingEvents(void* _obj); /* CheckBox */ Index: wx_event_handler.e =================================================================== RCS file: /cvsroot/elj/elj-2002/lib/ifs/eiffel/ewxw/wx_event_handler.e,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** wx_event_handler.e 4 Sep 2002 06:04:21 -0000 1.8 --- wx_event_handler.e 20 Sep 2002 04:49:54 -0000 1.9 *************** *** 19,22 **** --- 19,26 ---- feature + handle_exists: BOOLEAN is + deferred + end -- handle_exists + last_connected: INTEGER -- id of last connected agent, use as argument for 'disconnect' *************** *** 199,201 **** --- 203,271 ---- end -- wxEvtHandler_Disconnect + wxEvtHandler_Create: POINTER is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_Delete(a_obj: POINTER) is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_GetNextHandler(a_obj: POINTER): POINTER is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_GetPreviousHandler(a_obj: POINTER): POINTER is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_SetNextHandler(a_obj: POINTER; a_handler: POINTER) is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_SetPreviousHandler(a_obj: POINTER; a_handler: POINTER) is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_SetEvtHandlerEnabled(a_obj: POINTER; a_enabled: INTEGER) is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_GetEvtHandlerEnabled(a_obj: POINTER): INTEGER is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_ProcessEvent(a_obj: POINTER; a_event: POINTER): INTEGER is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_AddPendingEvent(a_obj: POINTER; a_event: POINTER) is + external "[ + C use "ewxw_glue.h" + ]" + end + + wxEvtHandler_ProcessPendingEvents(a_obj: POINTER) is + external "[ + C use "ewxw_glue.h" + ]" + end + end -- deferred class WX_EVENT_HANDLER Index: wx_window.e =================================================================== RCS file: /cvsroot/elj/elj-2002/lib/ifs/eiffel/ewxw/wx_window.e,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** wx_window.e 19 Sep 2002 04:50:17 -0000 1.21 --- wx_window.e 20 Sep 2002 04:49:54 -0000 1.22 *************** *** 139,142 **** --- 139,149 ---- end -- enable + event_handler: WX_EVENT_HANDLER is + require + handle_created: handle_exists + do + create {WX_EVT_HANDLER}Result.make_from_handle (wxWindow_GetEventHandler (wx_handle)) + end -- event_handler + find_focus: WX_WINDOW is require *************** *** 335,338 **** --- 342,357 ---- end -- parent + pop_event_handler (a_delete_it: BOOLEAN): WX_EVENT_HANDLER is + require + handle_created: handle_exists + local + res: POINTER + do + res := wxWindow_PopEventHandler(wx_handle, a_delete_it.to_integer) + if res.is_not_null then + create {WX_EVT_HANDLER}Result.make_from_handle (res) + end -- if + end -- pop_event_handler + popup_menu (a_menu: WX_MENU; a_x, a_y: INTEGER) is require *************** *** 352,355 **** --- 371,383 ---- Result := [x_mem.to_integer, y_mem.to_integer] end -- position + + push_event_handler (a_event_handler: WX_EVENT_HANDLER) is + require + handle_created: handle_exists + non_void_event_handler: a_event_handler /= Void + valid_event_handler: a_event_handler.handle_exists + do + wxWindow_PushEventHandler(wx_handle, a_event_handler.wx_handle) + end -- push_event_handler raise is |