wxDateTime *date = NULL,
wxDateTime::WeekDay *wd = NULL);
+ virtual void SetWindowStyleFlag(long style);
+
protected:
virtual wxSize wxCalendarCtrl::DoGetBestSize() const;
private:
void Init() { m_marks = 0; }
+ // bring the control in sync with m_marks
void UpdateMarks();
+ // set first day of week in the control to correspond to our
+ // wxCAL_MONDAY_FIRST flag
+ void UpdateFirstDayOfWeek();
+
// current date, we need to store it instead of simply retrieving it from
// the control as needed in order to be able to generate the correct events
@beginStyleTable
@style{wxCAL_SUNDAY_FIRST}:
- Show Sunday as the first day in the week (only generic)
+ Show Sunday as the first day in the week (not in wxGTK)
@style{wxCAL_MONDAY_FIRST}:
- Show Monday as the first day in the week (only generic)
+ Show Monday as the first day in the week (not in wxGTK)
@style{wxCAL_SHOW_HOLIDAYS}:
Highlight holidays in the calendar (only generic)
@style{wxCAL_NO_YEAR_CHANGE}:
Disable the month (and, implicitly, the year) changing
@style{wxCAL_SHOW_SURROUNDING_WEEKS}:
Show the neighbouring weeks in the previous and next months
- (only generic)
+ (only generic, always on for the native controls)
@style{wxCAL_SEQUENTIAL_MONTH_SELECTION}:
Use alternative, more compact, style for the month and year
selection controls. (only generic)
/**
Returns one of wxCalendarHitTestResult constants and fills either
@a date or @a wd pointer with the corresponding value depending on the
- hit test code. Only in generic wxCalendarCtrl.
+ hit test code.
+
+ Not implemented in wxGTK currently.
*/
wxCalendarHitTestResult HitTest(const wxPoint& pos,
wxDateTime* date = NULL,
/**
Sets the current date.
+
+ The @a date parameter must be valid.
*/
void SetDate(const wxDateTime& date);
EVT_UPDATE_UI(Calendar_Cal_SeqMonth, MyFrame::OnUpdateUIGenericOnly)
+#ifdef __WXGTK20__
EVT_UPDATE_UI(Calendar_Cal_Monday, MyFrame::OnUpdateUIGenericOnly)
+#endif
EVT_UPDATE_UI(Calendar_Cal_Holidays, MyFrame::OnUpdateUIGenericOnly)
EVT_UPDATE_UI(Calendar_Cal_Special, MyFrame::OnUpdateUIGenericOnly)
EVT_UPDATE_UI(Calendar_Cal_SurroundWeeks, MyFrame::OnUpdateUIGenericOnly)
if ( !MSWCreateControl(clsname, wxEmptyString, pos, size) )
return false;
+ // initialize the control
+ UpdateFirstDayOfWeek();
+
SetDate(dt.IsValid() ? dt : wxDateTime::Today());
UpdateMarks();
return styleMSW;
}
-// TODO: handle WM_WININICHANGE
+void wxCalendarCtrl::SetWindowStyleFlag(long style)
+{
+ const bool hadMondayFirst = HasFlag(wxCAL_MONDAY_FIRST);
+
+ wxCalendarCtrlBase::SetWindowStyleFlag(style);
+
+ if ( HasFlag(wxCAL_MONDAY_FIRST) != hadMondayFirst )
+ UpdateFirstDayOfWeek();
+}
// ----------------------------------------------------------------------------
// wxCalendarCtrl geometry
// ----------------------------------------------------------------------------
+// TODO: handle WM_WININICHANGE
wxSize wxCalendarCtrl::DoGetBestSize() const
{
RECT rc;
}
}
+void wxCalendarCtrl::UpdateFirstDayOfWeek()
+{
+ MonthCal_SetFirstDayOfWeek(GetHwnd(), HasFlag(wxCAL_MONDAY_FIRST) ? 0 : 6);
+}
+
// ----------------------------------------------------------------------------
// wxCalendarCtrl events
// ----------------------------------------------------------------------------