Merged the wxPy_newswig branch into the HEAD branch (main trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		
							
								
								
									
										113
									
								
								wxPython/src/_evthandler.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								wxPython/src/_evthandler.i
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Name:        _evthandler.i
 | 
			
		||||
// Purpose:     SWIG interface for wxEventHandler
 | 
			
		||||
//
 | 
			
		||||
// Author:      Robin Dunn
 | 
			
		||||
//
 | 
			
		||||
// Created:     9-Aug-2003
 | 
			
		||||
// RCS-ID:      $Id$
 | 
			
		||||
// Copyright:   (c) 2003 by Total Control Software
 | 
			
		||||
// Licence:     wxWindows license
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
// Not a %module
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//---------------------------------------------------------------------------
 | 
			
		||||
%newgroup
 | 
			
		||||
 | 
			
		||||
// wxEvtHandler: the base class for all objects handling wxWindows events
 | 
			
		||||
class wxEvtHandler : public wxObject {
 | 
			
		||||
public:
 | 
			
		||||
    wxEvtHandler();
 | 
			
		||||
 | 
			
		||||
    wxEvtHandler* GetNextHandler();
 | 
			
		||||
    wxEvtHandler* GetPreviousHandler();
 | 
			
		||||
    void SetNextHandler(wxEvtHandler* handler);
 | 
			
		||||
    void SetPreviousHandler(wxEvtHandler* handler);
 | 
			
		||||
 | 
			
		||||
    bool GetEvtHandlerEnabled();
 | 
			
		||||
    void SetEvtHandlerEnabled(bool enabled);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // process an event right now
 | 
			
		||||
    bool ProcessEvent(wxEvent& event);
 | 
			
		||||
 | 
			
		||||
    // add an event to be processed later
 | 
			
		||||
    void AddPendingEvent(wxEvent& event);
 | 
			
		||||
 | 
			
		||||
    // process all pending events
 | 
			
		||||
    void ProcessPendingEvents();
 | 
			
		||||
 | 
			
		||||
    %extend {
 | 
			
		||||
        // Dynamic association of a member function handler with the event handler
 | 
			
		||||
        void Connect( int id, int lastId, int eventType, PyObject* func) {
 | 
			
		||||
            if (PyCallable_Check(func)) {
 | 
			
		||||
                self->Connect(id, lastId, eventType,
 | 
			
		||||
                          (wxObjectEventFunction) &wxPyCallback::EventThunker,
 | 
			
		||||
                          new wxPyCallback(func));
 | 
			
		||||
            }
 | 
			
		||||
            else if (func == Py_None) {
 | 
			
		||||
                self->Disconnect(id, lastId, eventType,
 | 
			
		||||
                                 (wxObjectEventFunction)
 | 
			
		||||
                                 &wxPyCallback::EventThunker);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                PyErr_SetString(PyExc_TypeError, "Expected callable object or None.");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        bool Disconnect(int id, int lastId = -1,
 | 
			
		||||
                        wxEventType eventType = wxEVT_NULL) {
 | 
			
		||||
            return self->Disconnect(id, lastId, eventType,
 | 
			
		||||
                                   (wxObjectEventFunction)
 | 
			
		||||
                                    &wxPyCallback::EventThunker);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    %extend {
 | 
			
		||||
        void _setOORInfo(PyObject* _self) {
 | 
			
		||||
            if (_self && _self != Py_None) {
 | 
			
		||||
                self->SetClientObject(new wxPyOORClientData(_self));
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                wxPyOORClientData* data = (wxPyOORClientData*)self->GetClientObject();
 | 
			
		||||
                if (data) {
 | 
			
		||||
                    self->SetClientObject(NULL);  // This will delete it too
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    %pythoncode {
 | 
			
		||||
        def Bind(self, event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
 | 
			
		||||
            """
 | 
			
		||||
            Bind an event to an event handler.
 | 
			
		||||
 | 
			
		||||
              event     One of the EVT_* objects that specifies the
 | 
			
		||||
                        type of event to bind,
 | 
			
		||||
 | 
			
		||||
              handler   A callable object to be invoked when the event
 | 
			
		||||
                        is delivered to self.  Pass None to disconnect an
 | 
			
		||||
                        event handler.
 | 
			
		||||
 | 
			
		||||
              source    Sometimes the event originates from a different window
 | 
			
		||||
                        than self, but you still want to catch it in self.  (For
 | 
			
		||||
                        example, a button event delivered to a frame.)  By
 | 
			
		||||
                        passing the source of the event, the event handling
 | 
			
		||||
                        system is able to differentiate between the same event
 | 
			
		||||
                        type from different controls.
 | 
			
		||||
 | 
			
		||||
              id,id2    Used for menu IDs or for event types that require a
 | 
			
		||||
                        range of IDs
 | 
			
		||||
            """
 | 
			
		||||
            if source is not None:
 | 
			
		||||
                id  = source.GetId()
 | 
			
		||||
            event.Bind(self, id, id2, handler)              
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//---------------------------------------------------------------------------
 | 
			
		||||
		Reference in New Issue
	
	Block a user