Removed some irritating flags.
[wxWidgets.git] / include / wx / generic / dataview.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/generic/dataview.h
3 // Purpose: wxDataViewCtrl generic implementation header
4 // Author: Robert Roebling
5 // Id: $Id$
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #ifndef __GENERICDATAVIEWCTRLH__
11 #define __GENERICDATAVIEWCTRLH__
12
13 #include "wx/defs.h"
14 #include "wx/object.h"
15 #include "wx/list.h"
16 #include "wx/control.h"
17 #include "wx/scrolwin.h"
18 #include "wx/icon.h"
19
20 // ---------------------------------------------------------
21 // classes
22 // ---------------------------------------------------------
23
24 class WXDLLIMPEXP_ADV wxDataViewCtrl;
25 class WXDLLIMPEXP_ADV wxDataViewMainWindow;
26 class WXDLLIMPEXP_ADV wxDataViewHeaderWindow;
27
28 // ---------------------------------------------------------
29 // wxDataViewCell
30 // ---------------------------------------------------------
31
32 class WXDLLIMPEXP_ADV wxDataViewCell: public wxDataViewCellBase
33 {
34 public:
35 wxDataViewCell( const wxString &varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
36 virtual ~wxDataViewCell();
37
38 virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0;
39 virtual wxSize GetSize() = 0;
40
41 virtual bool Activate( wxRect WXUNUSED(cell),
42 wxDataViewListModel *WXUNUSED(model),
43 size_t WXUNUSED(col),
44 size_t WXUNUSED(row) )
45 { return false; }
46
47 virtual bool LeftClick( wxPoint WXUNUSED(cursor),
48 wxRect WXUNUSED(cell),
49 wxDataViewListModel *WXUNUSED(model),
50 size_t WXUNUSED(col),
51 size_t WXUNUSED(row) )
52 { return false; }
53 virtual bool RightClick( wxPoint WXUNUSED(cursor),
54 wxRect WXUNUSED(cell),
55 wxDataViewListModel *WXUNUSED(model),
56 size_t WXUNUSED(col),
57 size_t WXUNUSED(row) )
58 { return false; }
59 virtual bool StartDrag( wxPoint WXUNUSED(cursor),
60 wxRect WXUNUSED(cell),
61 wxDataViewListModel *WXUNUSED(model),
62 size_t WXUNUSED(col),
63 size_t WXUNUSED(row) )
64 { return false; }
65
66 // Create DC on request
67 virtual wxDC *GetDC();
68
69 private:
70 wxDC *m_dc;
71
72 protected:
73 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCell)
74 };
75
76 // ---------------------------------------------------------
77 // wxDataViewCustomCell
78 // ---------------------------------------------------------
79
80 class WXDLLIMPEXP_ADV wxDataViewCustomCell: public wxDataViewCell
81 {
82 public:
83 wxDataViewCustomCell( const wxString &varianttype = wxT("string"),
84 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
85
86 protected:
87 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomCell)
88 };
89
90 // ---------------------------------------------------------
91 // wxDataViewTextCell
92 // ---------------------------------------------------------
93
94 class WXDLLIMPEXP_ADV wxDataViewTextCell: public wxDataViewCustomCell
95 {
96 public:
97 wxDataViewTextCell( const wxString &varianttype = wxT("string"),
98 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
99
100 bool SetValue( const wxVariant &value );
101 bool GetValue( wxVariant &value );
102
103 bool Render( wxRect cell, wxDC *dc, int state );
104 wxSize GetSize();
105
106 private:
107 wxString m_text;
108
109 protected:
110 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell)
111 };
112
113 // ---------------------------------------------------------
114 // wxDataViewBitmapCell
115 // ---------------------------------------------------------
116
117 class WXDLLIMPEXP_ADV wxDataViewBitmapCell: public wxDataViewCustomCell
118 {
119 public:
120 wxDataViewBitmapCell( const wxString &varianttype = wxT("wxBitmap"),
121 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
122
123 bool SetValue( const wxVariant &value );
124 bool GetValue( wxVariant &value );
125
126 bool Render( wxRect cell, wxDC *dc, int state );
127 wxSize GetSize();
128
129 private:
130 wxIcon m_icon;
131 wxBitmap m_bitmap;
132
133 protected:
134 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapCell)
135 };
136
137 // ---------------------------------------------------------
138 // wxDataViewToggleCell
139 // ---------------------------------------------------------
140
141 class WXDLLIMPEXP_ADV wxDataViewToggleCell: public wxDataViewCustomCell
142 {
143 public:
144 wxDataViewToggleCell( const wxString &varianttype = wxT("bool"),
145 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
146
147 bool SetValue( const wxVariant &value );
148 bool GetValue( wxVariant &value );
149
150 bool Render( wxRect cell, wxDC *dc, int state );
151 bool Activate( wxRect cell, wxDataViewListModel *model, size_t col, size_t row );
152 wxSize GetSize();
153
154 private:
155 bool m_toggle;
156
157 protected:
158 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleCell)
159 };
160
161 // ---------------------------------------------------------
162 // wxDataViewProgressCell
163 // ---------------------------------------------------------
164
165 class WXDLLIMPEXP_ADV wxDataViewProgressCell: public wxDataViewCustomCell
166 {
167 public:
168 wxDataViewProgressCell( const wxString &label = wxEmptyString,
169 const wxString &varianttype = wxT("long"),
170 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
171 virtual ~wxDataViewProgressCell();
172
173 bool SetValue( const wxVariant &value );
174
175 virtual bool Render( wxRect cell, wxDC *dc, int state );
176 virtual wxSize GetSize();
177
178 private:
179 wxString m_label;
180 int m_value;
181
182 protected:
183 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressCell)
184 };
185
186 // ---------------------------------------------------------
187 // wxDataViewDateCell
188 // ---------------------------------------------------------
189
190 class WXDLLIMPEXP_ADV wxDataViewDateCell: public wxDataViewCustomCell
191 {
192 public:
193 wxDataViewDateCell( const wxString &varianttype = wxT("datetime"),
194 wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE );
195
196 bool SetValue( const wxVariant &value );
197
198 virtual bool Render( wxRect cell, wxDC *dc, int state );
199 virtual wxSize GetSize();
200 virtual bool Activate( wxRect cell,
201 wxDataViewListModel *model, size_t col, size_t row );
202
203 private:
204 wxDateTime m_date;
205
206 protected:
207 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateCell)
208 };
209
210 // ---------------------------------------------------------
211 // wxDataViewColumn
212 // ---------------------------------------------------------
213
214 class WXDLLIMPEXP_ADV wxDataViewColumn: public wxDataViewColumnBase
215 {
216 public:
217 wxDataViewColumn( const wxString &title, wxDataViewCell *cell, size_t model_column,
218 int width = 80, int flags = wxDATAVIEW_COL_RESIZABLE );
219 virtual ~wxDataViewColumn();
220
221 virtual void SetTitle( const wxString &title );
222
223 virtual int GetWidth();
224
225 private:
226 int m_width;
227 int m_fixedWidth;
228
229 protected:
230 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn)
231 };
232
233 // ---------------------------------------------------------
234 // wxDataViewCtrl
235 // ---------------------------------------------------------
236
237 class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase,
238 public wxScrollHelperNative
239 {
240 public:
241 wxDataViewCtrl() : wxScrollHelperNative(this)
242 {
243 Init();
244 }
245
246 wxDataViewCtrl( wxWindow *parent, wxWindowID id,
247 const wxPoint& pos = wxDefaultPosition,
248 const wxSize& size = wxDefaultSize, long style = 0,
249 const wxValidator& validator = wxDefaultValidator )
250 : wxScrollHelperNative(this)
251 {
252 Create(parent, id, pos, size, style, validator );
253 }
254
255 virtual ~wxDataViewCtrl();
256
257 void Init();
258
259 bool Create(wxWindow *parent, wxWindowID id,
260 const wxPoint& pos = wxDefaultPosition,
261 const wxSize& size = wxDefaultSize, long style = 0,
262 const wxValidator& validator = wxDefaultValidator );
263
264 virtual bool AssociateModel( wxDataViewListModel *model );
265 virtual bool AppendColumn( wxDataViewColumn *col );
266
267 private:
268 friend class wxDataViewMainWindow;
269 friend class wxDataViewHeaderWindow;
270 wxDataViewListModelNotifier *m_notifier;
271 wxDataViewMainWindow *m_clientArea;
272 wxDataViewHeaderWindow *m_headerArea;
273
274 private:
275 void OnSize( wxSizeEvent &event );
276
277 // we need to return a special WM_GETDLGCODE value to process just the
278 // arrows but let the other navigation characters through
279 #ifdef __WXMSW__
280 virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
281 #endif // __WXMSW__
282
283 WX_FORWARD_TO_SCROLL_HELPER()
284
285 private:
286 DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)
287 DECLARE_NO_COPY_CLASS(wxDataViewCtrl)
288 DECLARE_EVENT_TABLE()
289 };
290
291
292 #endif // __GENERICDATAVIEWCTRLH__