1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG interface for wxEventHandler
 
   9 // Copyright:   (c) 2003 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  16 //---------------------------------------------------------------------------
 
  19 // wxEvtHandler: the base class for all objects handling wxWindows events
 
  20 class wxEvtHandler : public wxObject {
 
  24     wxEvtHandler* GetNextHandler();
 
  25     wxEvtHandler* GetPreviousHandler();
 
  26     void SetNextHandler(wxEvtHandler* handler);
 
  27     void SetPreviousHandler(wxEvtHandler* handler);
 
  29     bool GetEvtHandlerEnabled();
 
  30     void SetEvtHandlerEnabled(bool enabled);
 
  33     // process an event right now
 
  34     bool ProcessEvent(wxEvent& event);
 
  36     // add an event to be processed later
 
  37     void AddPendingEvent(wxEvent& event);
 
  39     // process all pending events
 
  40     void ProcessPendingEvents();
 
  43         // Dynamic association of a member function handler with the event handler
 
  44         void Connect( int id, int lastId, int eventType, PyObject* func) {
 
  45             if (PyCallable_Check(func)) {
 
  46                 self->Connect(id, lastId, eventType,
 
  47                           (wxObjectEventFunction) &wxPyCallback::EventThunker,
 
  48                           new wxPyCallback(func));
 
  50             else if (func == Py_None) {
 
  51                 self->Disconnect(id, lastId, eventType,
 
  52                                  (wxObjectEventFunction)
 
  53                                  &wxPyCallback::EventThunker);
 
  57                     PyErr_SetString(PyExc_TypeError, "Expected callable object or None."));
 
  61         bool Disconnect(int id, int lastId = -1,
 
  62                         wxEventType eventType = wxEVT_NULL) {
 
  63             return self->Disconnect(id, lastId, eventType,
 
  64                                    (wxObjectEventFunction)
 
  65                                     &wxPyCallback::EventThunker);
 
  70         void _setOORInfo(PyObject* _self) {
 
  71             if (_self && _self != Py_None) {
 
  72                 self->SetClientObject(new wxPyOORClientData(_self));
 
  75                 wxPyOORClientData* data = (wxPyOORClientData*)self->GetClientObject();
 
  77                     self->SetClientObject(NULL);  // This will delete it too
 
  84         def Bind(self, event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
 
  86             Bind an event to an event handler.
 
  88               event     One of the EVT_* objects that specifies the
 
  89                         type of event to bind,
 
  91               handler   A callable object to be invoked when the event
 
  92                         is delivered to self.  Pass None to disconnect an
 
  95               source    Sometimes the event originates from a different window
 
  96                         than self, but you still want to catch it in self.  (For
 
  97                         example, a button event delivered to a frame.)  By
 
  98                         passing the source of the event, the event handling
 
  99                         system is able to differentiate between the same event
 
 100                         type from different controls.
 
 102               id,id2    Used for menu IDs or for event types that require a
 
 105             if source is not None:
 
 107             event.Bind(self, id, id2, handler)              
 
 109         def Unbind(self, event, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
 
 111             Disconencts the event handler binding for event from self.
 
 112             Returns True if successful.
 
 114             if source is not None:
 
 116             return event.Unbind(self, id, id2)              
 
 122 //---------------------------------------------------------------------------