]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wx.DatePickerCtrl
authorRobin Dunn <robin@alldunn.com>
Fri, 18 Feb 2005 04:38:30 +0000 (04:38 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 18 Feb 2005 04:38:30 +0000 (04:38 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32127 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/demo/DatePickerCtrl.py [new file with mode: 0644]
wxPython/demo/Dialog.py
wxPython/docs/CHANGES.txt
wxPython/setup.py
wxPython/src/_datectrl.i [new file with mode: 0644]
wxPython/src/_event.i
wxPython/src/calendar.i

diff --git a/wxPython/demo/DatePickerCtrl.py b/wxPython/demo/DatePickerCtrl.py
new file mode 100644 (file)
index 0000000..82eb6ed
--- /dev/null
@@ -0,0 +1,49 @@
+
+import wx
+
+#----------------------------------------------------------------------
+
+class TestPanel(wx.Panel):
+    def __init__(self, parent, log):
+        self.log = log
+        wx.Panel.__init__(self, parent, -1)
+
+        dpc = wx.DatePickerCtrl(self, size=(120,-1),
+                                style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
+        
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(dpc, 0, wx.ALL, 50)
+
+        self.SetSizer(sizer)
+        
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+    win = TestPanel(nb, log)
+    return win
+
+#----------------------------------------------------------------------
+
+
+
+overview = """<html><body>
+<h2><center>wx.DatePickerCtrl</center></h2>
+
+This control allows the user to select a date. Unlike
+wx.calendar.CalendarCtrl, which is a relatively big control,
+wx.DatePickerCtrl 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.
+
+</body></html>
+"""
+
+
+
+if __name__ == '__main__':
+    import sys,os
+    import run
+    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
+
index 5cef4815eac37e039e45e9ec2b7b62a72c0183f0..8897c26e86a40dd35631bda2bea879b28e7a2d7e 100644 (file)
@@ -71,12 +71,13 @@ class TestDialog(wx.Dialog):
         
         btn = wx.Button(self, wx.ID_OK)
         btn.SetHelpText("The OK button completes the dialog")
         
         btn = wx.Button(self, wx.ID_OK)
         btn.SetHelpText("The OK button completes the dialog")
+        btn.SetDefault()
         btnsizer.AddButton(btn)
 
         btn = wx.Button(self, wx.ID_CANCEL)
         btn.SetHelpText("The Cancel button cnacels the dialog. (Cool, huh?)")
         btnsizer.AddButton(btn)
         btnsizer.AddButton(btn)
 
         btn = wx.Button(self, wx.ID_CANCEL)
         btn.SetHelpText("The Cancel button cnacels the dialog. (Cool, huh?)")
         btnsizer.AddButton(btn)
-        btnsizer.Finalise()
+        btnsizer.Realize()
 
         sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
 
 
         sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
 
index d5affae4eb53381e9e2ba6ceeb197876c076d6b5..1ca38daee8ed06b5be79cd2bb1688857de172eb1 100644 (file)
@@ -17,7 +17,7 @@ consecutive (there may be intervening controls). Without this fix, an
 out-of-sync assert is generated when clicking on a radio button and
 then calling GetValue().
 
 out-of-sync assert is generated when clicking on a radio button and
 then calling GetValue().
 
-XRC
+Some XRC changes
     - Added 'icon' property to wxFrame and wxDialog
     - No longer ignores menu bitmaps on non-MSW platforms
     - Notebook page bitmaps are now supported
     - Added 'icon' property to wxFrame and wxDialog
     - No longer ignores menu bitmaps on non-MSW platforms
     - Notebook page bitmaps are now supported
@@ -33,7 +33,7 @@ wx.GetPasswordFromUser dialog function.
 OGL patch from Shane Holloway:
 
     Two simple problems found in the new python ogl code.  First is
 OGL patch from Shane Holloway:
 
     Two simple problems found in the new python ogl code.  First is
-    the patch for _canvas.py.  Essentially:
+    the patch for _canvas.py.  Essentially::
 
         dx = abs(dc.LogicalToDeviceX(x - self._firstDragX))
         dy = abs(dc.LogicalToDeviceY(y - self._firstDragY))
 
         dx = abs(dc.LogicalToDeviceX(x - self._firstDragX))
         dy = abs(dc.LogicalToDeviceY(y - self._firstDragY))
@@ -112,7 +112,7 @@ original patch were changed/removed, so we are still not free of
 patches.  A new patch for SWIG is located in the wxPython/SWIG
 directory of the wxPython source tree.  SWIG 1.3.24 plus this patch
 should be used by anyone who is making custom modifications to
 patches.  A new patch for SWIG is located in the wxPython/SWIG
 directory of the wxPython source tree.  SWIG 1.3.24 plus this patch
 should be used by anyone who is making custom modifications to
-wxPython's *.i files, or building their own extension modules or
+wxPython's .i files, or building their own extension modules or
 etc. that need to interact with the wxPython swigged types.  For the
 morbidly curious, here are a few more details:
 
 etc. that need to interact with the wxPython swigged types.  For the
 morbidly curious, here are a few more details:
 
@@ -170,7 +170,7 @@ and GTK+'s context menu code.
 wxGTK: Applied patch #1100327 for correct feedback from DND actions
 (not all actions are allowed).
 
 wxGTK: Applied patch #1100327 for correct feedback from DND actions
 (not all actions are allowed).
 
-Fixed memory leak in wxGRID::UpdateAttr[Rows][Or][Cols] (patch 1104355)
+Fixed memory leak in wxGrid::UpdateAttr[Rows][Or][Cols] (patch 1104355)
 
 For efficiency reasons, text controls no longer set the string for
 each text updated event, but rather query for the string value only
 
 For efficiency reasons, text controls no longer set the string for
 each text updated event, but rather query for the string value only
@@ -183,9 +183,6 @@ Several patches applied, such as #1111174, #1110252 and others, that
 make the generic wx.TreeCtrl (used on wxGTK and wxMac) be more
 conistent with the wxMSW native wx.TreeCtrl.
 
 make the generic wx.TreeCtrl (used on wxGTK and wxMac) be more
 conistent with the wxMSW native wx.TreeCtrl.
 
-wxMac:  wx.DC implemented using CoreGraphics  
-        ??? NEED MORE DETAILS HERE ???
-
 XRCed:
     * Edit->Locate command (Ctrl-L) for quick selection of items.
       Works with event-handling controls (buttons, text fields) but
 XRCed:
     * Edit->Locate command (Ctrl-L) for quick selection of items.
       Works with event-handling controls (buttons, text fields) but
@@ -198,17 +195,31 @@ wxMac: Fixed a long-standing issue where wxSlider controls with a
 hardcoded size would misplace their labels behind the slider control.
 
 wx.HtmlListBox fixed so calling RefreshLine(s) will cause the data for
 hardcoded size would misplace their labels behind the slider control.
 
 wx.HtmlListBox fixed so calling RefreshLine(s) will cause the data for
-that line to be refetched from the derived class.
+that line to be refetched from the overridden methods in the derived
+class.
 
 The default DoGetBestSize now includes the difference (if any) between
 
 The default DoGetBestSize now includes the difference (if any) between
-the client size and total size of the window.  Code that sets the
-client size using the best size, or that added extra space to sizers
-to compensate for this bug may need to be changed.
+the client size and total size of the window, (such as the size of
+borders.)  Code that sets the client size using the best size, or that
+added extra space to sizers to compensate for this bug may need to be
+changed.
+
+Can suppress themed notebook pages with the wxNB_NOPAGETHEME style or
+setting system option msw.notebook.themed-background to 0.
+
+wxSyledTextCtrl updated to use Scintilla 1.62.
+
+Can now set the msw.window.no-clip-children system option to 1 to
+eliminate weird refresh behaviour (delays between a window being
+erased and repainted, giving a ghostly gradual-redraw effect). May be
+a temporary 'fix' until properly fixed before 2.6.
 
 
-Can suppress themed notebook page with wxNB_NOPAGETHEME or
-setting system option msw.notebook.themed-background to 0
+wxMac: CoreGraphics  [[WRITE MORE HERE]]
 
 
+wxMac:  Toolbar is now more native looking with borderless toolbar
+buttons.  
 
 
+Added wx.DatePickerCtrl.
 
 
 
 
 
 
index 4438af8fb208850971369e1f9cce4a0b3a3d9a55..23e701403f03a67ea6e0d26187ee8a86e3c79306 100755 (executable)
@@ -264,6 +264,7 @@ swig_sources = run_swig(['controls.i'], 'src', GENDIR, PKGDIR,
                           'src/_pycontrol.i',
                           'src/_cshelp.i',
                           'src/_dragimg.i',
                           'src/_pycontrol.i',
                           'src/_cshelp.i',
                           'src/_dragimg.i',
+                          'src/_datectrl.i',
                           ],
                         True)
 ext = Extension('_controls_', swig_sources,
                           ],
                         True)
 ext = Extension('_controls_', swig_sources,
diff --git a/wxPython/src/_datectrl.i b/wxPython/src/_datectrl.i
new file mode 100644 (file)
index 0000000..fa6ded1
--- /dev/null
@@ -0,0 +1,179 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        _datectrl.i
+// Purpose:     SWIG interface defs for wxwxDatePickerCtrl
+//
+// Author:      Robin Dunn
+//
+// Created:     15-Feb-2005
+// RCS-ID:      $Id$
+// Copyright:   (c) 2005 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// Not a %module
+
+
+//---------------------------------------------------------------------------
+
+MAKE_CONST_WXSTRING(DatePickerCtrlNameStr);
+
+//---------------------------------------------------------------------------
+%newgroup
+
+DocStr(wxDatePickerCtrl,
+"This control allows the user to select a date. Unlike
+`wx.calendar.CalendarCtrl`, which is a relatively big control,
+`wx.DatePickerCtrl` 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.", "
+
+Styles
+------
+    =================  ======================================================
+    wx.DP_SPIN         Creates a control without month calendar drop down but
+                       with spin control-like arrows to change individual
+                       date components. This style is not supported by the
+                       generic version.
+
+    wx.DP_DROPDOWN     Creates a control with a month calendar drop down
+                       part from which the user can select a date.
+
+    wx.DP_DEFAULT      Creates a control with default style which is the
+                       best supported for the current platform
+                       (currently wx.DP_SPIN under Windows and
+                       wx.DP_DROPDOWN elsewhere).
+
+    wx.DP_ALLOWNONE    With this style, the control allows the user to not
+                       enter any valid date at all. Without it -- which
+                       is by default -- the control always has some
+                       valid date.
+
+    wx.DP_SHOWCENTURY  Forces display of the century in the default
+                       date format. Without this flas the century
+                       could be displayed or not depending on the
+                       default date representation in the system.
+    =================  ======================================================
+
+Events
+------
+
+    =================  ======================================================
+    EVT_DATE_CHANGED   This event fires when the user changes the current
+                       selection in the control.
+    =================  ======================================================
+
+:see: `wx.calendar.CalendarCtrl`, `wx.DateEvent`
+");
+
+
+
+
+enum
+{
+    wxDP_DEFAULT = 0,
+    wxDP_SPIN = 1,
+    wxDP_DROPDOWN = 2,
+    wxDP_SHOWCENTURY = 4,
+    wxDP_ALLOWNONE = 8
+};
+
+
+MustHaveApp(wxDatePickerCtrl);
+
+class wxDatePickerCtrl : public wxControl
+{
+public:
+    %pythonAppend wxDatePickerCtrl         "self._setOORInfo(self)";
+    %pythonAppend wxDatePickerCtrl()       "";
+
+    DocCtorStr(
+        wxDatePickerCtrl(wxWindow *parent,
+                         wxWindowID id=-1,
+                         const wxDateTime& dt = wxDefaultDateTime,
+                         const wxPoint& pos = wxDefaultPosition,
+                         const wxSize& size = wxDefaultSize,
+                         long style = wxDP_DEFAULT | wxDP_SHOWCENTURY,
+                         const wxValidator& validator = wxDefaultValidator,
+                         const wxString& name = wxPyDatePickerCtrlNameStr),
+        "Create a new DatePickerCtrl.", "");
+
+    
+    DocCtorStrName(
+        wxDatePickerCtrl(),
+        "Precreate a DatePickerCtrl for use in 2-phase creation.", "",
+        PreDatePickerCtrl);
+    
+
+    DocDeclStr(
+        bool , Create(wxWindow *parent,
+                      wxWindowID id=-1,
+                      const wxDateTime& dt = wxDefaultDateTime,
+                      const wxPoint& pos = wxDefaultPosition,
+                      const wxSize& size = wxDefaultSize,
+                      long style = wxDP_DEFAULT | wxDP_SHOWCENTURY,
+                      const wxValidator& validator = wxDefaultValidator,
+                      const wxString& name = wxPyDatePickerCtrlNameStr),
+        "Create the GUI parts of the DatePickerCtrl, for use in 2-phase
+creation.", "");
+    
+
+
+    DocDeclStr(
+        virtual void , SetValue(const wxDateTime& dt),
+        "Changes the current value of the control. The date should be valid and
+included in the currently selected range, if any.
+
+Calling this method does not result in a date change event.", "");
+    
+    DocDeclStr(
+        virtual wxDateTime , GetValue() const,
+        "Returns the currently selected date. If there is no selection or the
+selection is outside of the current range, an invalid `wx.DateTime`
+object is returned.", "");
+    
+
+    DocDeclStr(
+        virtual void , SetRange(const wxDateTime& dt1, const wxDateTime& dt2),
+        "Sets the valid range for the date selection. If dt1 is valid, it
+becomes the earliest date (inclusive) accepted by the control. If dt2
+is valid, it becomes the latest possible date.
+
+If the current value of the control is outside of the newly set range
+bounds, the behaviour is undefined.", "");
+    
+    // virtual bool GetRange(wxDateTime *dt1, wxDateTime *dt2) const;
+
+    %extend {
+        DocStr(
+            GetLowerLimit,
+            "Get the lower limit of the valid range for the date selection, if any.
+If there is no range or there is no lower limit, then the
+`wx.DateTime` value returned will be invalid.", "");
+        wxDateTime GetLowerLimit() {
+            wxDateTime rv;
+            self->GetRange(&rv, NULL);
+            return rv;
+        }
+
+        
+        DocStr(
+            GetUpperLimit,
+            "Get the upper limit of the valid range for the date selection, if any.
+If there is no range or there is no upper limit, then the
+`wx.DateTime` value returned will be invalid.", "");
+        wxDateTime GetUpperLimit() {
+            wxDateTime rv;
+            self->GetRange(NULL, &rv);
+            return rv;
+        }
+    }
+    
+};
+
+
+
+
+//---------------------------------------------------------------------------
+
+
index 8feb6f6934a0f52761f7e7984db7909edc27428f..b564f3ef593466edd104160ae6e79de5751a4995 100644 (file)
@@ -1273,4 +1273,22 @@ public:
 //---------------------------------------------------------------------------
 
 
 //---------------------------------------------------------------------------
 
 
+class wxDateEvent : public wxCommandEvent
+{
+public:
+    wxDateEvent(wxWindow *win, const wxDateTime& dt, wxEventType type);
+
+    const wxDateTime& GetDate() const;
+    void SetDate(const wxDateTime &date);
+
+};
+
 
 
+%constant wxEventType wxEVT_DATE_CHANGED;
+
+%pythoncode {
+    EVT_DATE_CHANGED = wx.PyEventBinder( wxEVT_DATE_CHANGED, 1 )
+}
+
+
+//---------------------------------------------------------------------------
index 7dfc184c9bb70244fe3803af6ba685d293c89831..7225d98553b9628a63b9c49a396357b8b5123b1b 100644 (file)
@@ -109,13 +109,11 @@ public:
 
 class wxCalendarCtrl;
 
 
 class wxCalendarCtrl;
 
-class wxCalendarEvent : public wxCommandEvent
+class wxCalendarEvent : public wxDateEvent
 {
 public:
     wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type);
 
 {
 public:
     wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type);
 
-    const wxDateTime GetDate() const;
-    void SetDate(const wxDateTime &date);
     void SetWeekDay(const wxDateTime::WeekDay wd);
     wxDateTime::WeekDay GetWeekDay() const;
 
     void SetWeekDay(const wxDateTime::WeekDay wd);
     wxDateTime::WeekDay GetWeekDay() const;
 
@@ -174,7 +172,7 @@ and font and without border, but setting custom attributes with
 SetAttr allows to modify its appearance. Just create a custom
 attribute object and set it for the day you want to be displayed
 specially A day may be marked as being a holiday, (even if it is not
 SetAttr allows to modify its appearance. Just create a custom
 attribute object and set it for the day you want to be displayed
 specially A day may be marked as being a holiday, (even if it is not
-recognized as one by wx.DateTime) by using the SetHoliday method.
+recognized as one by `wx.DateTime`) by using the SetHoliday method.
 
 As the attributes are specified for each day, they may change when the
 month is changed, so you will often want to update them in an
 
 As the attributes are specified for each day, they may change when the
 month is changed, so you will often want to update them in an