1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxDataViewCtrl base classes
4 // Author: Robert Roebling
8 // Copyright: (c) Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_DATAVIEW_H_BASE_
13 #define _WX_DATAVIEW_H_BASE_
17 #if wxUSE_DATAVIEWCTRL
19 #include "wx/control.h"
20 #include "wx/textctrl.h"
21 #include "wx/bitmap.h"
22 #include "wx/variant.h"
24 // ----------------------------------------------------------------------------
25 // wxDataViewCtrl flags
26 // ----------------------------------------------------------------------------
28 // ----------------------------------------------------------------------------
29 // wxDataViewCtrl globals
30 // ----------------------------------------------------------------------------
32 class WXDLLIMPEXP_CORE wxDataViewCtrl
;
33 class WXDLLIMPEXP_CORE wxDataViewColumn
;
34 class WXDLLIMPEXP_CORE wxDataViewCell
;
36 extern WXDLLEXPORT_DATA(const wxChar
) wxDataViewCtrlNameStr
[];
38 // ---------------------------------------------------------
40 // ---------------------------------------------------------
42 class wxDataViewModel
: public wxObject
46 virtual ~wxDataViewModel() { }
49 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewModel
)
52 // ---------------------------------------------------------
53 // wxDataViewListModelNotifier
54 // ---------------------------------------------------------
56 class wxDataViewListModelNotifier
59 wxDataViewListModelNotifier() { }
60 virtual ~wxDataViewListModelNotifier() { }
62 virtual bool RowAppended() = 0;
63 virtual bool RowPrepended() = 0;
64 virtual bool RowInserted( size_t before
) = 0;
65 virtual bool RowDeleted( size_t row
) = 0;
66 virtual bool RowChanged( size_t row
) = 0;
67 virtual bool ValueChanged( size_t row
, size_t col
) = 0;
68 virtual bool Cleared() = 0;
71 // ---------------------------------------------------------
72 // wxDataViewListModel
73 // ---------------------------------------------------------
75 class wxDataViewListModel
: public wxDataViewModel
78 wxDataViewListModel();
79 virtual ~wxDataViewListModel();
81 virtual size_t GetNumberOfRows() = 0;
82 virtual size_t GetNumberOfCols() = 0;
83 // return type as reported by wxVariant
84 virtual wxString
GetColType( size_t col
) = 0;
85 // get value into a wxVariant
86 virtual wxVariant
GetValue( size_t col
, size_t row
) = 0;
87 // set value, call ValueChanged() afterwards!
88 virtual bool SetValue( wxVariant
&variant
, size_t col
, size_t row
) = 0;
90 // delegated notifiers
93 bool RowInserted( size_t before
);
94 bool RowDeleted( size_t row
);
95 bool RowChanged( size_t row
);
96 bool ValueChanged( size_t col
, size_t row
);
99 void SetNotifier( wxDataViewListModelNotifier
*notifier
);
100 wxDataViewListModelNotifier
* GetNotifier();
103 wxDataViewListModelNotifier
*m_notifier
;
106 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewListModel
)
109 // ---------------------------------------------------------
110 // wxDataViewCellBase
111 // ---------------------------------------------------------
113 enum wxDataViewCellMode
115 wxDATAVIEW_CELL_INERT
,
116 wxDATAVIEW_CELL_ACTIVATABLE
,
117 wxDATAVIEW_CELL_EDITABLE
120 enum wxDataViewCellRenderState
122 wxDATAVIEW_CELL_SELECTED
= 1,
123 wxDATAVIEW_CELL_PRELIT
= 2,
124 wxDATAVIEW_CELL_INSENSITIVE
= 4,
125 wxDATAVIEW_CELL_FOCUSED
= 8
128 class wxDataViewCellBase
: public wxObject
131 wxDataViewCellBase( const wxString
&varianttype
, wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
133 virtual bool SetValue( const wxVariant
&value
) { return true; }
134 virtual bool GetValue( wxVariant
&value
) { return true; }
135 virtual bool Validate( wxVariant
&value
) { return true; }
137 wxString
GetVariantType() { return m_variantType
; }
139 void SetOwner( wxDataViewColumn
*owner
) { m_owner
= owner
; }
140 wxDataViewColumn
* GetOwner() { return m_owner
; }
143 wxDataViewCellMode m_mode
;
144 wxString m_variantType
;
145 wxDataViewColumn
*m_owner
;
148 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCellBase
)
151 // ---------------------------------------------------------
152 // wxDataViewColumnBase
153 // ---------------------------------------------------------
155 enum wxDataViewColumnFlags
157 wxDATAVIEW_COL_RESIZABLE
= 1,
158 wxDATAVIEW_COL_SORTABLE
= 2,
159 wxDATAVIEW_COL_HIDDEN
= 4
162 class wxDataViewColumnBase
: public wxObject
165 wxDataViewColumnBase( const wxString
&title
, wxDataViewCell
*cell
, size_t model_column
, int flags
= 0 );
166 ~wxDataViewColumnBase();
168 virtual void SetTitle( const wxString
&title
);
169 virtual wxString
GetTitle();
171 wxDataViewCell
* GetCell() { return m_cell
; }
173 size_t GetModelColumn() { return m_model_column
; }
175 void SetOwner( wxDataViewCtrl
*owner
) { m_owner
= owner
; }
176 wxDataViewCtrl
*GetOwner() { return m_owner
; }
179 wxDataViewCtrl
*m_ctrl
;
180 wxDataViewCell
*m_cell
;
184 wxDataViewCtrl
*m_owner
;
187 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumnBase
)
190 // ---------------------------------------------------------
191 // wxDataViewCtrlBase
192 // ---------------------------------------------------------
194 class wxDataViewCtrlBase
: public wxControl
197 wxDataViewCtrlBase();
198 ~wxDataViewCtrlBase();
200 virtual bool AssociateModel( wxDataViewListModel
*model
);
201 wxDataViewListModel
* GetModel();
203 virtual bool AppendTextColumn( const wxString
&label
, size_t model_column
);
204 virtual bool AppendToggleColumn( const wxString
&label
, size_t model_column
);
205 virtual bool AppendProgressColumn( const wxString
&label
, size_t model_column
);
206 virtual bool AppendDateColumn( const wxString
&label
, size_t model_column
);
207 virtual bool AppendColumn( wxDataViewColumn
*col
);
208 virtual size_t GetNumberOfColumns();
209 virtual bool DeleteColumn( size_t pos
);
210 virtual bool ClearColumns();
211 virtual wxDataViewColumn
* GetColumn( size_t pos
);
214 wxDataViewListModel
*m_model
;
218 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCtrlBase
)
221 #if defined(__WXGTK20__)
222 #include "wx/gtk/dataview.h"
223 #elif defined(__WXMAC__)
224 #include "wx/mac/dataview.h"
226 #include "wx/generic/dataview.h"
229 #endif // wxUSE_DATAVIEWCTRL
232 // _WX_DATAVIEW_H_BASE_