added generic version of wxDatePickerCtrl from Andres Pflug
[wxWidgets.git] / include / wx / generic / datectrl.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: generic/datectrl.h
3 // Purpose: generic wxDatePickerCtrl implementation
4 // Author: Andreas Pflug
5 // Modified by:
6 // Created: 2005-01-19
7 // RCS-ID: $Id$
8 // Copyright: (c) 2005 Andreas Pflug <pgadmin@pse-consulting.de>
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_GENERIC_DATECTRL_H_
13 #define _WX_GENERIC_DATECTRL_H_
14
15 class WXDLLIMPEXP_ADV wxCalendarDateAttr;
16 class WXDLLIMPEXP_ADV wxCalendarCtrl;
17 class WXDLLIMPEXP_ADV wxCalendarEvent;
18
19 class WXDLLIMPEXP_ADV wxDatePickerCtrl : public wxDatePickerCtrlBase
20 {
21 public:
22 wxDatePickerCtrl() { Init(); }
23 wxDatePickerCtrl(wxWindow *parent,
24 wxWindowID id,
25 const wxDateTime& date = wxDefaultDateTime,
26 const wxPoint& pos = wxDefaultPosition,
27 const wxSize& size = wxDefaultSize,
28 long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS, const wxString& name=wxDatePickerCtrlNameStr);
29
30 bool Create(wxWindow *parent,
31 wxWindowID id,
32 const wxDateTime& date,
33 const wxPoint& pos,
34 const wxSize& size,
35 long style,
36 const wxString& name=wxDatePickerCtrlNameStr);
37
38 void SetValue(const wxDateTime& date);
39 wxDateTime GetValue() const;
40 bool GetRange(wxDateTime *dt1, wxDateTime *dt2) const;
41 void SetRange(const wxDateTime &dt1, const wxDateTime &dt2);
42
43 bool Destroy();
44
45 bool SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime) { return m_cal->SetLowerDateLimit(date); }
46 const wxDateTime& GetLowerDateLimit() const { return m_cal->GetLowerDateLimit(); }
47 bool SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime) { return m_cal->SetUpperDateLimit(date); }
48 const wxDateTime& GetUpperDateLimit() const { return m_cal->GetUpperDateLimit(); }
49
50 bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime, const wxDateTime& upperdate = wxDefaultDateTime)
51 { return m_cal->SetDateRange(lowerdate, upperdate); }
52
53 wxCalendarDateAttr *GetAttr(size_t day) const { return m_cal->GetAttr(day); }
54 void SetAttr(size_t day, wxCalendarDateAttr *attr) { m_cal->SetAttr(day, attr); }
55 void SetHoliday(size_t day) { m_cal->SetHoliday(day); }
56 void ResetAttr(size_t day) { m_cal->ResetAttr(day); }
57 bool SetFormat(const wxChar *fmt);
58
59 virtual bool Enable(bool enable = TRUE);
60 virtual bool Show(bool show = TRUE);
61
62 virtual wxSize DoGetBestSize() const;
63 virtual void DoMoveWindow(int x, int y, int width, int height);
64
65 private:
66 wxDialog *m_dlg;
67 wxTextCtrl *m_txt;
68 wxCalendarCtrl *m_cal;
69 wxButton *m_btn;
70 wxString m_format;
71
72 bool m_dropped, m_ignoreDrop;
73
74 void Init();
75 void DropDown(bool down=true);
76
77 void OnText(wxCommandEvent &ev);
78 void OnEditKey(wxKeyEvent & event);
79 void OnCalKey(wxKeyEvent & event);
80 void OnClick(wxCommandEvent &ev);
81 void OnSelChange(wxCalendarEvent &ev);
82 void OnSetFocus(wxFocusEvent &ev);
83 void OnKillFocus(wxFocusEvent &ev);
84 void OnChildSetFocus(wxChildFocusEvent &ev);
85
86 DECLARE_DYNAMIC_CLASS(wxDatePickerCtrl)
87 DECLARE_EVENT_TABLE()
88 DECLARE_NO_COPY_CLASS(wxDatePickerCtrl)
89 };
90
91 #endif // _WX_GENERIC_DATECTRL_H_
92