--- /dev/null
+
+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:])
+
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.Finalise()
+ btnsizer.Realize()
sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
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
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))
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:
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
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
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 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.
'src/_pycontrol.i',
'src/_cshelp.i',
'src/_dragimg.i',
+ 'src/_datectrl.i',
],
True)
ext = Extension('_controls_', swig_sources,
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+ }
+ }
+
+};
+
+
+
+
+//---------------------------------------------------------------------------
+
+
//---------------------------------------------------------------------------
+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 )
+}
+
+
+//---------------------------------------------------------------------------
class wxCalendarCtrl;
-class wxCalendarEvent : public wxCommandEvent
+class wxCalendarEvent : public wxDateEvent
{
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;
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