X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e4a197e4c60e461b8068b0619692ea083e30b8b..85b88942cca1395ce7c827233e64aaa5eef838d2:/wxPython/src/events.i diff --git a/wxPython/src/events.i b/wxPython/src/events.i index aba54b3e45..3c825cbaf5 100644 --- a/wxPython/src/events.i +++ b/wxPython/src/events.i @@ -30,9 +30,20 @@ //--------------------------------------------------------------------------- +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); // *** This class is now an ABC @@ -41,15 +52,52 @@ public: 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); + + 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; - wxEvent *Clone(); + // 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); + + wxEvent *Clone(); +}; + +//--------------------------------------------------------------------------- + +// 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(); }; //--------------------------------------------------------------------------- @@ -58,6 +106,8 @@ class wxSizeEvent : public wxEvent { public: wxSizeEvent(const wxSize& sz, int id = 0); wxSize GetSize(); + wxRect GetRect() const; + void SetRect(wxRect rect); }; //--------------------------------------------------------------------------- @@ -273,8 +323,9 @@ public: class wxMoveEvent: public wxEvent { public: wxMoveEvent(const wxPoint& pt, int id = 0); - wxPoint GetPosition(); + wxRect GetRect() const; + void SetRect(wxRect rect); }; //--------------------------------------------------------------------------- @@ -298,7 +349,7 @@ public: class wxFocusEvent: public wxEvent { public: - wxFocusEvent(WXTYPE eventType = 0, int id = 0); + wxFocusEvent(int eventType = 0, int id = 0); }; //--------------------------------------------------------------------------- @@ -317,7 +368,7 @@ public: 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(); }; @@ -332,9 +383,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; }; //--------------------------------------------------------------------------- @@ -419,15 +471,57 @@ public: //--------------------------------------------------------------------------- +// Whether to always send idle events to windows, or +// to only send update events to those with the +// wxWS_EX_PROCESS_IDLE style. + +enum wxIdleMode +{ + // Send idle events to all windows + wxIDLE_PROCESS_ALL, + + // Send idle events to windows that have + // the wxWS_EX_PROCESS_IDLE flag specified + wxIDLE_PROCESS_SPECIFIED +}; + + class wxIdleEvent: public wxEvent { public: wxIdleEvent(); void RequestMore(bool needMore = TRUE); bool MoreRequested(); + + // Specify how wxWindows will send idle events: to + // all windows, or only to those which specify that they + // will process the events. + static void SetMode(wxIdleMode mode) { sm_idleMode = mode; } + + // Returns the idle event mode + static wxIdleMode GetMode() { return sm_idleMode ; } + + // Can we send an idle event? + static bool CanSend(wxWindow* win) ; + }; //--------------------------------------------------------------------------- +// Whether to always send update events to windows, or +// to only send update events to those with the +// wxWS_EX_PROCESS_UI_UPDATES style. + +enum wxUpdateUIMode +{ + // Send UI update events to all windows + wxUPDATE_UI_PROCESS_ALL, + + // Send UI update events to windows that have + // the wxWS_EX_PROCESS_UI_UPDATES flag specified + wxUPDATE_UI_PROCESS_SPECIFIED +}; + + class wxUpdateUIEvent: public wxEvent { public: wxUpdateUIEvent(wxWindowID commandId = 0); @@ -441,6 +535,29 @@ public: void Check(bool check); void Enable(bool enable); void SetText(const wxString& text); + + + // Sets the interval between updates in milliseconds. + // Set to -1 to disable updates, or to 0 to update as frequently as possible. + static void SetUpdateInterval(long updateInterval); + + // Returns the current interval between updates in milliseconds + static long GetUpdateInterval(); + + // Can we update this window? + static bool CanUpdate(wxWindow* win); + + // Reset the update time to provide a delay until the next + // time we should update + static void ResetUpdateTime(); + + // Specify how wxWindows will send update events: to + // all windows, or only to those which specify that they + // will process the events. + static void SetMode(wxUpdateUIMode mode); + + // Returns the UI update mode + static wxUpdateUIMode GetMode(); }; //--------------------------------------------------------------------------- @@ -550,7 +667,7 @@ public: class wxPyEvent : public wxEvent { public: - wxPyEvent(int id=0); + wxPyEvent(int winid=0, wxEventType commandType = wxEVT_NULL ); ~wxPyEvent(); %pragma(python) addtomethod = "__init__:self.SetSelf(self)"