1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/gtk/calctrl.h
3 // Purpose:     wxGtkCalendarCtrl control
4 // Author:      Marcin Wojdyr
5 // Copyright:   (C) 2008 Marcin Wojdyr
6 // Licence:     wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
8 
9 #ifndef GTK_CALCTRL_H__
10 #define GTK_CALCTRL_H__
11 
12 class WXDLLIMPEXP_ADV wxGtkCalendarCtrl : public wxCalendarCtrlBase
13 {
14 public:
wxGtkCalendarCtrl()15     wxGtkCalendarCtrl() {}
16     wxGtkCalendarCtrl(wxWindow *parent,
17                           wxWindowID id,
18                           const wxDateTime& date = wxDefaultDateTime,
19                           const wxPoint& pos = wxDefaultPosition,
20                           const wxSize& size = wxDefaultSize,
21                           long style = wxCAL_SHOW_HOLIDAYS,
22                           const wxString& name = wxCalendarNameStr)
23     {
24         Create(parent, id, date, pos, size, style, name);
25     }
26 
27     bool Create(wxWindow *parent,
28                 wxWindowID id,
29                 const wxDateTime& date = wxDefaultDateTime,
30                 const wxPoint& pos = wxDefaultPosition,
31                 const wxSize& size = wxDefaultSize,
32                 long style = wxCAL_SHOW_HOLIDAYS,
33                 const wxString& name = wxCalendarNameStr);
34 
~wxGtkCalendarCtrl()35     virtual ~wxGtkCalendarCtrl() {}
36 
37     virtual bool SetDate(const wxDateTime& date);
38     virtual wxDateTime GetDate() const;
39 
40     virtual bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime,
41                               const wxDateTime& upperdate = wxDefaultDateTime);
42     virtual bool GetDateRange(wxDateTime *lowerdate, wxDateTime *upperdate) const;
43 
44     virtual bool EnableMonthChange(bool enable = true);
45 
46     virtual void Mark(size_t day, bool mark);
47 
48     // implementation
49     // --------------
50 
51     void GTKGenerateEvent(wxEventType type);
52 
53 private:
54     bool IsInValidRange(const wxDateTime& dt) const;
55 
56     // Range of the dates that can be selected by user, either or both may be
57     // invalid to indicate that no corresponding restriction is set.
58     wxDateTime m_validStart,
59                m_validEnd;
60 
61     // Last known selected date, may be different from the real selection in
62     // the control while a handler for day-selected is running.
63     wxDateTime m_selectedDate;
64 
65     DECLARE_DYNAMIC_CLASS(wxGtkCalendarCtrl)
66     wxDECLARE_NO_COPY_CLASS(wxGtkCalendarCtrl);
67 };
68 
69 #endif // GTK_CALCTRL_H__
70