]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/event.h
support for iPhone callbacks
[wxWidgets.git] / interface / wx / event.h
index f9411ad8466b788ba441b3c345683b88204ce189..74655ab7c1dee47921d91745d2a6ebdf2a2a2587 100644 (file)
@@ -113,7 +113,7 @@ public:
             this event.
         @param eventType
             The unique type of event, e.g. @c wxEVT_PAINT, @c wxEVT_SIZE or
-            @c wxEVT_COMMAND_BUTTON_CLICKED.
+            @c wxEVT_BUTTON.
     */
     wxEvent(int id = 0, wxEventType eventType = wxEVT_NULL);
 
@@ -144,7 +144,7 @@ public:
     wxObject* GetEventObject() const;
 
     /**
-        Returns the identifier of the given event type, such as @c wxEVT_COMMAND_BUTTON_CLICKED.
+        Returns the identifier of the given event type, such as @c wxEVT_BUTTON.
     */
     wxEventType GetEventType() const;
 
@@ -525,7 +525,9 @@ public:
          @param x1 The (optional) first parameter to pass to the method.
          @param x2 The (optional) second parameter to pass to the method.
 
-         Note that currently only up to 2 arguments can be passed.
+         Note that currently only up to 2 arguments can be passed. For more
+         complicated needs, you can use the CallAfter<T>(const T& fn) overload
+         that can call any functor.
 
          @note This method is not available with Visual C++ before version 8
                (Visual Studio 2005) as earlier versions of the compiler don't
@@ -536,6 +538,39 @@ public:
     template<typename T, typename T1, ...>
     void CallAfter(void (T::*method)(T1, ...), T1 x1, ...);
 
+    /**
+         Asynchronously call the given functor.
+
+         Calling this function on an object schedules an asynchronous call to
+         the functor specified as CallAfter() argument at a (slightly) later
+         time. This is useful when processing some events as certain actions
+         typically can't be performed inside their handlers, e.g. you shouldn't
+         show a modal dialog from a mouse click event handler as this would
+         break the mouse capture state -- but you can call a function showing
+         this message dialog after the current event handler completes.
+
+         Notice that it is safe to use CallAfter() from other, non-GUI,
+         threads, but that the method will be always called in the main, GUI,
+         thread context.
+
+         This overload is particularly useful in combination with C++11 lambdas:
+         @code
+         wxGetApp().CallAfter([]{
+             wxBell();
+         });
+         @endcode
+
+         @param functor The functor to call.
+
+         @note This method is not available with Visual C++ before version 8
+               (Visual Studio 2005) as earlier versions of the compiler don't
+               have the required support for C++ templates to implement it.
+
+         @since 2.9.6
+     */
+    template<typename T>
+    void CallAfter(const T& functor);
+
     /**
         Processes an event, searching event tables and calling zero or more suitable
         event handler function(s).
@@ -775,7 +810,7 @@ public:
         Example:
         @code
         frame->Connect( wxID_EXIT,
-                        wxEVT_COMMAND_MENU_SELECTED,
+                        wxEVT_MENU,
                         wxCommandEventHandler(MyFrame::OnQuit) );
         @endcode
 
@@ -1512,7 +1547,7 @@ public:
                 else // No Unicode equivalent.
                 {
                     // It's a special key, deal with all the known ones:
-                    switch ( GetKeyCode() )
+                    switch ( event.GetKeyCode() )
                     {
                         case WXK_LEFT:
                         case WXK_RIGHT:
@@ -1543,11 +1578,15 @@ public:
     /**
         Obtains the position (in client coordinates) at which the key was pressed.
 
-        Notice that this position is simply the current mouse pointer position
-        and has no special relationship to the key event itself.
+        Notice that under most platforms this position is simply the current
+        mouse pointer position and has no special relationship to the key event
+        itself.
+
+        @a x and @a y may be @NULL if the corresponding coordinate is not
+        needed.
     */
     wxPoint GetPosition() const;
-    void GetPosition(long* x, long* y) const;
+    void GetPosition(wxCoord* x, wxCoord* y) const;
     //@}
 
     /**
@@ -1901,59 +1940,59 @@ public:
         Process a command for a range of window identifiers, supplying the minimum and
         maximum window identifiers, command event identifier, and member function.
     @event{EVT_BUTTON(id, func)}
-        Process a @c wxEVT_COMMAND_BUTTON_CLICKED command, which is generated by a wxButton control.
+        Process a @c wxEVT_BUTTON command, which is generated by a wxButton control.
     @event{EVT_CHECKBOX(id, func)}
-        Process a @c wxEVT_COMMAND_CHECKBOX_CLICKED command, which is generated by a wxCheckBox control.
+        Process a @c wxEVT_CHECKBOX command, which is generated by a wxCheckBox control.
     @event{EVT_CHOICE(id, func)}
-        Process a @c wxEVT_COMMAND_CHOICE_SELECTED command, which is generated by a wxChoice control.
+        Process a @c wxEVT_CHOICE command, which is generated by a wxChoice control.
     @event{EVT_COMBOBOX(id, func)}
-        Process a @c wxEVT_COMMAND_COMBOBOX_SELECTED command, which is generated by a wxComboBox control.
+        Process a @c wxEVT_COMBOBOX command, which is generated by a wxComboBox control.
     @event{EVT_LISTBOX(id, func)}
-        Process a @c wxEVT_COMMAND_LISTBOX_SELECTED command, which is generated by a wxListBox control.
+        Process a @c wxEVT_LISTBOX command, which is generated by a wxListBox control.
     @event{EVT_LISTBOX_DCLICK(id, func)}
-        Process a @c wxEVT_COMMAND_LISTBOX_DOUBLECLICKED command, which is generated by a wxListBox control.
+        Process a @c wxEVT_LISTBOX_DCLICK command, which is generated by a wxListBox control.
     @event{EVT_CHECKLISTBOX(id, func)}
-        Process a @c wxEVT_COMMAND_CHECKLISTBOX_TOGGLED command, which is generated by a wxCheckListBox control.
+        Process a @c wxEVT_CHECKLISTBOX command, which is generated by a wxCheckListBox control.
     @event{EVT_MENU(id, func)}
-        Process a @c wxEVT_COMMAND_MENU_SELECTED command, which is generated by a menu item.
+        Process a @c wxEVT_MENU command, which is generated by a menu item.
     @event{EVT_MENU_RANGE(id1, id2, func)}
-        Process a @c wxEVT_COMMAND_MENU_RANGE command, which is generated by a range of menu items.
+        Process a @c wxEVT_MENU command, which is generated by a range of menu items.
     @event{EVT_CONTEXT_MENU(func)}
         Process the event generated when the user has requested a popup menu to appear by
         pressing a special keyboard key (under Windows) or by right clicking the mouse.
     @event{EVT_RADIOBOX(id, func)}
-        Process a @c wxEVT_COMMAND_RADIOBOX_SELECTED command, which is generated by a wxRadioBox control.
+        Process a @c wxEVT_RADIOBOX command, which is generated by a wxRadioBox control.
     @event{EVT_RADIOBUTTON(id, func)}
-        Process a @c wxEVT_COMMAND_RADIOBUTTON_SELECTED command, which is generated by a wxRadioButton control.
+        Process a @c wxEVT_RADIOBUTTON command, which is generated by a wxRadioButton control.
     @event{EVT_SCROLLBAR(id, func)}
-        Process a @c wxEVT_COMMAND_SCROLLBAR_UPDATED command, which is generated by a wxScrollBar
+        Process a @c wxEVT_SCROLLBAR command, which is generated by a wxScrollBar
         control. This is provided for compatibility only; more specific scrollbar event macros
         should be used instead (see wxScrollEvent).
     @event{EVT_SLIDER(id, func)}
-        Process a @c wxEVT_COMMAND_SLIDER_UPDATED command, which is generated by a wxSlider control.
+        Process a @c wxEVT_SLIDER command, which is generated by a wxSlider control.
     @event{EVT_TEXT(id, func)}
-        Process a @c wxEVT_COMMAND_TEXT_UPDATED command, which is generated by a wxTextCtrl control.
+        Process a @c wxEVT_TEXT command, which is generated by a wxTextCtrl control.
     @event{EVT_TEXT_ENTER(id, func)}
-        Process a @c wxEVT_COMMAND_TEXT_ENTER command, which is generated by a wxTextCtrl control.
+        Process a @c wxEVT_TEXT_ENTER command, which is generated by a wxTextCtrl control.
         Note that you must use wxTE_PROCESS_ENTER flag when creating the control if you want it
         to generate such events.
     @event{EVT_TEXT_MAXLEN(id, func)}
-        Process a @c wxEVT_COMMAND_TEXT_MAXLEN command, which is generated by a wxTextCtrl control
+        Process a @c wxEVT_TEXT_MAXLEN command, which is generated by a wxTextCtrl control
         when the user tries to enter more characters into it than the limit previously set
         with SetMaxLength().
     @event{EVT_TOGGLEBUTTON(id, func)}
-        Process a @c wxEVT_COMMAND_TOGGLEBUTTON_CLICKED event.
+        Process a @c wxEVT_TOGGLEBUTTON event.
     @event{EVT_TOOL(id, func)}
-        Process a @c wxEVT_COMMAND_TOOL_CLICKED event (a synonym for @c wxEVT_COMMAND_MENU_SELECTED).
+        Process a @c wxEVT_TOOL event (a synonym for @c wxEVT_MENU).
         Pass the id of the tool.
     @event{EVT_TOOL_RANGE(id1, id2, func)}
-        Process a @c wxEVT_COMMAND_TOOL_CLICKED event for a range of identifiers. Pass the ids of the tools.
+        Process a @c wxEVT_TOOL event for a range of identifiers. Pass the ids of the tools.
     @event{EVT_TOOL_RCLICKED(id, func)}
-        Process a @c wxEVT_COMMAND_TOOL_RCLICKED event. Pass the id of the tool.  (Not available on wxOSX.)
+        Process a @c wxEVT_TOOL_RCLICKED event. Pass the id of the tool.  (Not available on wxOSX.)
     @event{EVT_TOOL_RCLICKED_RANGE(id1, id2, func)}
-        Process a @c wxEVT_COMMAND_TOOL_RCLICKED event for a range of ids. Pass the ids of the tools.  (Not available on wxOSX.)
+        Process a @c wxEVT_TOOL_RCLICKED event for a range of ids. Pass the ids of the tools.  (Not available on wxOSX.)
     @event{EVT_TOOL_ENTER(id, func)}
-        Process a @c wxEVT_COMMAND_TOOL_ENTER event. Pass the id of the toolbar itself.
+        Process a @c wxEVT_TOOL_ENTER event. Pass the id of the toolbar itself.
         The value of wxCommandEvent::GetSelection() is the tool id, or -1 if the mouse cursor
         has moved off a tool.  (Not available on wxOSX.)
     @event{EVT_COMMAND_LEFT_CLICK(id, func)}
@@ -2447,8 +2486,8 @@ public:
     wxTextCtrl but other windows can generate these events as well) when its
     content gets copied or cut to, or pasted from the clipboard.
 
-    There are three types of corresponding events @c wxEVT_COMMAND_TEXT_COPY,
-    @c wxEVT_COMMAND_TEXT_CUT and @c wxEVT_COMMAND_TEXT_PASTE.
+    There are three types of corresponding events @c wxEVT_TEXT_COPY,
+    @c wxEVT_TEXT_CUT and @c wxEVT_TEXT_PASTE.
 
     If any of these events is processed (without being skipped) by an event
     handler, the corresponding operation doesn't take place which allows to
@@ -2721,10 +2760,26 @@ public:
 
     /**
         Returns the configured number of lines (or whatever) to be scrolled per
-        wheel action. Defaults to three.
+        wheel action.
+
+        Default value under most platforms is three.
+
+        @see GetColumnsPerAction()
     */
     int GetLinesPerAction() const;
 
+    /**
+        Returns the configured number of columns (or whatever) to be scrolled per
+        wheel action.
+
+        Default value under most platforms is three.
+
+        @see GetLinesPerAction()
+
+        @since 2.9.5
+    */
+    int GetColumnsPerAction() const;
+
     /**
         Returns the logical mouse position in pixels (i.e.\ translated according to the
         translation set for the DC, which usually indicates that the window has been
@@ -4277,7 +4332,7 @@ public:
     @library{wxcore}
     @category{events}
 
-    @see ::wxSetCursor, wxWindow::wxSetCursor
+    @see ::wxSetCursor, wxWindow::SetCursor
 */
 class wxSetCursorEvent : public wxEvent
 {
@@ -4401,7 +4456,7 @@ wxEventType wxNewEventType();
 
     This is mostly used by wxWidgets internally, e.g.
     @code
-    wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEvent)
+    wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_BUTTON, wxCommandEvent)
     @endcode
  */
 #define wxDECLARE_EXPORTED_EVENT( expdecl, name, cls ) \
@@ -4543,24 +4598,24 @@ void wxQueueEvent(wxEvtHandler* dest, wxEvent *event);
 
 #if wxUSE_GUI
 
-wxEventType wxEVT_COMMAND_BUTTON_CLICKED;
-wxEventType wxEVT_COMMAND_CHECKBOX_CLICKED;
-wxEventType wxEVT_COMMAND_CHOICE_SELECTED;
-wxEventType wxEVT_COMMAND_LISTBOX_SELECTED;
-wxEventType wxEVT_COMMAND_LISTBOX_DOUBLECLICKED;
-wxEventType wxEVT_COMMAND_CHECKLISTBOX_TOGGLED;
-wxEventType wxEVT_COMMAND_MENU_SELECTED;
-wxEventType wxEVT_COMMAND_SLIDER_UPDATED;
-wxEventType wxEVT_COMMAND_RADIOBOX_SELECTED;
-wxEventType wxEVT_COMMAND_RADIOBUTTON_SELECTED;
-wxEventType wxEVT_COMMAND_SCROLLBAR_UPDATED;
-wxEventType wxEVT_COMMAND_VLBOX_SELECTED;
-wxEventType wxEVT_COMMAND_COMBOBOX_SELECTED;
-wxEventType wxEVT_COMMAND_TOOL_RCLICKED;
-wxEventType wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED;
-wxEventType wxEVT_COMMAND_TOOL_ENTER;
-wxEventType wxEVT_COMMAND_COMBOBOX_DROPDOWN;
-wxEventType wxEVT_COMMAND_COMBOBOX_CLOSEUP;
+wxEventType wxEVT_BUTTON;
+wxEventType wxEVT_CHECKBOX;
+wxEventType wxEVT_CHOICE;
+wxEventType wxEVT_LISTBOX;
+wxEventType wxEVT_LISTBOX_DCLICK;
+wxEventType wxEVT_CHECKLISTBOX;
+wxEventType wxEVT_MENU;
+wxEventType wxEVT_SLIDER;
+wxEventType wxEVT_RADIOBOX;
+wxEventType wxEVT_RADIOBUTTON;
+wxEventType wxEVT_SCROLLBAR;
+wxEventType wxEVT_VLBOX;
+wxEventType wxEVT_COMBOBOX;
+wxEventType wxEVT_TOOL_RCLICKED;
+wxEventType wxEVT_TOOL_DROPDOWN;
+wxEventType wxEVT_TOOL_ENTER;
+wxEventType wxEVT_COMBOBOX_DROPDOWN;
+wxEventType wxEVT_COMBOBOX_CLOSEUP;
 wxEventType wxEVT_THREAD;
 wxEventType wxEVT_LEFT_DOWN;
 wxEventType wxEVT_LEFT_UP;
@@ -4649,9 +4704,9 @@ wxEventType wxEVT_MOVING;
 wxEventType wxEVT_MOVE_START;
 wxEventType wxEVT_MOVE_END;
 wxEventType wxEVT_HIBERNATE;
-wxEventType wxEVT_COMMAND_TEXT_COPY;
-wxEventType wxEVT_COMMAND_TEXT_CUT;
-wxEventType wxEVT_COMMAND_TEXT_PASTE;
+wxEventType wxEVT_TEXT_COPY;
+wxEventType wxEVT_TEXT_CUT;
+wxEventType wxEVT_TEXT_PASTE;
 wxEventType wxEVT_COMMAND_LEFT_CLICK;
 wxEventType wxEVT_COMMAND_LEFT_DCLICK;
 wxEventType wxEVT_COMMAND_RIGHT_CLICK;
@@ -4661,9 +4716,7 @@ wxEventType wxEVT_COMMAND_KILL_FOCUS;
 wxEventType wxEVT_COMMAND_ENTER;
 wxEventType wxEVT_HELP;
 wxEventType wxEVT_DETAILED_HELP;
-wxEventType wxEVT_COMMAND_TEXT_UPDATED;
-wxEventType wxEVT_COMMAND_TEXT_ENTER;
-wxEventType wxEVT_COMMAND_TOOL_CLICKED;
+wxEventType wxEVT_TOOL;
 wxEventType wxEVT_WINDOW_MODAL_DIALOG_CLOSED;
 
 #endif // wxUSE_GUI