Applied patch [ 650511 ] wxCalendarCtrl - year does not change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20828 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
920b9675d9
commit
605dfd9173
@ -256,6 +256,10 @@ private:
|
|||||||
// if the date isn't visible (-1, -1) is put in (day, week) and false is returned
|
// if the date isn't visible (-1, -1) is put in (day, week) and false is returned
|
||||||
bool GetDateCoord(const wxDateTime& date, int *day, int *week) const;
|
bool GetDateCoord(const wxDateTime& date, int *day, int *week) const;
|
||||||
|
|
||||||
|
// Set the flag for SetDate(): otherwise it would overwrite the year
|
||||||
|
// typed in by the user
|
||||||
|
void SetUserChangedYear() { m_userChangedYear = TRUE; }
|
||||||
|
|
||||||
// the subcontrols
|
// the subcontrols
|
||||||
wxStaticText *m_staticMonth;
|
wxStaticText *m_staticMonth;
|
||||||
wxComboBox *m_comboMonth;
|
wxComboBox *m_comboMonth;
|
||||||
|
@ -78,6 +78,9 @@ public:
|
|||||||
|
|
||||||
void HighlightSpecial(bool on);
|
void HighlightSpecial(bool on);
|
||||||
|
|
||||||
|
void SetDate();
|
||||||
|
void Today();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxCalendarCtrl *m_calendar;
|
wxCalendarCtrl *m_calendar;
|
||||||
wxStaticText *m_date;
|
wxStaticText *m_date;
|
||||||
@ -106,6 +109,9 @@ public:
|
|||||||
void OnCalSeqMonth(wxCommandEvent& event);
|
void OnCalSeqMonth(wxCommandEvent& event);
|
||||||
void OnCalShowSurroundingWeeks(wxCommandEvent& event);
|
void OnCalShowSurroundingWeeks(wxCommandEvent& event);
|
||||||
|
|
||||||
|
void OnSetDate(wxCommandEvent& event);
|
||||||
|
void OnToday(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnAllowYearUpdate(wxUpdateUIEvent& event);
|
void OnAllowYearUpdate(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -132,6 +138,8 @@ enum
|
|||||||
Calendar_Cal_Year,
|
Calendar_Cal_Year,
|
||||||
Calendar_Cal_SeqMonth,
|
Calendar_Cal_SeqMonth,
|
||||||
Calendar_Cal_SurroundWeeks,
|
Calendar_Cal_SurroundWeeks,
|
||||||
|
Calendar_Cal_SetDate,
|
||||||
|
Calendar_Cal_Today,
|
||||||
Calendar_CalCtrl = 1000
|
Calendar_CalCtrl = 1000
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -156,6 +164,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
EVT_MENU(Calendar_Cal_SeqMonth, MyFrame::OnCalSeqMonth)
|
EVT_MENU(Calendar_Cal_SeqMonth, MyFrame::OnCalSeqMonth)
|
||||||
EVT_MENU(Calendar_Cal_SurroundWeeks, MyFrame::OnCalShowSurroundingWeeks)
|
EVT_MENU(Calendar_Cal_SurroundWeeks, MyFrame::OnCalShowSurroundingWeeks)
|
||||||
|
|
||||||
|
EVT_MENU(Calendar_Cal_SetDate, MyFrame::OnSetDate)
|
||||||
|
EVT_MENU(Calendar_Cal_Today, MyFrame::OnToday)
|
||||||
|
|
||||||
|
|
||||||
EVT_UPDATE_UI(Calendar_Cal_Year, MyFrame::OnAllowYearUpdate)
|
EVT_UPDATE_UI(Calendar_Cal_Year, MyFrame::OnAllowYearUpdate)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
@ -238,6 +250,9 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
|||||||
menuCal->Append(Calendar_Cal_Year, _T("&Year can be changed\tCtrl-Y"),
|
menuCal->Append(Calendar_Cal_Year, _T("&Year can be changed\tCtrl-Y"),
|
||||||
_T("Allow changing the year in the calendar"),
|
_T("Allow changing the year in the calendar"),
|
||||||
TRUE);
|
TRUE);
|
||||||
|
menuCal->AppendSeparator();
|
||||||
|
menuCal->Append(Calendar_Cal_SetDate, "SetDate()", "Set date to 2005-12-24.");
|
||||||
|
menuCal->Append(Calendar_Cal_Today, "Today()", "Set the current date.");
|
||||||
|
|
||||||
// now append the freshly created menu to the menu bar...
|
// now append the freshly created menu to the menu bar...
|
||||||
wxMenuBar *menuBar = new wxMenuBar;
|
wxMenuBar *menuBar = new wxMenuBar;
|
||||||
@ -325,6 +340,16 @@ void MyFrame::OnAllowYearUpdate(wxUpdateUIEvent& event)
|
|||||||
event.Enable( GetMenuBar()->IsChecked(Calendar_Cal_Month));
|
event.Enable( GetMenuBar()->IsChecked(Calendar_Cal_Month));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetDate(wxCommandEvent &event)
|
||||||
|
{
|
||||||
|
m_panel->SetDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnToday(wxCommandEvent &event)
|
||||||
|
{
|
||||||
|
m_panel->Today();
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// MyPanel
|
// MyPanel
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -428,3 +453,14 @@ void MyPanel::HighlightSpecial(bool on)
|
|||||||
|
|
||||||
m_calendar->Refresh();
|
m_calendar->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyPanel::SetDate()
|
||||||
|
{
|
||||||
|
wxDateTime date(24, wxDateTime::Dec, 2005, 23, 59, 59);
|
||||||
|
m_calendar->SetDate(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyPanel::Today()
|
||||||
|
{
|
||||||
|
m_calendar->SetDate(wxDateTime::Today());
|
||||||
|
}
|
||||||
|
@ -68,7 +68,11 @@ class wxYearSpinCtrl : public wxSpinCtrl
|
|||||||
public:
|
public:
|
||||||
wxYearSpinCtrl(wxCalendarCtrl *cal);
|
wxYearSpinCtrl(wxCalendarCtrl *cal);
|
||||||
|
|
||||||
void OnYearTextChange(wxCommandEvent& event) { m_cal->OnYearChange(event); }
|
void OnYearTextChange(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
m_cal->SetUserChangedYear();
|
||||||
|
m_cal->OnYearChange(event);
|
||||||
|
}
|
||||||
void OnYearChange(wxSpinEvent& event) { m_cal->OnYearChange(event); }
|
void OnYearChange(wxSpinEvent& event) { m_cal->OnYearChange(event); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -449,8 +453,6 @@ bool wxCalendarCtrl::SetDate(const wxDateTime& date)
|
|||||||
{
|
{
|
||||||
if ( !m_userChangedYear )
|
if ( !m_userChangedYear )
|
||||||
m_spinYear->SetValue(m_date.Format(_T("%Y")));
|
m_spinYear->SetValue(m_date.Format(_T("%Y")));
|
||||||
else // don't overwrite what the user typed in
|
|
||||||
m_userChangedYear = FALSE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -468,6 +470,8 @@ bool wxCalendarCtrl::SetDate(const wxDateTime& date)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_userChangedYear = FALSE;
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1569,10 +1573,6 @@ void wxCalendarCtrl::OnYearChange(wxCommandEvent& event)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the flag for SetDate(): otherwise it would overwrite the year
|
|
||||||
// typed in by the user
|
|
||||||
m_userChangedYear = TRUE;
|
|
||||||
|
|
||||||
wxDateTime::Tm tm = m_date.GetTm();
|
wxDateTime::Tm tm = m_date.GetTm();
|
||||||
|
|
||||||
if ( tm.mday > wxDateTime::GetNumberOfDays(tm.mon, year) )
|
if ( tm.mday > wxDateTime::GetNumberOfDays(tm.mon, year) )
|
||||||
|
Loading…
Reference in New Issue
Block a user