implemented toggling of wxCAL_MONDAY_FIRST in the native MSW version of wxCalendarCtrl

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2008-04-04 16:35:43 +00:00
parent 82c6027b47
commit db0b0942f8
4 changed files with 35 additions and 5 deletions

View File

@ -50,6 +50,8 @@ public:
wxDateTime *date = NULL,
wxDateTime::WeekDay *wd = NULL);
virtual void SetWindowStyleFlag(long style);
protected:
virtual wxSize wxCalendarCtrl::DoGetBestSize() const;
@ -62,8 +64,13 @@ protected:
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

View File

@ -222,9 +222,9 @@ enum wxCalendarHitTestResult
@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}:
@ -233,7 +233,7 @@ enum wxCalendarHitTestResult
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)
@ -400,7 +400,9 @@ public:
/**
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,
@ -421,6 +423,8 @@ public:
/**
Sets the current date.
The @a date parameter must be valid.
*/
void SetDate(const wxDateTime& date);

View File

@ -269,7 +269,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
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)

View File

@ -87,6 +87,9 @@ wxCalendarCtrl::Create(wxWindow *parent,
if ( !MSWCreateControl(clsname, wxEmptyString, pos, size) )
return false;
// initialize the control
UpdateFirstDayOfWeek();
SetDate(dt.IsValid() ? dt : wxDateTime::Today());
UpdateMarks();
@ -115,12 +118,21 @@ WXDWORD wxCalendarCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
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;
@ -324,6 +336,11 @@ void wxCalendarCtrl::UpdateMarks()
}
}
void wxCalendarCtrl::UpdateFirstDayOfWeek()
{
MonthCal_SetFirstDayOfWeek(GetHwnd(), HasFlag(wxCAL_MONDAY_FIRST) ? 0 : 6);
}
// ----------------------------------------------------------------------------
// wxCalendarCtrl events
// ----------------------------------------------------------------------------