X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..96fcf4d86cbdbe5aff4bd620b6ba464568889778:/wxPython/src/events.i diff --git a/wxPython/src/events.i b/wxPython/src/events.i index 6ca6f66c18..3219045950 100644 --- a/wxPython/src/events.i +++ b/wxPython/src/events.i @@ -30,21 +30,78 @@ //--------------------------------------------------------------------------- -class wxEvent { +enum Propagation_state +{ + // don't propagate it at all + wxEVENT_PROPAGATE_NONE = 0, + + // propagate it until it is processed + wxEVENT_PROPAGATE_MAX = INT_MAX +}; + + +int wxNewEventType(); + + + +class wxEvent : public wxObject { public: - wxEvent(int id = 0); + // wxEvent(int winid = 0, wxEventType commandType = wxEVT_NULL); // *** This class is now an ABC ~wxEvent(); - wxObject* GetEventObject(); - wxEventType GetEventType(); - int GetId(); - bool GetSkipped(); - long GetTimestamp(); - void SetEventObject(wxObject* object); void SetEventType(wxEventType typ); - void SetId(int id); - void SetTimestamp(long timeStamp); + wxEventType GetEventType() const; + wxObject *GetEventObject() const; + void SetEventObject(wxObject *obj); + long GetTimestamp() const; + void SetTimestamp(long ts = 0); + int GetId() const; + void SetId(int Id); + + + bool IsCommandEvent() const; + + // Can instruct event processor that we wish to ignore this event + // (treat as if the event table entry had not been found): this must be done + // to allow the event processing by the base classes (calling event.Skip() + // is the analog of calling the base class verstion of a virtual function) void Skip(bool skip = TRUE); + bool GetSkipped() const; + + // Determine if this event should be propagating to the parent window. + bool ShouldPropagate() const; + + // Stop an event from propagating to its parent window, returns the old + // propagation level value + int StopPropagation(); + + // Resume the event propagation by restoring the propagation level + // (returned by StopPropagation()) + void ResumePropagation(int propagationLevel); + + // this function is used to create a copy of the event polymorphically and + // all derived classes must implement it because otherwise wxPostEvent() + // for them wouldn't work (it needs to do a copy of the event) + virtual wxEvent *Clone() /* =0*/; +}; + +//--------------------------------------------------------------------------- + +// Helper class to temporarily change an event not to propagate. +class wxPropagationDisabler +{ +public: + wxPropagationDisabler(wxEvent& event); + ~wxPropagationDisabler(); +}; + + +// Another one to temporarily lower propagation level. +class wxPropagateOnce +{ +public: + wxPropagateOnce(wxEvent& event); + ~wxPropagateOnce(); }; //--------------------------------------------------------------------------- @@ -53,6 +110,8 @@ class wxSizeEvent : public wxEvent { public: wxSizeEvent(const wxSize& sz, int id = 0); wxSize GetSize(); + wxRect GetRect() const; + void SetRect(wxRect rect); }; //--------------------------------------------------------------------------- @@ -75,7 +134,8 @@ class wxCommandEvent : public wxEvent { public: wxCommandEvent(int commandEventType = 0, int id = 0); - bool Checked(); + bool IsChecked(); + %name(Checked)bool IsChecked(); long GetExtraLong(); int GetInt(); int GetSelection(); @@ -85,6 +145,18 @@ public: void SetExtraLong(long extraLong); void SetInt(int i); + %addmethods { + PyObject* GetClientData() { + wxPyClientData* data = (wxPyClientData*)self->GetClientObject(); + if (data) { + Py_INCREF(data->m_obj); + return data->m_obj; + } else { + Py_INCREF(Py_None); + return Py_None; + } + } + } }; @@ -155,6 +227,46 @@ public: wxPoint GetLogicalPosition(const wxDC& dc); long GetX(); long GetY(); + + int GetWheelRotation() const { return m_wheelRotation; } + int GetWheelDelta() const { return m_wheelDelta; } + int GetLinesPerAction() const { return m_linesPerAction; } + + long m_x, m_y; + bool m_leftDown; + bool m_middleDown; + bool m_rightDown; + bool m_controlDown; + bool m_shiftDown; + bool m_altDown; + bool m_metaDown; + int m_wheelRotation; + int m_wheelDelta; + int m_linesPerAction; +}; + +//--------------------------------------------------------------------------- + +class wxMouseCaptureChangedEvent : public wxEvent +{ +public: + wxMouseCaptureChangedEvent(wxWindowID id = 0, wxWindow* gainedCapture = NULL); + wxWindow* GetCapturedWindow() const; +}; + +//--------------------------------------------------------------------------- + +class wxSetCursorEvent : public wxEvent +{ +public: + wxSetCursorEvent(wxCoord x = 0, wxCoord y = 0); + + wxCoord GetX() const; + wxCoord GetY() const; + + void SetCursor(const wxCursor& cursor); + const wxCursor& GetCursor() const; + bool HasCursor() const; }; //--------------------------------------------------------------------------- @@ -167,15 +279,32 @@ public: bool MetaDown(); bool AltDown(); bool ShiftDown(); - long KeyCode(); long GetKeyCode(); + %pragma(python) addtoclass = "KeyCode = GetKeyCode" bool HasModifiers(); + // get the raw key code (platform-dependent) + long GetRawKeyCode() const; + + // get the raw key flags (platform-dependent) + long GetRawKeyFlags() const; + long GetX(); long GetY(); wxPoint GetPosition(); %name(GetPositionTuple) void GetPosition(long* OUTPUT, long* OUTPUT); + + long m_x, m_y; + long m_keyCode; + bool m_controlDown; + bool m_shiftDown; + bool m_altDown; + bool m_metaDown; + bool m_scanCode; + long m_rawCode; + long m_rawFlags; + }; //--------------------------------------------------------------------------- @@ -198,8 +327,9 @@ public: class wxMoveEvent: public wxEvent { public: wxMoveEvent(const wxPoint& pt, int id = 0); - wxPoint GetPosition(); + wxRect GetRect() const; + void SetRect(wxRect rect); }; //--------------------------------------------------------------------------- @@ -223,14 +353,26 @@ public: class wxFocusEvent: public wxEvent { public: - wxFocusEvent(WXTYPE eventType = 0, int id = 0); + wxFocusEvent(int eventType = 0, int id = 0); }; +//--------------------------------------------------------------------------- + +// wxChildFocusEvent notifies the parent that a child has got the focus: unlike +// wxFocusEvent it is propgated upwards the window chain +class wxChildFocusEvent : public wxCommandEvent +{ +public: + wxChildFocusEvent(wxWindow *win = NULL); + wxWindow *GetWindow() const; +}; + + //--------------------------------------------------------------------------- class wxActivateEvent: public wxEvent{ public: - wxActivateEvent(WXTYPE eventType = 0, int active = TRUE, int id = 0); + wxActivateEvent(int eventType = 0, int active = TRUE, int id = 0); bool GetActive(); }; @@ -245,8 +387,10 @@ public: class wxMenuEvent: public wxEvent { public: - wxMenuEvent(WXTYPE id = 0, int id = 0); + wxMenuEvent(int id = 0, int winid = 0, wxMenu* menu = NULL); int GetMenuId(); + bool IsPopup(); + wxMenu* GetMenu() const; }; //--------------------------------------------------------------------------- @@ -262,7 +406,8 @@ public: class wxIconizeEvent: public wxEvent { public: - wxIconizeEvent(int id = 0); + wxIconizeEvent(int id = 0, bool iconized = TRUE); + bool Iconized(); }; //--------------------------------------------------------------------------- @@ -317,7 +462,11 @@ public: } for (int i=0; i