]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/events.i
fix text scrolling in GTK2 (patch 703988)
[wxWidgets.git] / wxPython / src / events.i
index cd34979002fbec314b4d1e55519fddf03562ff79..3c825cbaf5031dce09b3d6bb1bea63938ce9824e 100644 (file)
 
 //---------------------------------------------------------------------------
 
+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;
+
+    // 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();
+   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);
 };
 
 //---------------------------------------------------------------------------
@@ -225,9 +275,9 @@ 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)
@@ -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;
 };
 
 //---------------------------------------------------------------------------
@@ -407,7 +459,7 @@ public:
 
             for (int i=0; i<count; i++) {
 #if wxUSE_UNICODE
-                PyList_SetItem(list, i, PyUnicode_FromUnicode(files[i], files[i].Len()));
+                PyList_SetItem(list, i, PyUnicode_FromWideChar(files[i], files[i].Len()));
 #else
                 PyList_SetItem(list, i, PyString_FromString((const char*)files[i]));
 #endif
@@ -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();
 };
 
 //---------------------------------------------------------------------------
@@ -511,6 +628,18 @@ public:
 
 //---------------------------------------------------------------------------
 
+class wxContextMenuEvent : public wxCommandEvent
+{
+public:
+    wxContextMenuEvent(wxEventType type = wxEVT_NULL,
+                       wxWindowID id = 0,
+                       const wxPoint& pt = wxDefaultPosition);
+    const wxPoint& GetPosition();
+    void SetPosition(const wxPoint& pos);
+};
+
+//----------------------------------------------------------------------
+
 class  wxTimerEvent : public wxEvent
 {
 public:
@@ -538,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)"