]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/dataview.h
78ddb1d55bf2c7c479eaca4114a0de3502ca85d4
[wxWidgets.git] / include / wx / gtk / dataview.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/gtk/dataview.h
3 // Purpose: wxDataViewCtrl GTK+2 implementation header
4 // Author: Robert Roebling
5 // Id: $Id$
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #ifndef __GTKDATAVIEWCTRLH__
11 #define __GTKDATAVIEWCTRLH__
12
13 #include "wx/defs.h"
14 #include "wx/object.h"
15 #include "wx/list.h"
16 #include "wx/control.h"
17
18 // ---------------------------------------------------------
19 // classes
20 // ---------------------------------------------------------
21
22 class WXDLLIMPEXP_CORE wxDataViewCtrl;
23
24
25 // ---------------------------------------------------------
26 // wxDataViewRenderer
27 // ---------------------------------------------------------
28
29 class wxDataViewRenderer: public wxDataViewRendererBase
30 {
31 public:
32 wxDataViewRenderer( const wxString &varianttype,
33 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
34
35 // implementation
36 void* GetGtkHandle() { return m_renderer; }
37
38 protected:
39 // holds the GTK handle
40 void* m_renderer;
41
42 protected:
43 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer)
44 };
45
46 // ---------------------------------------------------------
47 // wxDataViewTextRenderer
48 // ---------------------------------------------------------
49
50 class wxDataViewTextRenderer: public wxDataViewRenderer
51 {
52 public:
53 wxDataViewTextRenderer( const wxString &varianttype = wxT("string"),
54 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
55
56 bool SetValue( const wxVariant &value );
57 bool GetValue( wxVariant &value );
58
59 protected:
60 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer)
61 };
62
63 // ---------------------------------------------------------
64 // wxDataViewBitmapRenderer
65 // ---------------------------------------------------------
66
67 class wxDataViewBitmapRenderer: public wxDataViewRenderer
68 {
69 public:
70 wxDataViewBitmapRenderer( const wxString &varianttype = wxT("wxBitmap"),
71 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
72
73 bool SetValue( const wxVariant &value );
74 bool GetValue( wxVariant &value );
75
76 protected:
77 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer)
78 };
79
80 // ---------------------------------------------------------
81 // wxDataViewToggleRenderer
82 // ---------------------------------------------------------
83
84 class wxDataViewToggleRenderer: public wxDataViewRenderer
85 {
86 public:
87 wxDataViewToggleRenderer( const wxString &varianttype = wxT("bool"),
88 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
89
90 bool SetValue( const wxVariant &value );
91 bool GetValue( wxVariant &value );
92
93 protected:
94 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer)
95 };
96
97 // ---------------------------------------------------------
98 // wxDataViewCustomRenderer
99 // ---------------------------------------------------------
100
101 class wxDataViewCustomRenderer: public wxDataViewRenderer
102 {
103 public:
104 wxDataViewCustomRenderer( const wxString &varianttype = wxT("string"),
105 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
106 bool no_init = false );
107 virtual ~wxDataViewCustomRenderer();
108 bool Init();
109
110 virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0;
111 virtual wxSize GetSize() = 0;
112
113 virtual bool Activate( wxRect cell,
114 wxDataViewListModel *model, unsigned int col, unsigned int row )
115 { return false; }
116
117 virtual bool LeftClick( wxPoint cursor, wxRect cell,
118 wxDataViewListModel *model, unsigned int col, unsigned int row )
119 { return false; }
120 virtual bool RightClick( wxPoint cursor, wxRect cell,
121 wxDataViewListModel *model, unsigned int col, unsigned int row )
122 { return false; }
123 virtual bool StartDrag( wxPoint cursor, wxRect cell,
124 wxDataViewListModel *model, unsigned int col, unsigned int row )
125 { return false; }
126
127 // Create DC on request
128 virtual wxDC *GetDC();
129
130 private:
131 wxDC *m_dc;
132
133 protected:
134 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
135 };
136
137 // ---------------------------------------------------------
138 // wxDataViewProgressRenderer
139 // ---------------------------------------------------------
140
141 class wxDataViewProgressRenderer: public wxDataViewCustomRenderer
142 {
143 public:
144 wxDataViewProgressRenderer( const wxString &label = wxEmptyString,
145 const wxString &varianttype = wxT("long"),
146 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
147 virtual ~wxDataViewProgressRenderer();
148
149 bool SetValue( const wxVariant &value );
150
151 virtual bool Render( wxRect cell, wxDC *dc, int state );
152 virtual wxSize GetSize();
153
154 private:
155 wxString m_label;
156 int m_value;
157
158 protected:
159 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer)
160 };
161
162 // ---------------------------------------------------------
163 // wxDataViewDateRenderer
164 // ---------------------------------------------------------
165
166 class wxDataViewDateRenderer: public wxDataViewCustomRenderer
167 {
168 public:
169 wxDataViewDateRenderer( const wxString &varianttype = wxT("datetime"),
170 wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE );
171
172 bool SetValue( const wxVariant &value );
173
174 virtual bool Render( wxRect cell, wxDC *dc, int state );
175 virtual wxSize GetSize();
176 virtual bool Activate( wxRect cell,
177 wxDataViewListModel *model, unsigned int col, unsigned int row );
178
179 private:
180 wxDateTime m_date;
181
182 protected:
183 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer)
184 };
185
186 // ---------------------------------------------------------
187 // wxDataViewColumn
188 // ---------------------------------------------------------
189
190 class WXDLLIMPEXP_CORE wxDataViewColumn: public wxDataViewColumnBase
191 {
192 public:
193 wxDataViewColumn( const wxString &title, wxDataViewRenderer *renderer,
194 unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH,
195 wxAlignment align = wxALIGN_CENTER,
196 int flags = wxDATAVIEW_COL_RESIZABLE );
197 wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *renderer,
198 unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH,
199 wxAlignment align = wxALIGN_CENTER,
200 int flags = wxDATAVIEW_COL_RESIZABLE );
201
202 virtual ~wxDataViewColumn();
203
204 virtual void SetTitle( const wxString &title );
205 virtual void SetBitmap( const wxBitmap &bitmap );
206
207 virtual void SetOwner( wxDataViewCtrl *owner );
208
209 virtual void SetAlignment( wxAlignment align );
210
211 virtual void SetSortable( bool sortable );
212 virtual void SetSortOrder( bool ascending );
213
214 virtual bool IsSortable() const;
215 virtual bool IsSortOrderAscending() const;
216
217 virtual int GetWidth() const;
218
219 virtual void SetFixedWidth( int width );
220 virtual int GetFixedWidth() const;
221
222 // implementation
223 void* GetGtkHandle() { return m_column; }
224
225 private:
226 // holds the GTK handle
227 void* m_column;
228
229 // delayed connection to mouse events
230 friend class wxDataViewCtrl;
231 void OnInternalIdle();
232 bool m_isConnected;
233
234 protected:
235 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn)
236 };
237
238 // ---------------------------------------------------------
239 // wxDataViewCtrl
240 // ---------------------------------------------------------
241
242 class WXDLLIMPEXP_CORE wxDataViewCtrl: public wxDataViewCtrlBase
243 {
244 public:
245 wxDataViewCtrl()
246 {
247 Init();
248 }
249
250 wxDataViewCtrl( wxWindow *parent, wxWindowID id,
251 const wxPoint& pos = wxDefaultPosition,
252 const wxSize& size = wxDefaultSize, long style = 0,
253 const wxValidator& validator = wxDefaultValidator )
254 {
255 Create(parent, id, pos, size, style, validator );
256 }
257
258 virtual ~wxDataViewCtrl();
259
260 void Init();
261
262 bool Create(wxWindow *parent, wxWindowID id,
263 const wxPoint& pos = wxDefaultPosition,
264 const wxSize& size = wxDefaultSize, long style = 0,
265 const wxValidator& validator = wxDefaultValidator );
266
267 virtual bool AssociateModel( wxDataViewListModel *model );
268 virtual bool AppendColumn( wxDataViewColumn *col );
269
270 virtual void SetSelection( int row ); // -1 for unselect
271 virtual void SetSelectionRange( unsigned int from, unsigned int to );
272 virtual void SetSelections( const wxArrayInt& aSelections);
273 virtual void Unselect( unsigned int row );
274
275 virtual bool IsSelected( unsigned int row ) const;
276 virtual int GetSelection() const;
277 virtual int GetSelections(wxArrayInt& aSelections) const;
278
279 static wxVisualAttributes
280 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
281
282 private:
283 friend class wxDataViewCtrlDC;
284 friend class wxDataViewColumn;
285 friend class wxGtkDataViewListModelNotifier;
286 GtkWidget *m_treeview;
287 wxDataViewListModelNotifier *m_notifier;
288
289 virtual void OnInternalIdle();
290
291 private:
292 DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)
293 DECLARE_NO_COPY_CLASS(wxDataViewCtrl)
294 };
295
296
297 #endif // __GTKDATAVIEWCTRLH__