]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/event.h
Implement setFont on the iOS port of wxStaticText.
[wxWidgets.git] / interface / wx / event.h
index a6424f51236b5d11a997e168950519868abbf270..a71070392da4a2b29646cc496e255bc8c0c702ca 100644 (file)
@@ -3,7 +3,6 @@
 // Purpose:     interface of wxEvtHandler, wxEventBlocker and many
 //              wxEvent-derived classes
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -113,7 +112,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 +143,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;
 
@@ -523,9 +522,9 @@ public:
 
          @param method The method to call.
          @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.
+            Currently, 0, 1 or 2 parameters can be passed. If you need to pass
+            more than 2 arguments, 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 +535,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 3.0
+     */
+    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 +807,7 @@ public:
         Example:
         @code
         frame->Connect( wxID_EXIT,
-                        wxEVT_COMMAND_MENU_SELECTED,
+                        wxEVT_MENU,
                         wxCommandEventHandler(MyFrame::OnQuit) );
         @endcode
 
@@ -1543,11 +1575,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 +1937,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 +2483,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 +2757,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
@@ -2924,16 +2976,46 @@ public:
 class wxActivateEvent : public wxEvent
 {
 public:
+    /**
+        Specifies the reason for the generation of this event.
+
+        See GetActivationReason().
+
+        @since 3.0
+    */
+    enum Reason
+    {
+        /// Window activated by mouse click.
+        Reason_Mouse,
+        /// Window was activated with some other method than mouse click.
+        Reason_Unknown
+    };
+
     /**
         Constructor.
     */
     wxActivateEvent(wxEventType eventType = wxEVT_NULL, bool active = true,
-                    int id = 0);
+                    int id = 0, Reason ActivationReason = Reason_Unknown);
 
     /**
         Returns @true if the application or window is being activated, @false otherwise.
     */
     bool GetActive() const;
+
+    /**
+        Allows to check if the window was activated by clicking it with the
+        mouse or in some other way.
+
+        This method is currently only implemented in wxMSW and returns @c
+        Reason_Mouse there if the window was activated by a mouse click and @c
+        Reason_Unknown if it was activated in any other way (e.g. from
+        keyboard or programmatically).
+
+        Under all the other platforms, @c Reason_Unknown is always returned.
+
+        @since 3.0
+    */
+    Reason GetActivationReason() const;
 };
 
 
@@ -3416,7 +3498,7 @@ public:
                 wxHelpEvent::Origin origin = Origin_Unknown);
 
     /**
-        Returns the origin of the help event which is one of the ::wxHelpEventOrigin
+        Returns the origin of the help event which is one of the wxHelpEvent::Origin
         values.
 
         The application may handle events generated using the keyboard or mouse
@@ -3832,7 +3914,8 @@ public:
 
     /**
         Sets the flags for this event.
-        The @a flags can be a combination of the ::wxNavigationKeyEventFlags values.
+        The @a flags can be a combination of the 
+        wxNavigationKeyEvent::wxNavigationKeyEventFlags values.
     */
     void SetFlags(long flags);
 
@@ -4401,7 +4484,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 +4626,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 +4732,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 +4744,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