]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/dataview.h
Easier platform testing class and function
[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 // wxDataViewCell
26 // ---------------------------------------------------------
27
28 class wxDataViewCell: public wxDataViewCellBase
29 {
30 public:
31 wxDataViewCell( const wxString &varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
32
33 // implementation
34 void* GetGtkHandle() { return m_renderer; }
35
36 protected:
37 // holds the GTK handle
38 void* m_renderer;
39
40 protected:
41 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCell)
42 };
43
44 // ---------------------------------------------------------
45 // wxDataViewTextCell
46 // ---------------------------------------------------------
47
48 class wxDataViewTextCell: public wxDataViewCell
49 {
50 public:
51 wxDataViewTextCell( const wxString &varianttype = wxT("string"),
52 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
53
54 bool SetValue( const wxVariant &value );
55 bool GetValue( wxVariant &value );
56
57 protected:
58 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell)
59 };
60
61 // ---------------------------------------------------------
62 // wxDataViewToggleCell
63 // ---------------------------------------------------------
64
65 class wxDataViewToggleCell: public wxDataViewCell
66 {
67 public:
68 wxDataViewToggleCell( const wxString &varianttype = wxT("bool"),
69 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
70
71 bool SetValue( const wxVariant &value );
72 bool GetValue( wxVariant &value );
73
74 protected:
75 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleCell)
76 };
77
78 // ---------------------------------------------------------
79 // wxDataViewCustomCell
80 // ---------------------------------------------------------
81
82 class wxDataViewCustomCell: public wxDataViewCell
83 {
84 public:
85 wxDataViewCustomCell( const wxString &varianttype = wxT("string"),
86 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
87 bool no_init = false );
88 ~wxDataViewCustomCell();
89 bool Init();
90
91 virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0;
92 virtual wxSize GetSize() = 0;
93
94 virtual bool Activate( wxRect cell,
95 wxDataViewListModel *model, size_t col, size_t row )
96 { return false; }
97
98 virtual bool LeftClick( wxPoint cursor, wxRect cell,
99 wxDataViewListModel *model, size_t col, size_t row )
100 { return false; }
101 virtual bool RightClick( wxPoint cursor, wxRect cell,
102 wxDataViewListModel *model, size_t col, size_t row )
103 { return false; }
104 virtual bool StartDrag( wxPoint cursor, wxRect cell,
105 wxDataViewListModel *model, size_t col, size_t row )
106 { return false; }
107
108 // Create DC on request
109 virtual wxDC *GetDC();
110
111 private:
112 wxDC *m_dc;
113
114 protected:
115 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomCell)
116 };
117
118 // ---------------------------------------------------------
119 // wxDataViewProgressCell
120 // ---------------------------------------------------------
121
122 class wxDataViewProgressCell: public wxDataViewCustomCell
123 {
124 public:
125 wxDataViewProgressCell( const wxString &label = wxEmptyString,
126 const wxString &varianttype = wxT("long"),
127 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
128 ~wxDataViewProgressCell();
129
130 bool SetValue( const wxVariant &value );
131
132 virtual bool Render( wxRect cell, wxDC *dc, int state );
133 virtual wxSize GetSize();
134
135 private:
136 wxString m_label;
137 int m_value;
138
139 protected:
140 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressCell)
141 };
142
143 // ---------------------------------------------------------
144 // wxDataViewDateCell
145 // ---------------------------------------------------------
146
147 class wxDataViewDateCell: public wxDataViewCustomCell
148 {
149 public:
150 wxDataViewDateCell( const wxString &varianttype = wxT("datetime"),
151 wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE );
152
153 bool SetValue( const wxVariant &value );
154
155 virtual bool Render( wxRect cell, wxDC *dc, int state );
156 virtual wxSize GetSize();
157 virtual bool Activate( wxRect cell,
158 wxDataViewListModel *model, size_t col, size_t row );
159
160 private:
161 wxDateTime m_date;
162
163 protected:
164 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateCell)
165 };
166
167 // ---------------------------------------------------------
168 // wxDataViewColumn
169 // ---------------------------------------------------------
170
171 class WXDLLIMPEXP_CORE wxDataViewColumn: public wxDataViewColumnBase
172 {
173 public:
174 wxDataViewColumn( const wxString &title, wxDataViewCell *cell, size_t model_column, int flags = 0 );
175 virtual ~wxDataViewColumn();
176
177 virtual void SetTitle( const wxString &title );
178
179 // implementation
180 void* GetGtkHandle() { return m_column; }
181
182 private:
183 // holds the GTK handle
184 void* m_column;
185
186 protected:
187 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn)
188 };
189
190 // ---------------------------------------------------------
191 // wxDataViewCtrl
192 // ---------------------------------------------------------
193
194 class WXDLLIMPEXP_CORE wxDataViewCtrl: public wxDataViewCtrlBase
195 {
196 public:
197 wxDataViewCtrl()
198 {
199 Init();
200 }
201
202 wxDataViewCtrl( wxWindow *parent, wxWindowID id,
203 const wxPoint& pos = wxDefaultPosition,
204 const wxSize& size = wxDefaultSize, long style = 0,
205 const wxValidator& validator = wxDefaultValidator )
206 {
207 Create(parent, id, pos, size, style, validator );
208 }
209
210 virtual ~wxDataViewCtrl();
211
212 void Init();
213
214 bool Create(wxWindow *parent, wxWindowID id,
215 const wxPoint& pos = wxDefaultPosition,
216 const wxSize& size = wxDefaultSize, long style = 0,
217 const wxValidator& validator = wxDefaultValidator );
218
219 virtual bool AssociateModel( wxDataViewListModel *model );
220 virtual bool AppendColumn( wxDataViewColumn *col );
221
222 private:
223 friend class wxDataViewCtrlDC;
224 friend class wxGtkDataViewListModelNotifier;
225 GtkWidget *m_treeview;
226 wxDataViewListModelNotifier *m_notifier;
227
228 private:
229 DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)
230 DECLARE_NO_COPY_CLASS(wxDataViewCtrl)
231 };
232
233
234 #endif // __GTKDATAVIEWCTRLH__