added API, docs and Win32 implementation of wxDatePickerCtrl

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-01-15 01:31:10 +00:00
parent f38d3607bb
commit feb72429e8
13 changed files with 752 additions and 39 deletions

View File

@@ -2256,6 +2256,8 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
<set var="ADVANCED_CMN_HDR" hints="files"> <set var="ADVANCED_CMN_HDR" hints="files">
wx/calctrl.h wx/calctrl.h
wx/dateevt.h
wx/datectrl.h
wx/dcbuffer.h wx/dcbuffer.h
wx/generic/calctrl.h wx/generic/calctrl.h
wx/generic/grid.h wx/generic/grid.h
@@ -2280,10 +2282,12 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
<set var="ADVANCED_MSW_SRC" hints="files"> <set var="ADVANCED_MSW_SRC" hints="files">
src/common/taskbarcmn.cpp src/common/taskbarcmn.cpp
src/msw/datectrl.cpp
src/msw/sound.cpp src/msw/sound.cpp
src/msw/taskbar.cpp src/msw/taskbar.cpp
</set> </set>
<set var="ADVANCED_MSW_HDR" hints="files"> <set var="ADVANCED_MSW_HDR" hints="files">
wx/msw/datectrl.h
wx/msw/sound.h wx/msw/sound.h
wx/msw/taskbar.h wx/msw/taskbar.h
</set> </set>

View File

@@ -36,6 +36,7 @@ All:
All (GUI): All (GUI):
- added wxDatePickerCtrl
- wxSplitterWindow now supports gravity parameter (Zbigniew Zag<61>rski) - wxSplitterWindow now supports gravity parameter (Zbigniew Zag<61>rski)
- recursive wxSizer::GetItem returns item of given window, sizer or nth index - recursive wxSizer::GetItem returns item of given window, sizer or nth index
- wxLayoutConstraints now use best size, not current size, for AsIs() condition - wxLayoutConstraints now use best size, not current size, for AsIs() condition

View File

@@ -106,18 +106,21 @@ enum wxCalendarHitTestResult
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxCalendarCtrl::wxCalendarCtrl}\label{wxcalendarctrlwxcalendarctrldef} \membersection{wxCalendarCtrl::wxCalendarCtrl}\label{wxcalendarctrlwxcalendarctrldef}
\func{}{wxCalendarCtrl}{\void} \func{}{wxCalendarCtrl}{\void}
Default constructor, use \helpref{Create}{wxcalendarctrlcreate} after it. Default constructor, use \helpref{Create}{wxcalendarctrlcreate} after it.
\membersection{wxCalendarCtrl::wxCalendarCtrl}\label{wxcalendarctrlwxcalendarctrl} \membersection{wxCalendarCtrl::wxCalendarCtrl}\label{wxcalendarctrlwxcalendarctrl}
\func{}{wxCalendarCtrl}{\param{wxWindow* }{parent}, \param{wxWindowID }{id}, \param{const wxDateTime\& }{date = wxDefaultDateTime}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxCAL\_SHOW\_HOLIDAYS}, \param{const wxString\& }{name = wxCalendarNameStr}} \func{}{wxCalendarCtrl}{\param{wxWindow* }{parent}, \param{wxWindowID }{id}, \param{const wxDateTime\& }{date = wxDefaultDateTime}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxCAL\_SHOW\_HOLIDAYS}, \param{const wxString\& }{name = wxCalendarNameStr}}
Does the same as \helpref{Create}{wxcalendarctrlcreate} method. Does the same as \helpref{Create}{wxcalendarctrlcreate} method.
\membersection{wxCalendarCtrl::Create}\label{wxcalendarctrlcreate} \membersection{wxCalendarCtrl::Create}\label{wxcalendarctrlcreate}
\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id}, \param{const wxDateTime\& }{date = wxDefaultDateTime}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxCAL\_SHOW\_HOLIDAYS}, \param{const wxString\& }{name = wxCalendarNameStr}} \func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id}, \param{const wxDateTime\& }{date = wxDefaultDateTime}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxCAL\_SHOW\_HOLIDAYS}, \param{const wxString\& }{name = wxCalendarNameStr}}
@@ -125,24 +128,28 @@ Does the same as \helpref{Create}{wxcalendarctrlcreate} method.
Creates the control. See \helpref{wxWindow}{wxwindowctor} for the meaning of Creates the control. See \helpref{wxWindow}{wxwindowctor} for the meaning of
the parameters and the control overview for the possible styles. the parameters and the control overview for the possible styles.
\membersection{wxCalendarCtrl::\destruct{wxCalendarCtrl}}\label{wxcalendarctrldtor} \membersection{wxCalendarCtrl::\destruct{wxCalendarCtrl}}\label{wxcalendarctrldtor}
\func{}{\destruct{wxCalendarCtrl}}{\void} \func{}{\destruct{wxCalendarCtrl}}{\void}
Destroys the control. Destroys the control.
\membersection{wxCalendarCtrl::SetDate}\label{wxcalendarctrlsetdate} \membersection{wxCalendarCtrl::SetDate}\label{wxcalendarctrlsetdate}
\func{void}{SetDate}{\param{const wxDateTime\& }{date}} \func{void}{SetDate}{\param{const wxDateTime\& }{date}}
Sets the current date. Sets the current date.
\membersection{wxCalendarCtrl::GetDate}\label{wxcalendarctrlgetdate} \membersection{wxCalendarCtrl::GetDate}\label{wxcalendarctrlgetdate}
\constfunc{const wxDateTime\&}{GetDate}{\void} \constfunc{const wxDateTime\&}{GetDate}{\void}
Gets the currently selected date. Gets the currently selected date.
\membersection{wxCalendarCtrl::EnableYearChange}\label{wxcalendarctrlenableyearchange} \membersection{wxCalendarCtrl::EnableYearChange}\label{wxcalendarctrlenableyearchange}
\func{void}{EnableYearChange}{\param{bool }{enable = true}} \func{void}{EnableYearChange}{\param{bool }{enable = true}}
@@ -151,6 +158,7 @@ This function should be used instead of changing {\tt wxCAL\_NO\_YEAR\_CHANGE}
style bit directly. It allows or disallows the user to change the year style bit directly. It allows or disallows the user to change the year
interactively. interactively.
\membersection{wxCalendarCtrl::EnableMonthChange}\label{wxcalendarctrlenablemonthchange} \membersection{wxCalendarCtrl::EnableMonthChange}\label{wxcalendarctrlenablemonthchange}
\func{void}{EnableMonthChange}{\param{bool }{enable = true}} \func{void}{EnableMonthChange}{\param{bool }{enable = true}}
@@ -160,6 +168,7 @@ This function should be used instead of changing
change the month interactively. Note that if the month can not be changed, the change the month interactively. Note that if the month can not be changed, the
year can not be changed neither. year can not be changed neither.
\membersection{wxCalendarCtrl::EnableHolidayDisplay}\label{wxcalendarctrlenableholidaydisplay} \membersection{wxCalendarCtrl::EnableHolidayDisplay}\label{wxcalendarctrlenableholidaydisplay}
\func{void}{EnableHolidayDisplay}{\param{bool }{display = true}} \func{void}{EnableHolidayDisplay}{\param{bool }{display = true}}
@@ -168,12 +177,14 @@ This function should be used instead of changing {\tt wxCAL\_SHOW\_HOLIDAYS}
style bit directly. It enables or disables the special highlighting of the style bit directly. It enables or disables the special highlighting of the
holidays. holidays.
\membersection{wxCalendarCtrl::SetHeaderColours}\label{wxcalendarctrlsetheadercolours} \membersection{wxCalendarCtrl::SetHeaderColours}\label{wxcalendarctrlsetheadercolours}
\func{void}{SetHeaderColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}} \func{void}{SetHeaderColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}}
Set the colours used for painting the weekdays at the top of the control. Set the colours used for painting the weekdays at the top of the control.
\membersection{wxCalendarCtrl::GetHeaderColourFg}\label{wxcalendarctrlgetheadercolourfg} \membersection{wxCalendarCtrl::GetHeaderColourFg}\label{wxcalendarctrlgetheadercolourfg}
\constfunc{const wxColour\&}{GetHeaderColourFg}{\void} \constfunc{const wxColour\&}{GetHeaderColourFg}{\void}
@@ -184,6 +195,7 @@ Gets the foreground colour of the header part of the calendar window.
\helpref{SetHeaderColours}{wxcalendarctrlsetheadercolours} \helpref{SetHeaderColours}{wxcalendarctrlsetheadercolours}
\membersection{wxCalendarCtrl::GetHeaderColourBg}\label{wxcalendarctrlgetheadercolourbg} \membersection{wxCalendarCtrl::GetHeaderColourBg}\label{wxcalendarctrlgetheadercolourbg}
\constfunc{const wxColour\&}{GetHeaderColourBg}{\void} \constfunc{const wxColour\&}{GetHeaderColourBg}{\void}
@@ -194,12 +206,14 @@ Gets the background colour of the header part of the calendar window.
\helpref{SetHeaderColours}{wxcalendarctrlsetheadercolours} \helpref{SetHeaderColours}{wxcalendarctrlsetheadercolours}
\membersection{wxCalendarCtrl::SetHighlightColours}\label{wxcalendarctrlsethighlightcolours} \membersection{wxCalendarCtrl::SetHighlightColours}\label{wxcalendarctrlsethighlightcolours}
\func{void}{SetHighlightColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}} \func{void}{SetHighlightColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}}
Set the colours to be used for highlighting the currently selected date. Set the colours to be used for highlighting the currently selected date.
\membersection{wxCalendarCtrl::GetHighlightColourFg}\label{wxcalendarctrlgethighlightcolourfg} \membersection{wxCalendarCtrl::GetHighlightColourFg}\label{wxcalendarctrlgethighlightcolourfg}
\constfunc{const wxColour\&}{GetHighlightColourFg}{\void} \constfunc{const wxColour\&}{GetHighlightColourFg}{\void}
@@ -210,6 +224,7 @@ Gets the foreground highlight colour.
\helpref{SetHighlightColours}{wxcalendarctrlsethighlightcolours} \helpref{SetHighlightColours}{wxcalendarctrlsethighlightcolours}
\membersection{wxCalendarCtrl::GetHighlightColourBg}\label{wxcalendarctrlgethighlightcolourbg} \membersection{wxCalendarCtrl::GetHighlightColourBg}\label{wxcalendarctrlgethighlightcolourbg}
\constfunc{const wxColour\&}{GetHighlightColourBg}{\void} \constfunc{const wxColour\&}{GetHighlightColourBg}{\void}
@@ -220,6 +235,7 @@ Gets the background highlight colour.
\helpref{SetHighlightColours}{wxcalendarctrlsethighlightcolours} \helpref{SetHighlightColours}{wxcalendarctrlsethighlightcolours}
\membersection{wxCalendarCtrl::SetHolidayColours}\label{wxcalendarctrlsetholidaycolours} \membersection{wxCalendarCtrl::SetHolidayColours}\label{wxcalendarctrlsetholidaycolours}
\func{void}{SetHolidayColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}} \func{void}{SetHolidayColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}}
@@ -227,6 +243,7 @@ Gets the background highlight colour.
Sets the colours to be used for the holidays highlighting (only used if the Sets the colours to be used for the holidays highlighting (only used if the
window style includes {\tt wxCAL\_SHOW\_HOLIDAYS} flag). window style includes {\tt wxCAL\_SHOW\_HOLIDAYS} flag).
\membersection{wxCalendarCtrl::GetHolidayColourFg}\label{wxcalendarctrlgetholidaycolourfg} \membersection{wxCalendarCtrl::GetHolidayColourFg}\label{wxcalendarctrlgetholidaycolourfg}
\constfunc{const wxColour\&}{GetHolidayColourFg}{\void} \constfunc{const wxColour\&}{GetHolidayColourFg}{\void}
@@ -237,6 +254,7 @@ Return the foreground colour currently used for holiday highlighting.
\helpref{SetHolidayColours}{wxcalendarctrlsetholidaycolours} \helpref{SetHolidayColours}{wxcalendarctrlsetholidaycolours}
\membersection{wxCalendarCtrl::GetHolidayColourBg}\label{wxcalendarctrlgetholidaycolourbg} \membersection{wxCalendarCtrl::GetHolidayColourBg}\label{wxcalendarctrlgetholidaycolourbg}
\constfunc{const wxColour\&}{GetHolidayColourBg}{\void} \constfunc{const wxColour\&}{GetHolidayColourBg}{\void}
@@ -247,6 +265,7 @@ Return the background colour currently used for holiday highlighting.
\helpref{SetHolidayColours}{wxcalendarctrlsetholidaycolours} \helpref{SetHolidayColours}{wxcalendarctrlsetholidaycolours}
\membersection{wxCalendarCtrl::GetAttr}\label{wxcalendarctrlgetattr} \membersection{wxCalendarCtrl::GetAttr}\label{wxcalendarctrlgetattr}
\constfunc{wxCalendarDateAttr *}{GetAttr}{\param{size\_t }{day}} \constfunc{wxCalendarDateAttr *}{GetAttr}{\param{size\_t }{day}}
@@ -255,6 +274,7 @@ Returns the attribute for the given date (should be in the range $1\ldots31$).
The returned pointer may be {\tt NULL}. The returned pointer may be {\tt NULL}.
\membersection{wxCalendarCtrl::SetAttr}\label{wxcalendarctrlsetattr} \membersection{wxCalendarCtrl::SetAttr}\label{wxcalendarctrlsetattr}
\func{void}{SetAttr}{\param{size\_t }{day}, \param{wxCalendarDateAttr* }{attr}} \func{void}{SetAttr}{\param{size\_t }{day}, \param{wxCalendarDateAttr* }{attr}}
@@ -263,12 +283,14 @@ Associates the attribute with the specified date (in the range $1\ldots31$).
If the pointer is {\tt NULL}, the items attribute is cleared. If the pointer is {\tt NULL}, the items attribute is cleared.
\membersection{wxCalendarCtrl::SetHoliday}\label{wxcalendarctrlsetholiday} \membersection{wxCalendarCtrl::SetHoliday}\label{wxcalendarctrlsetholiday}
\func{void}{SetHoliday}{\param{size\_t }{day}} \func{void}{SetHoliday}{\param{size\_t }{day}}
Marks the specified day as being a holiday in the current month. Marks the specified day as being a holiday in the current month.
\membersection{wxCalendarCtrl::ResetAttr}\label{wxcalendarctrlresetattr} \membersection{wxCalendarCtrl::ResetAttr}\label{wxcalendarctrlresetattr}
\func{void}{ResetAttr}{\param{size\_t }{day}} \func{void}{ResetAttr}{\param{size\_t }{day}}
@@ -276,6 +298,7 @@ Marks the specified day as being a holiday in the current month.
Clears any attributes associated with the given day (in the range Clears any attributes associated with the given day (in the range
$1\ldots31$). $1\ldots31$).
\membersection{wxCalendarCtrl::HitTest}\label{wxcalendarctrlhittest} \membersection{wxCalendarCtrl::HitTest}\label{wxcalendarctrlhittest}
\func{wxCalendarHitTestResult}{HitTest}{\param{const wxPoint\& }{pos}, \param{wxDateTime* }{date = NULL}, \param{wxDateTime::WeekDay* }{wd = NULL}} \func{wxCalendarHitTestResult}{HitTest}{\param{const wxPoint\& }{pos}, \param{wxDateTime* }{date = NULL}, \param{wxDateTime::WeekDay* }{wd = NULL}}
@@ -312,6 +335,7 @@ enum wxCalendarDateBorder
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxCalendarDateAttr::wxCalendarDateAttr}\label{wxcalendardateattrwxcalendardateattr} \membersection{wxCalendarDateAttr::wxCalendarDateAttr}\label{wxcalendardateattrwxcalendardateattr}
\func{}{wxCalendarDateAttr}{\void} \func{}{wxCalendarDateAttr}{\void}
@@ -322,72 +346,84 @@ enum wxCalendarDateBorder
The constructors. The constructors.
\membersection{wxCalendarDateAttr::SetTextColour}\label{wxcalendardateattrsettextcolour} \membersection{wxCalendarDateAttr::SetTextColour}\label{wxcalendardateattrsettextcolour}
\func{void}{SetTextColour}{\param{const wxColour\& }{colText}} \func{void}{SetTextColour}{\param{const wxColour\& }{colText}}
Sets the text (foreground) colour to use. Sets the text (foreground) colour to use.
\membersection{wxCalendarDateAttr::SetBackgroundColour}\label{wxcalendardateattrsetbackgroundcolour} \membersection{wxCalendarDateAttr::SetBackgroundColour}\label{wxcalendardateattrsetbackgroundcolour}
\func{void}{SetBackgroundColour}{\param{const wxColour\& }{colBack}} \func{void}{SetBackgroundColour}{\param{const wxColour\& }{colBack}}
Sets the text background colour to use. Sets the text background colour to use.
\membersection{wxCalendarDateAttr::SetBorderColour}\label{wxcalendardateattrsetbordercolour} \membersection{wxCalendarDateAttr::SetBorderColour}\label{wxcalendardateattrsetbordercolour}
\func{void}{SetBorderColour}{\param{const wxColour\& }{col}} \func{void}{SetBorderColour}{\param{const wxColour\& }{col}}
Sets the border colour to use. Sets the border colour to use.
\membersection{wxCalendarDateAttr::SetFont}\label{wxcalendardateattrsetfont} \membersection{wxCalendarDateAttr::SetFont}\label{wxcalendardateattrsetfont}
\func{void}{SetFont}{\param{const wxFont\& }{font}} \func{void}{SetFont}{\param{const wxFont\& }{font}}
Sets the font to use. Sets the font to use.
\membersection{wxCalendarDateAttr::SetBorder}\label{wxcalendardateattrsetborder} \membersection{wxCalendarDateAttr::SetBorder}\label{wxcalendardateattrsetborder}
\func{void}{SetBorder}{\param{wxCalendarDateBorder }{border}} \func{void}{SetBorder}{\param{wxCalendarDateBorder }{border}}
Sets the \helpref{border kind}{wxcalendardateattr} Sets the \helpref{border kind}{wxcalendardateattr}
\membersection{wxCalendarDateAttr::SetHoliday}\label{wxcalendardateattrsetholiday} \membersection{wxCalendarDateAttr::SetHoliday}\label{wxcalendardateattrsetholiday}
\func{void}{SetHoliday}{\param{bool }{holiday}} \func{void}{SetHoliday}{\param{bool }{holiday}}
Display the date with this attribute as a holiday. Display the date with this attribute as a holiday.
\membersection{wxCalendarDateAttr::HasTextColour}\label{wxcalendardateattrhastextcolour} \membersection{wxCalendarDateAttr::HasTextColour}\label{wxcalendardateattrhastextcolour}
\constfunc{bool}{HasTextColour}{\void} \constfunc{bool}{HasTextColour}{\void}
Returns {\tt true} if this item has a non default text foreground colour. Returns {\tt true} if this item has a non default text foreground colour.
\membersection{wxCalendarDateAttr::HasBackgroundColour}\label{wxcalendardateattrhasbackgroundcolour} \membersection{wxCalendarDateAttr::HasBackgroundColour}\label{wxcalendardateattrhasbackgroundcolour}
\constfunc{bool}{HasBackgroundColour}{\void} \constfunc{bool}{HasBackgroundColour}{\void}
Returns {\tt true} if this attribute specifies a non default text background colour. Returns {\tt true} if this attribute specifies a non default text background colour.
\membersection{wxCalendarDateAttr::HasBorderColour}\label{wxcalendardateattrhasbordercolour} \membersection{wxCalendarDateAttr::HasBorderColour}\label{wxcalendardateattrhasbordercolour}
\constfunc{bool}{HasBorderColour}{\void} \constfunc{bool}{HasBorderColour}{\void}
Returns {\tt true} if this attribute specifies a non default border colour. Returns {\tt true} if this attribute specifies a non default border colour.
\membersection{wxCalendarDateAttr::HasFont}\label{wxcalendardateattrhasfont} \membersection{wxCalendarDateAttr::HasFont}\label{wxcalendardateattrhasfont}
\constfunc{bool}{HasFont}{\void} \constfunc{bool}{HasFont}{\void}
Returns {\tt true} if this attribute specifies a non default font. Returns {\tt true} if this attribute specifies a non default font.
\membersection{wxCalendarDateAttr::HasBorder}\label{wxcalendardateattrhasborder} \membersection{wxCalendarDateAttr::HasBorder}\label{wxcalendardateattrhasborder}
\constfunc{bool}{HasBorder}{\void} \constfunc{bool}{HasBorder}{\void}
Returns {\tt true} if this attribute specifies a non default (i.e. any) border. Returns {\tt true} if this attribute specifies a non default (i.e. any) border.
\membersection{wxCalendarDateAttr::IsHoliday}\label{wxcalendardateattrisholiday} \membersection{wxCalendarDateAttr::IsHoliday}\label{wxcalendardateattrisholiday}
\constfunc{bool}{IsHoliday}{\void} \constfunc{bool}{IsHoliday}{\void}
@@ -395,53 +431,66 @@ Returns {\tt true} if this attribute specifies a non default (i.e. any) border.
Returns {\tt true} if this attribute specifies that this item should be Returns {\tt true} if this attribute specifies that this item should be
displayed as a holiday. displayed as a holiday.
\membersection{wxCalendarDateAttr::GetTextColour}\label{wxcalendardateattrgettextcolour} \membersection{wxCalendarDateAttr::GetTextColour}\label{wxcalendardateattrgettextcolour}
\constfunc{const wxColour\&}{GetTextColour}{\void} \constfunc{const wxColour\&}{GetTextColour}{\void}
Returns the text colour to use for the item with this attribute. Returns the text colour to use for the item with this attribute.
\membersection{wxCalendarDateAttr::GetBackgroundColour}\label{wxcalendardateattrgetbackgroundcolour} \membersection{wxCalendarDateAttr::GetBackgroundColour}\label{wxcalendardateattrgetbackgroundcolour}
\constfunc{const wxColour\&}{GetBackgroundColour}{\void} \constfunc{const wxColour\&}{GetBackgroundColour}{\void}
Returns the background colour to use for the item with this attribute. Returns the background colour to use for the item with this attribute.
\membersection{wxCalendarDateAttr::GetBorderColour}\label{wxcalendardateattrgetbordercolour} \membersection{wxCalendarDateAttr::GetBorderColour}\label{wxcalendardateattrgetbordercolour}
\constfunc{const wxColour\&}{GetBorderColour}{\void} \constfunc{const wxColour\&}{GetBorderColour}{\void}
Returns the border colour to use for the item with this attribute. Returns the border colour to use for the item with this attribute.
\membersection{wxCalendarDateAttr::GetFont}\label{wxcalendardateattrgetfont} \membersection{wxCalendarDateAttr::GetFont}\label{wxcalendardateattrgetfont}
\constfunc{const wxFont\&}{GetFont}{\void} \constfunc{const wxFont\&}{GetFont}{\void}
Returns the font to use for the item with this attribute. Returns the font to use for the item with this attribute.
\membersection{wxCalendarDateAttr::GetBorder}\label{wxcalendardateattrgetborder} \membersection{wxCalendarDateAttr::GetBorder}\label{wxcalendardateattrgetborder}
\constfunc{wxCalendarDateBorder}{GetBorder}{\void} \constfunc{wxCalendarDateBorder}{GetBorder}{\void}
Returns the \helpref{border}{wxcalendardateattr} to use for the item with this attribute. Returns the \helpref{border}{wxcalendardateattr} to use for the item with this attribute.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxCalendarEvent}}\label{wxcalendarevent} \section{\class{wxCalendarEvent}}\label{wxcalendarevent}
The wxCalendarEvent class is used together with The wxCalendarEvent class is used together with
\helpref{wxCalendarCtrl}{wxcalendarctrl}. \helpref{wxCalendarCtrl}{wxcalendarctrl}.
\wxheading{Derived from}
\helpref{wxDateEvent}{wxdateevent}\\
\helpref{wxCommandEvent}{wxcommandevent}\\
\helpref{wxEvent}{wxevent}\\
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/calctrl.h>
\wxheading{See also} \wxheading{See also}
\helpref{wxCalendarCtrl}{wxcalendarctrl} \helpref{wxCalendarCtrl}{wxcalendarctrl}
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxCalendarEvent::GetDate}\label{wxcalendareventgetdate}
\constfunc{const wxDateTime\&}{GetDate}{\void}
Returns the date. This function may be called for all event types except
{\tt EVT\_CALENDAR\_WEEKDAY\_CLICKED} one for which it doesn't make sense.
\membersection{wxCalendarEvent::GetWeekDay}\label{wxcalendareventgetweekday} \membersection{wxCalendarEvent::GetWeekDay}\label{wxcalendareventgetweekday}
@@ -451,15 +500,11 @@ Returns the week day on which the user clicked in
{\tt EVT\_CALENDAR\_WEEKDAY\_CLICKED} handler. It doesn't make sense to call {\tt EVT\_CALENDAR\_WEEKDAY\_CLICKED} handler. It doesn't make sense to call
this function in other handlers. this function in other handlers.
\membersection{wxCalendarEvent::SetDate}\label{wxcalendareventsetdate}
\func{void}{SetDate}{\param{const wxDateTime\&}{ date}}
Sets the date.
\membersection{wxCalendarEvent::SetWeekDay}\label{wxcalendareventsetweekday} \membersection{wxCalendarEvent::SetWeekDay}\label{wxcalendareventsetweekday}
\func{void}{SetWeekDay}{\param{wxDateTime::WeekDay}{ day}} \func{void}{SetWeekDay}{\param{wxDateTime::WeekDay}{ day}}
Sets the week day. Sets the week day carried by the event, normally only used by the library
internally.

View File

@@ -87,11 +87,12 @@ that are not static can have \helpref{validators}{wxvalidator} associated with t
\twocolitem{\helpref{wxButton}{wxbutton}}{Push button control, displaying text} \twocolitem{\helpref{wxButton}{wxbutton}}{Push button control, displaying text}
\twocolitem{\helpref{wxBitmapButton}{wxbitmapbutton}}{Push button control, displaying a bitmap} \twocolitem{\helpref{wxBitmapButton}{wxbitmapbutton}}{Push button control, displaying a bitmap}
\twocolitem{\helpref{wxToggleButton}{wxtogglebutton}}{A button which stays pressed when clicked by user.} \twocolitem{\helpref{wxToggleButton}{wxtogglebutton}}{A button which stays pressed when clicked by user.}
\twocolitem{\helpref{wxCalendarCtrl}{wxcalendarctrl}}{Date picker control} \twocolitem{\helpref{wxCalendarCtrl}{wxcalendarctrl}}{Control showing an entire calendar month}
\twocolitem{\helpref{wxCheckBox}{wxcheckbox}}{Checkbox control} \twocolitem{\helpref{wxCheckBox}{wxcheckbox}}{Checkbox control}
\twocolitem{\helpref{wxCheckListBox}{wxchecklistbox}}{A listbox with a checkbox to the left of each item} \twocolitem{\helpref{wxCheckListBox}{wxchecklistbox}}{A listbox with a checkbox to the left of each item}
\twocolitem{\helpref{wxChoice}{wxchoice}}{Choice control (a combobox without the editable area)} \twocolitem{\helpref{wxChoice}{wxchoice}}{Choice control (a combobox without the editable area)}
\twocolitem{\helpref{wxComboBox}{wxcombobox}}{A choice with an editable area} \twocolitem{\helpref{wxComboBox}{wxcombobox}}{A choice with an editable area}
\twocolitem{\helpref{wxDatePickerCtrl}{wxdatepickerctrl}}{Small date picker control}
\twocolitem{\helpref{wxGauge}{wxgauge}}{A control to represent a varying quantity, such as time remaining} \twocolitem{\helpref{wxGauge}{wxgauge}}{A control to represent a varying quantity, such as time remaining}
\twocolitem{\helpref{wxGenericDirCtrl}{wxgenericdirctrl}}{A control for displaying a directory tree} \twocolitem{\helpref{wxGenericDirCtrl}{wxgenericdirctrl}}{A control for displaying a directory tree}
\twocolitem{\helpref{wxHtmlListBox}{wxhtmllistbox}}{A listbox showing HTML content} \twocolitem{\helpref{wxHtmlListBox}{wxhtmllistbox}}{A listbox showing HTML content}

View File

@@ -63,6 +63,8 @@
\input dobjcomp.tex \input dobjcomp.tex
\input dobjsmpl.tex \input dobjsmpl.tex
\input datostrm.tex \input datostrm.tex
\input dateevt.tex
\input datectrl.tex
\input datespan.tex \input datespan.tex
\input datetime.tex \input datetime.tex
\input db.tex \input db.tex

154
docs/latex/wx/datectrl.tex Normal file
View File

@@ -0,0 +1,154 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: datectrl.tex
%% Purpose: wxDatePickerCtrl documentation
%% Author: Vadim Zeitlin
%% Created: 2005-01-15
%% RCS-ID: $Id$
%% Copyright: (c) 2005 Vadim Zeitlin
%% License: wxWidgets license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxDatePickerCtrl}}\label{wxdatepickerctrl}
This control allows the user to select a date. Unlike
\helpref{wxCalendarCtrl}{wxcalendarctrl}, which is a relatively big control,
it is implemented as a small window showing the currently selected date and
allowing to edit it directly using the keyboard and may also display a popup
window for more user-friendly date selection, depending on the styles used and
the platform.
\wxheading{Derived from}
\helpref{wxControl}{wxcontrol}\\
\helpref{wxWindow}{wxwindow}\\
\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/dateevt.h>
\wxheading{Event handling}
\twocolwidtha{7cm}%
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf EVT\_DATE\_CHANGED(id, func)}}{This event fires when the user
changes the current selection in the control.}
\end{twocollist}
\wxheading{See also}
\helpref{wxCalendarCtrl}{wxcalendarctrl},\\
\helpref{wxDateEvent}{wxdateevent}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxDatePickerCtrl::wxDatePickerCtrl}\label{wxdatepickerctrlctor}
\func{}{wxDatePickerCtrl}{\param{wxWindow *}{parent},\rtfsp
\param{wxWindowID}{ id},\rtfsp
\param{const wxDateTime\& }{dt = wxDefaultDateTime},\rtfsp
\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
\param{long}{ style = 0},\rtfsp
\param{const wxValidator\& }{validator = wxDefaultValidator},
\param{const wxString\& }{name = ``datectrl"}}
Initializes the object and calls \helpref{Create}{wxdatepickerctrcreate} with
all the parameters.
\membersection{wxDatePickerCtrl::Create}\label{wxdatepickerctrlcreate}
\func{bool}{Create}{\param{wxWindow *}{parent},\rtfsp
\param{wxWindowID}{ id},\rtfsp
\param{const wxDateTime\& }{dt = wxDefaultDateTime},\rtfsp
\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
\param{long}{ style = 0},\rtfsp
\param{const wxValidator\& }{validator = wxDefaultValidator},
\param{const wxString\& }{name = ``datectrl"}}
\wxheading{Parameters}
\docparam{parent}{Parent window, must not be non-\texttt{NULL}.}
\docparam{id}{The identifier for the control.}
\docparam{dt}{The initial value of the control, if an invalid date (such as the
default value) is used, the control is set to today.}
\docparam{pos}{Initial position.}
\docparam{size}{Initial size. If left at default value, the control chooses its
own best size by using the height approximately equal to a text control and
width large enough to show the date string fully.}
\docparam{style}{The window style, should be left at $0$ as there are no
special styles for this control in this version.}
\docparam{validator}{Validator which can be used for additional date checks.}
\docparam{name}{Control name.}
\wxheading{Return value}
\true if the control was successfully created or \false if creation failed.
\membersection{wxDatePickerCtrl::GetRange}\label{wxdatepickerctrlgetrange}
\constfunc{bool}{GetRange}{\param{wxDateTime *}{dt1}, \param{wxDateTime }{*dt2}}
If the control had been previously limited to a range of dates using
\helpref{SetRange()}{wxdatepickerctrlsetrange}, returns the lower and upper
bounds of this range. If no range is set (or only one of the bounds is set),
the \arg{dt1} and/or \arg{dt2} are set to be invalid.
\wxheading{Parameters}
\docparam{dt1}{Pointer to the object which receives the lower range limit or
becomes invalid if it is not set. May be \texttt{NULLL} if the caller is not
interested in lower limit}
\docparam{dt2}{Same as above but for the upper limit}
\wxheading{Return value}
\false if no range limits are currently set, \true if at least one bound is
set.
\membersection{wxDatePickerCtrl::GetValue}\label{wxdatepickerctrlgetvalue}
\constfunc{wxDateTime}{GetValue}{\void}
Returns the currently selected. If there is no selection or the selection is
outside of the current range, an invalid object is returned.
\membersection{wxDatePickerCtrl::SetRange}\label{wxdatepickerctrlsetrange}
\func{void}{SetRange}{\param{const wxDateTime\&}{ dt1}, \param{const wxDateTime\&}{ dt2}}
Sets the valid range for the date selection. If \arg{dt1} is valid, it becomes
the earliest date (inclusive) accepted by the control. If \arg{dt2} is valid,
it becomes the latest possible date.
\wxheading{Remarks}
If the current value of the control is outside of the newly set range bounds,
the behaviour is undefined.
\membersection{wxDatePickerCtrl::SetValue}\label{wxdatepickerctrlsetvalue}
\func{void}{SetValue}{\param{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.

44
docs/latex/wx/dateevt.tex Normal file
View File

@@ -0,0 +1,44 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: dateevt.tex
%% Purpose: wxDateEvent documentation
%% Author: Vadim Zeitlin
%% Created: 2005-01-15
%% RCS-ID: $Id$
%% Copyright: (c) 2005 Vadim Zeitlin
%% License: wxWidgets license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxDateEvent}}\label{wxdateevent}
This event class carries information about a date change and is used together
with \helpref{wxDatePickerCtrl}{wxdatepickerctrl} and serves as a base class
for \helpref{wxCalendarEvent}{wxCalendarEvent}.
\wxheading{Derived from}
\helpref{wxCommandEvent}{wxcommandevent}\\
\helpref{wxEvent}{wxevent}\\
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/dateevt.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxDateEvent::GetDate}\label{wxdateeventgetdate}
\constfunc{const wxDateTime\&}{GetDate}{\void}
Returns the date.
\membersection{wxDateEvent::SetDate}\label{wxdateeventsetdate}
\func{void}{SetDate}{\param{const wxDateTime\&}{ date}}
Sets the date carried by the event, normally only used by the library
internally.

View File

@@ -23,7 +23,7 @@
#if wxUSE_CALENDARCTRL #if wxUSE_CALENDARCTRL
#include "wx/datetime.h" #include "wx/dateevt.h"
#include "wx/colour.h" #include "wx/colour.h"
#include "wx/font.h" #include "wx/font.h"
@@ -161,23 +161,23 @@ private:
class WXDLLIMPEXP_ADV wxCalendarCtrl; class WXDLLIMPEXP_ADV wxCalendarCtrl;
class WXDLLIMPEXP_ADV wxCalendarEvent : public wxCommandEvent class WXDLLIMPEXP_ADV wxCalendarEvent : public wxDateEvent
{ {
friend class wxCalendarCtrl; friend class wxCalendarCtrl;
public: public:
wxCalendarEvent() { Init(); } wxCalendarEvent() { Init(); }
wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type); wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type);
const wxDateTime& GetDate() const { return m_date; }
void SetDate(const wxDateTime &date) { m_date = date; }
void SetWeekDay(const wxDateTime::WeekDay wd) { m_wday = wd; } void SetWeekDay(const wxDateTime::WeekDay wd) { m_wday = wd; }
wxDateTime::WeekDay GetWeekDay() const { return m_wday; } wxDateTime::WeekDay GetWeekDay() const { return m_wday; }
protected: protected:
void Init(); void Init()
{
m_wday = wxDateTime::Inv_WeekDay;
}
private: private:
wxDateTime m_date;
wxDateTime::WeekDay m_wday; wxDateTime::WeekDay m_wday;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxCalendarEvent) DECLARE_DYNAMIC_CLASS_NO_COPY(wxCalendarEvent)
@@ -190,6 +190,14 @@ private:
// so far we only have a generic version, so keep it simple // so far we only have a generic version, so keep it simple
#include "wx/generic/calctrl.h" #include "wx/generic/calctrl.h"
// now we can define the inline ctor using wxCalendarCtrl
inline
wxCalendarEvent::wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type)
: wxDateEvent(cal, cal->GetDate(), type)
{
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// calendar event types and macros for handling them // calendar event types and macros for handling them
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

59
include/wx/datectrl.h Normal file
View File

@@ -0,0 +1,59 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/datectrl.h
// Purpose: implements wxDatePickerCtrl
// Author: Vadim Zeitlin
// Modified by:
// Created: 2005-01-09
// RCS-ID: $Id$
// Copyright: (c) 2005 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DATECTRL_H_
#define _WX_DATECTRL_H_
#include "wx/control.h" // the base class
#include "wx/datetime.h"
#define wxDatePickerCtrlNameStr _T("datectrl")
// ----------------------------------------------------------------------------
// wxDatePickerCtrl: allow the user to enter the date
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_ADV wxDatePickerCtrlBase : public wxControl
{
public:
/*
The derived classes should implement ctor and Create() method with the
following signature:
bool Create(wxWindow *parent,
wxWindowID id,
const wxDateTime& dt = wxDefaultDateTime,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxDatePickerCtrlNameStr);
*/
// set/get the date
virtual void SetValue(const wxDateTime& dt) = 0;
virtual wxDateTime GetValue() const = 0;
// set/get the allowed valid range for the dates, if either/both of them
// are invalid, there is no corresponding limit and if neither is set
// GetRange() returns false
virtual void SetRange(const wxDateTime& dt1, const wxDateTime& dt2) = 0;
virtual bool GetRange(wxDateTime *dt1, wxDateTime *dt2) const = 0;
};
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
#include "wx/msw/datectrl.h"
#else
// TODO: #include "wx/generic/datectrl.h"
#endif
#endif // _WX_DATECTRL_H_

61
include/wx/dateevt.h Normal file
View File

@@ -0,0 +1,61 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/dateevt.h
// Purpose: declares wxDateEvent class
// Author: Vadim Zeitlin
// Modified by:
// Created: 2005-01-10
// RCS-ID: $Id$
// Copyright: (c) 2005 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DATEEVT_H_
#define _WX_DATEEVT_H_
#include "wx/event.h"
#include "wx/datetime.h"
// ----------------------------------------------------------------------------
// wxDateEvent: used by wxCalendarCtrl and wxDatePickerCtrl
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_ADV wxDateEvent : public wxCommandEvent
{
public:
wxDateEvent() { }
wxDateEvent(wxWindow *win, const wxDateTime& dt, wxEventType type)
: wxCommandEvent(type, win->GetId()),
m_date(dt)
{
SetEventObject(win);
}
const wxDateTime& GetDate() const { return m_date; }
void SetDate(const wxDateTime &date) { m_date = date; }
private:
wxDateTime m_date;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDateEvent)
};
// ----------------------------------------------------------------------------
// event types and macros for handling them
// ----------------------------------------------------------------------------
BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_DATE_CHANGED, 1101)
END_DECLARE_EVENT_TYPES()
typedef void (wxEvtHandler::*wxDateEventFunction)(wxDateEvent&);
#define EVT_DATE_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_DATE_CHANGED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) wxStaticCastEvent( wxDateEventFunction, & fn ), (wxObject *) NULL),
#ifdef _WX_DEFINE_DATE_EVENTS_
DEFINE_EVENT_TYPE(wxEVT_DATE_CHANGED)
IMPLEMENT_DYNAMIC_CLASS(wxDateEvent, wxCommandEvent)
#endif
#endif // _WX_DATEEVT_H_

View File

@@ -42,7 +42,12 @@
#endif #endif
#include "wx/sizer.h" #include "wx/sizer.h"
#include "wx/textctrl.h"
#include "wx/calctrl.h" #include "wx/calctrl.h"
#include "wx/datectrl.h"
#define wxUSE_DATEPICKERCTRL 1
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// private classes // private classes
@@ -100,6 +105,10 @@ public:
void OnQuit(wxCommandEvent& event); void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event); void OnAbout(wxCommandEvent& event);
#if wxUSE_DATEPICKERCTRL
void OnAskDate(wxCommandEvent& event);
#endif // wxUSE_DATEPICKERCTRL
void OnCalMonday(wxCommandEvent& event); void OnCalMonday(wxCommandEvent& event);
void OnCalHolidays(wxCommandEvent& event); void OnCalHolidays(wxCommandEvent& event);
void OnCalSpecial(wxCommandEvent& event); void OnCalSpecial(wxCommandEvent& event);
@@ -122,6 +131,29 @@ private:
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
#if wxUSE_DATEPICKERCTRL
// Define a simple modal dialog which asks the user for a date
class MyDialog : public wxDialog
{
public:
MyDialog(wxWindow *parent, const wxDateTime& dt);
wxDateTime GetDate() const { return m_datePicker->GetValue(); }
private:
void OnDateChange(wxDateEvent& event);
wxDatePickerCtrl *m_datePicker;
wxTextCtrl *m_text;
DECLARE_EVENT_TABLE()
};
#endif // wxUSE_DATEPICKERCTRL
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// constants // constants
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -130,8 +162,11 @@ private:
enum enum
{ {
// menu items // menu items
Calendar_File_About = 100, Calendar_File_About = wxID_ABOUT,
Calendar_File_Quit, Calendar_File_Quit = wxID_EXIT,
#if wxUSE_DATEPICKERCTRL
Calendar_File_AskDate = 100,
#endif // wxUSE_DATEPICKERCTRL
Calendar_Cal_Monday = 200, Calendar_Cal_Monday = 200,
Calendar_Cal_Holidays, Calendar_Cal_Holidays,
Calendar_Cal_Special, Calendar_Cal_Special,
@@ -155,6 +190,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Calendar_File_Quit, MyFrame::OnQuit) EVT_MENU(Calendar_File_Quit, MyFrame::OnQuit)
EVT_MENU(Calendar_File_About, MyFrame::OnAbout) EVT_MENU(Calendar_File_About, MyFrame::OnAbout)
#if wxUSE_DATEPICKERCTRL
EVT_MENU(Calendar_File_AskDate, MyFrame::OnAskDate)
#endif // wxUSE_DATEPICKERCTRL
EVT_MENU(Calendar_Cal_Monday, MyFrame::OnCalMonday) EVT_MENU(Calendar_Cal_Monday, MyFrame::OnCalMonday)
EVT_MENU(Calendar_Cal_Holidays, MyFrame::OnCalHolidays) EVT_MENU(Calendar_Cal_Holidays, MyFrame::OnCalHolidays)
EVT_MENU(Calendar_Cal_Special, MyFrame::OnCalSpecial) EVT_MENU(Calendar_Cal_Special, MyFrame::OnCalSpecial)
@@ -180,6 +219,14 @@ BEGIN_EVENT_TABLE(MyPanel, wxPanel)
EVT_CALENDAR_WEEKDAY_CLICKED(Calendar_CalCtrl, MyPanel::OnCalendarWeekDayClick) EVT_CALENDAR_WEEKDAY_CLICKED(Calendar_CalCtrl, MyPanel::OnCalendarWeekDayClick)
END_EVENT_TABLE() END_EVENT_TABLE()
#if wxUSE_DATEPICKERCTRL
BEGIN_EVENT_TABLE(MyDialog, wxDialog)
EVT_DATE_CHANGED(wxID_ANY, MyDialog::OnDateChange)
END_EVENT_TABLE()
#endif // wxUSE_DATEPICKERCTRL
// Create a new application object: this macro will allow wxWidgets to create // Create a new application object: this macro will allow wxWidgets to create
// the application object during program execution (it's better than using a // the application object during program execution (it's better than using a
// static object for many reasons) and also declares the accessor function // static object for many reasons) and also declares the accessor function
@@ -221,6 +268,11 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
// create a menu bar // create a menu bar
wxMenu *menuFile = new wxMenu; wxMenu *menuFile = new wxMenu;
#if wxUSE_DATEPICKERCTRL
menuFile->Append(Calendar_File_AskDate, _T("&Choose date...\tCtrl-D"), _T("Show dialog with wxDatePickerCtrl"));
menuFile->AppendSeparator();
#endif // wxUSE_DATEPICKERCTRL
menuFile->Append(Calendar_File_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); menuFile->Append(Calendar_File_About, _T("&About...\tCtrl-A"), _T("Show about dialog"));
menuFile->AppendSeparator(); menuFile->AppendSeparator();
menuFile->Append(Calendar_File_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); menuFile->Append(Calendar_File_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
@@ -351,6 +403,30 @@ void MyFrame::OnToday(wxCommandEvent &WXUNUSED(event))
m_panel->Today(); m_panel->Today();
} }
#if wxUSE_DATEPICKERCTRL
void MyFrame::OnAskDate(wxCommandEvent& WXUNUSED(event))
{
MyDialog dlg(this, m_panel->GetCal()->GetDate());
if ( dlg.ShowModal() == wxID_OK )
{
const wxDateTime dt = dlg.GetDate(),
today = wxDateTime::Today();
if ( dt.GetDay() == today.GetDay() &&
dt.GetMonth() == today.GetMonth() )
{
wxMessageBox(_T("Happy birthday!"), _T("Calendar Sample"));
}
m_panel->GetCal()->SetDate(dt);
wxLogStatus(_T("Changed the date to your birthday"));
}
}
#endif // wxUSE_DATEPICKERCTRL
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// MyPanel // MyPanel
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -455,3 +531,53 @@ void MyPanel::Today()
{ {
m_calendar->SetDate(wxDateTime::Today()); m_calendar->SetDate(wxDateTime::Today());
} }
// ----------------------------------------------------------------------------
// MyDialog
// ----------------------------------------------------------------------------
#if wxUSE_DATEPICKERCTRL
MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt)
: wxDialog(parent, -1, wxString(_T("Calendar: Choose a date")))
{
wxStdDialogButtonSizer *sizerBtns = new wxStdDialogButtonSizer;
sizerBtns->AddButton(new wxButton(this, wxID_OK));
sizerBtns->AddButton(new wxButton(this, wxID_CANCEL));
sizerBtns->Finalise();
wxSizer *sizerText = new wxBoxSizer(wxHORIZONTAL);
sizerText->Add(new wxStaticText(this, -1, _T("Date in ISO format: ")),
wxSizerFlags().Border());
m_text = new wxTextCtrl(this, -1);
sizerText->Add(m_text, wxSizerFlags().Expand().Border());
wxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
sizerTop->Add(new wxStaticText
(
this, -1,
_T("Enter your birthday date (not before 20th century):")
),
wxSizerFlags().Border());
m_datePicker = new wxDatePickerCtrl(this, -1, dt);
m_datePicker->SetRange(wxDateTime(1, wxDateTime::Jan, 1900),
wxDefaultDateTime);
sizerTop->Add(m_datePicker, wxSizerFlags().Expand().Border());
sizerTop->AddStretchSpacer(1);
sizerTop->Add(sizerText);
sizerTop->Add(sizerBtns, wxSizerFlags().Centre().Border());
SetSizerAndFit(sizerTop);
Layout();
}
void MyDialog::OnDateChange(wxDateEvent& event)
{
m_text->SetValue(event.GetDate().FormatISODate());
}
#endif // wxUSE_DATEPICKERCTRL

View File

@@ -42,6 +42,7 @@
#include "wx/spinctrl.h" #include "wx/spinctrl.h"
#define _WX_DEFINE_DATE_EVENTS_
#include "wx/calctrl.h" #include "wx/calctrl.h"
#define DEBUG_PAINT 0 #define DEBUG_PAINT 0
@@ -162,7 +163,7 @@ wxCONSTRUCTOR_6( wxCalendarCtrl , wxWindow* , Parent , wxWindowID , Id , wxDateT
#else #else
IMPLEMENT_DYNAMIC_CLASS(wxCalendarCtrl, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxCalendarCtrl, wxControl)
#endif #endif
IMPLEMENT_DYNAMIC_CLASS(wxCalendarEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxCalendarEvent, wxDateEvent)
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// events // events
@@ -1820,22 +1821,5 @@ wxCalendarCtrl::GetClassDefaultAttributes(wxWindowVariant variant)
return wxListBox::GetClassDefaultAttributes(variant); return wxListBox::GetClassDefaultAttributes(variant);
} }
// ----------------------------------------------------------------------------
// wxCalendarEvent
// ----------------------------------------------------------------------------
void wxCalendarEvent::Init()
{
m_wday = wxDateTime::Inv_WeekDay;
}
wxCalendarEvent::wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type)
: wxCommandEvent(type, cal->GetId())
{
m_date = cal->GetDate();
SetEventObject(cal);
}
#endif // wxUSE_CALENDARCTRL #endif // wxUSE_CALENDARCTRL

224
src/msw/datectrl.cpp Normal file
View File

@@ -0,0 +1,224 @@
/////////////////////////////////////////////////////////////////////////////
// Name: msw/datectrl.cpp
// Purpose: wxDatePickerCtrl implementation
// Author: Vadim Zeitlin
// Modified by:
// Created: 2005-01-09
// RCS-ID: $Id$
// Copyright: (c) 2005 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#endif
#include "wx/datectrl.h"
#define _WX_DEFINE_DATE_EVENTS_
#include "wx/dateevt.h"
#include "wx/msw/wrapwin.h"
#include "wx/msw/wrapcctl.h"
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// helpers for wxDateTime <-> SYSTEMTIME conversion
// ----------------------------------------------------------------------------
static inline void wxFromSystemTime(wxDateTime *dt, const SYSTEMTIME& st)
{
dt->Set(st.wDay,
wx_static_cast(wxDateTime::Month, wxDateTime::Jan + st.wMonth - 1),
st.wYear,
0, 0, 0);
}
static inline void wxToSystemTime(SYSTEMTIME *st, const wxDateTime& dt)
{
const wxDateTime::Tm tm(dt.GetTm());
st->wYear = tm.year;
st->wMonth = tm.mon - wxDateTime::Jan + 1;
st->wDay = tm.mday;
st->wDayOfWeek =
st->wHour =
st->wMinute =
st->wSecond =
st->wMilliseconds = 0;
}
// ----------------------------------------------------------------------------
// wxDatePickerCtrl creation
// ----------------------------------------------------------------------------
bool
wxDatePickerCtrl::Create(wxWindow *parent,
wxWindowID id,
const wxDateTime& dt,
const wxPoint& pos,
const wxSize& size,
long style,
const wxValidator& validator,
const wxString& name)
{
// initialize the base class
if ( !CreateControl(parent, id, pos, size, style, validator, name) )
return false;
// create the native control
if ( !MSWCreateControl(DATETIMEPICK_CLASS, _T(""), pos, size) )
return false;
if ( dt.IsValid() )
SetValue(dt);
return true;
}
WXDWORD wxDatePickerCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
{
WXDWORD styleMSW = wxDatePickerCtrlBase::MSWGetStyle(style, exstyle);
// for now this is unconditional, but we should support drop down control
// style as well later
styleMSW |= DTS_UPDOWN | DTS_SHORTDATEFORMAT;
return styleMSW;
}
// TODO: handle WM_WININICHANGE
// ----------------------------------------------------------------------------
// wxDatePickerCtrl geometry
// ----------------------------------------------------------------------------
wxSize wxDatePickerCtrl::DoGetBestSize() const
{
const int y = GetCharHeight();
return wxSize(DEFAULT_ITEM_WIDTH, EDIT_HEIGHT_FROM_CHAR_HEIGHT(y));
}
// ----------------------------------------------------------------------------
// wxDatePickerCtrl operations
// ----------------------------------------------------------------------------
void wxDatePickerCtrl::SetValue(const wxDateTime& dt)
{
// as we don't support DTS_SHOWNONE style so far, we don't allow setting
// the control to an invalid date, but this restriction may be lifted in
// the future
wxCHECK_RET( dt.IsValid(), _T("invalid date") );
SYSTEMTIME st;
wxToSystemTime(&st, dt);
if ( !DateTime_SetSystemtime(GetHwnd(), GDT_VALID, &st) )
{
wxLogDebug(_T("DateTime_SetSystemtime() failed"));
}
}
wxDateTime wxDatePickerCtrl::GetValue() const
{
wxDateTime dt;
SYSTEMTIME st;
if ( DateTime_GetSystemtime(GetHwnd(), &st) == GDT_VALID )
{
wxFromSystemTime(&dt, st);
}
return dt;
}
void wxDatePickerCtrl::SetRange(const wxDateTime& dt1, const wxDateTime& dt2)
{
SYSTEMTIME st[2];
DWORD flags = 0;
if ( dt1.IsValid() )
{
wxToSystemTime(&st[0], dt1);
flags |= GDTR_MIN;
}
if ( dt2.IsValid() )
{
wxToSystemTime(&st[1], dt2);
flags |= GDTR_MAX;
}
if ( !DateTime_SetRange(GetHwnd(), flags, st) )
{
wxLogDebug(_T("DateTime_SetRange() failed"));
}
}
bool wxDatePickerCtrl::GetRange(wxDateTime *dt1, wxDateTime *dt2) const
{
SYSTEMTIME st[2];
DWORD flags = DateTime_GetRange(GetHwnd(), st);
if ( dt1 )
{
if ( flags & GDTR_MIN )
wxFromSystemTime(dt1, st[0]);
else
*dt1 = wxDefaultDateTime;
}
if ( dt2 )
{
if ( flags & GDTR_MAX )
wxFromSystemTime(dt2, st[1]);
else
*dt2 = wxDefaultDateTime;
}
return flags != 0;
}
// ----------------------------------------------------------------------------
// wxDatePickerCtrl events
// ----------------------------------------------------------------------------
bool
wxDatePickerCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
{
NMHDR* hdr = (NMHDR *)lParam;
switch ( hdr->code )
{
case DTN_DATETIMECHANGE:
NMDATETIMECHANGE *dtch = (NMDATETIMECHANGE *)hdr;
wxDateTime dt;
if ( dtch->dwFlags == GDT_VALID )
wxFromSystemTime(&dt, dtch->st);
wxDateEvent event(this, dt, wxEVT_DATE_CHANGED);
if ( GetEventHandler()->ProcessEvent(event) )
{
*result = 0;
return true;
}
}
return wxDatePickerCtrlBase::MSWOnNotify(idCtrl, lParam, result);
}