]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/datectrl.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / datectrl.h
index 3ca36d556c6fd4adaa26dfb920b69c447bcabc4f..f08e548e42998fbf304040427ab601fe96f29842 100644 (file)
@@ -3,9 +3,31 @@
 // Purpose:     interface of wxDatePickerCtrl
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+/// wxDatePickerCtrl styles
+enum
+{
+    /// default style on this platform, either wxDP_SPIN or wxDP_DROPDOWN
+    wxDP_DEFAULT = 0,
+
+    /// a spin control-like date picker (not supported in generic version)
+    wxDP_SPIN = 1,
+
+    /// a combobox-like date picker (not supported in mac version)
+    wxDP_DROPDOWN = 2,
+
+    /// always show century in the default date display (otherwise it depends on
+    /// the system date format which may include the century or not)
+    wxDP_SHOWCENTURY = 4,
+
+    /// allow not having any valid date in the control (by default it always has
+    /// some date, today initially if no valid date specified in ctor)
+    wxDP_ALLOWNONE = 8
+};
+
+
 /**
     @class wxDatePickerCtrl
 
@@ -13,8 +35,7 @@
     is a relatively big control, wxDatePickerCtrl is implemented as a small
     window showing the currently selected date. The control can be edited using
     the keyboard, and can also display a popup window for more user-friendly
-    date selection, depending on the styles used and the platform, except
-    PalmOS where date is selected using native dialog.
+    date selection, depending on the styles used and the platform.
 
     It is only available if @c wxUSE_DATEPICKCTRL is set to 1.
 
            style is not supported by the generic version.
     @style{wxDP_DROPDOWN}
            Creates a control with a month calendar drop-down part from which
-           the user can select a date.
+           the user can select a date. This style is not supported in OSX/Cocoa
+           native version.
     @style{wxDP_DEFAULT}
            Creates a control with the style that is best supported for the
-           current platform (currently wxDP_SPIN under Windows and
-           wxDP_DROPDOWN elsewhere).
+           current platform (currently wxDP_SPIN under Windows and OSX/Cocoa
+           and wxDP_DROPDOWN elsewhere).
     @style{wxDP_ALLOWNONE}
            With this style, the control allows the user to not enter any valid
            date at all. Without it - the default - the control always has some
-           valid date.
+           valid date. This style is not supported in OSX/Cocoa native version.
     @style{wxDP_SHOWCENTURY}
            Forces display of the century in the default date format. Without
            this style the century could be displayed, or not, depending on the
-           default date representation in the system.
+           default date representation in the system. This style is not
+           supported in OSX/Cocoa native version currently.
     @endStyleTable
 
-    @beginEventTable{wxDateEvent}
+    As can be seen from the remarks above, most of the control style are only
+    supported in the native MSW implementation. In portable code it's
+    recommended to use @c wxDP_DEFAULT style only, possibly combined with @c
+    wxDP_SHOWCENTURY (this is also the style used by default if none is
+    specified).
+
+    @beginEventEmissionTable{wxDateEvent}
     @event{EVT_DATE_CHANGED(id, func)}
            This event fires when the user changes the current selection in the
            control.
 
     @library{wxadv}
     @category{pickers}
-    <!-- @appearance{datepickerctrl.png} -->
+    @appearance{datepickerctrl}
 
     @see wxCalendarCtrl, wxDateEvent
 */
 class wxDatePickerCtrl : public wxControl
 {
 public:
+    /**
+       Default constructor.
+    */
+    wxDatePickerCtrl();
+    
     /**
         Initializes the object and calls Create() with all the parameters.
     */
@@ -67,6 +101,11 @@ public:
                      const wxString& name = "datectrl");
 
     /**
+        Create the control window.
+
+        This method should only be used for objects created using default
+        constructor.
+
         @param parent
             Parent window, must not be non-@NULL.
         @param id
@@ -81,8 +120,8 @@ public:
             best size by using the height approximately equal to a text control
             and width large enough to show the date string fully.
         @param style
-            The window style, should be left at 0 as there are no special
-            styles for this control in this version.
+            The window style, see the description of the styles in the class
+            documentation.
         @param validator
             Validator which can be used for additional date checks.
         @param name
@@ -105,6 +144,11 @@ public:
         range is set (or only one of the bounds is set), @a dt1 and/or @a dt2
         are set to be invalid.
 
+        Notice that when using a native MSW implementation of this control the
+        lower range is always set, even if SetRange() hadn't been called
+        explicitly, as the native control only supports dates later than year
+        1601.
+
         @param dt1
             Pointer to the object which receives the lower range limit or
             becomes invalid if it is not set. May be @NULL if the caller is not
@@ -115,25 +159,15 @@ public:
         @return @false if no range limits are currently set, @true if at least
                  one bound is set.
     */
-    bool GetRange(wxDateTime* dt1, wxDateTime dt2) const;
+    virtual bool GetRange(wxDateTime* dt1, wxDateTime* dt2) const;
 
     /**
-        Returns the currently selected. If there is no selection or the
-        selection is outside of the current range, an invalid object is
-        returned.
-    */
-    wxDateTime GetValue() const;
+        Returns the currently entered date.
 
-    /**
-        Sets the display format for the date in the control. See wxDateTime for
-        the meaning of format strings.
-
-        @note This function is only available in the generic version of this
-              control. The native version always uses the current system locale.
-
-        @remarks If the format parameter is invalid, the behaviour is undefined.
+        For a control with @c wxDP_ALLOWNONE style the returned value may be
+        invalid if no date is entered, otherwise it is always valid.
     */
-    void SetFormat(const wxChar* format);
+    virtual wxDateTime GetValue() const;
 
     /**
         Sets the valid range for the date selection. If @a dt1 is valid, it
@@ -143,14 +177,17 @@ public:
         @remarks If the current value of the control is outside of the newly
                  set range bounds, the behaviour is undefined.
     */
-    void SetRange(const wxDateTime& dt1, const wxDateTime& dt2);
+    virtual void SetRange(const wxDateTime& dt1, const wxDateTime& dt2);
 
     /**
-        Changes the current value of the control. The date should be valid and
-        included in the currently selected range, if any.
+        Changes the current value of the control.
+
+        The date should be valid unless the control was created with @c
+        wxDP_ALLOWNONE style and included in the currently selected range, if
+        any.
 
         Calling this method does not result in a date change event.
     */
-    void SetValue(const wxDateTime& dt);
+    virtual void SetValue(const wxDateTime& dt);
 };