#endif // wxUSE_DATEPICKCTRL_GENERIC
#endif // wxUSE_DATEPICKCTRL
+// the application icon (under Windows and OS/2 it is in resources and even
+// though we could still include the XPM here it would be unused)
+#if !defined(__WXMSW__) && !defined(__WXPM__)
+ #include "../sample.xpm"
+#endif
+
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
Calendar_DatePicker_AskDate = 300,
Calendar_DatePicker_ShowCentury,
Calendar_DatePicker_DropDown,
+ Calendar_DatePicker_AllowNone,
#if wxUSE_DATEPICKCTRL_GENERIC
Calendar_DatePicker_Generic,
#endif // wxUSE_DATEPICKCTRL_GENERIC
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, wxID_ANY, title, pos, size)
{
+ // set the frame icon
+ SetIcon(wxICON(sample));
+
// create a menu bar
wxMenu *menuFile = new wxMenu;
menuFile->Append(Calendar_File_About, _T("&About...\tCtrl-A"), _T("Show about dialog"));
_T("Al&ways show century"));
menuDate->AppendCheckItem(Calendar_DatePicker_DropDown,
_T("Use &drop down control"));
+ menuDate->AppendCheckItem(Calendar_DatePicker_AllowNone,
+ _T("Allow &no date"));
#if wxUSE_DATEPICKCTRL_GENERIC
menuDate->AppendCheckItem(Calendar_DatePicker_Generic,
_T("Use &generic version of the control"));
style |= wxDP_SHOWCENTURY;
if ( GetMenuBar()->IsChecked(Calendar_DatePicker_DropDown) )
style |= wxDP_DROPDOWN;
+ if ( GetMenuBar()->IsChecked(Calendar_DatePicker_AllowNone) )
+ style |= wxDP_ALLOWNONE;
MyDialog dlg(this, m_panel->GetCal()->GetDate(), style);
if ( dlg.ShowModal() == wxID_OK )
{
- const wxDateTime dt = dlg.GetDate(),
- today = wxDateTime::Today();
-
- if ( dt.GetDay() == today.GetDay() &&
- dt.GetMonth() == today.GetMonth() )
+ const wxDateTime dt = dlg.GetDate();
+ if ( dt.IsValid() )
{
- wxMessageBox(_T("Happy birthday!"), _T("Calendar Sample"));
- }
+ const wxDateTime today = wxDateTime::Today();
- m_panel->GetCal()->SetDate(dt);
+ if ( dt.GetDay() == today.GetDay() &&
+ dt.GetMonth() == today.GetMonth() )
+ {
+ wxMessageBox(_T("Happy birthday!"), _T("Calendar Sample"));
+ }
- wxLogStatus(_T("Changed the date to your birthday"));
+ m_panel->GetCal()->SetDate(dt);
+
+ wxLogStatus(_T("Changed the date to your input"));
+ }
+ else
+ {
+ wxLogStatus(_T("No date entered"));
+ }
}
}
#include "wx/msw/wrapcctl.h"
#include "wx/msw/private.h"
-#if defined(__GNUWIN32__) && ! wxCHECK_W32API_VERSION( 2, 4 )
+#if defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 2, 4 )
typedef struct tagNMDATETIMECHANGE
{
NMHDR nmhdr;
DWORD dwFlags;
SYSTEMTIME st;
-} NMDATETIMECHANGE, FAR * LPNMDATETIMECHANGE;
+} NMDATETIMECHANGE;
+#endif // old gcc headers
+
+// apparently some versions of mingw define these macros erroneously
+#ifndef DateTime_GetSystemtime
+ #define DateTime_GetSystemtime DateTime_GetSystemTime
+#endif
+
+#ifndef DateTime_SetSystemtime
+ #define DateTime_SetSystemtime DateTime_SetSystemTime
#endif
// ============================================================================
#endif // DTS_SHORTDATECENTURYFORMAT
styleMSW |= DTS_SHORTDATEFORMAT;
+ if ( style & wxDP_ALLOWNONE )
+ styleMSW |= DTS_SHOWNONE;
+
return styleMSW;
}
// wxDatePickerCtrl operations
// ----------------------------------------------------------------------------
-#ifndef DateTime_GetSystemtime
- #define DateTime_GetSystemtime DateTime_GetSystemTime
-#endif
-
-#ifndef DateTime_SetSystemtime
- #define DateTime_SetSystemtime DateTime_SetSystemTime
-#endif
-
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") );
+ wxCHECK_RET( dt.IsValid() || HasFlag(wxDP_ALLOWNONE),
+ _T("this control requires a valid date") );
SYSTEMTIME st;
- wxToSystemTime(&st, dt);
- if ( !DateTime_SetSystemtime(GetHwnd(), GDT_VALID, &st) )
+ if ( dt.IsValid() )
+ wxToSystemTime(&st, dt);
+ if ( !DateTime_SetSystemtime(GetHwnd(),
+ dt.IsValid() ? GDT_VALID : GDT_NONE,
+ &st) )
{
wxLogDebug(_T("DateTime_SetSystemtime() failed"));
}