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 col
, size_t row
) = 0;
68 virtual bool Cleared() = 0;
69 virtual bool ValueChanged( wxDataViewColumn
*view_column
, size_t model_column
, size_t row
) = 0;
72 // ---------------------------------------------------------
73 // wxDataViewListModel
74 // ---------------------------------------------------------
76 class wxDataViewListModel
: public wxDataViewModel
79 wxDataViewListModel();
80 virtual ~wxDataViewListModel();
82 virtual size_t GetNumberOfRows() = 0;
83 virtual size_t GetNumberOfCols() = 0;
84 // return type as reported by wxVariant
85 virtual wxString
GetColType( size_t col
) = 0;
86 // get value into a wxVariant
87 virtual wxVariant
GetValue( size_t col
, size_t row
) = 0;
88 // set value, call ValueChanged() afterwards!
89 virtual bool SetValue( wxVariant
&variant
, size_t col
, size_t row
) = 0;
91 // delegated notifiers
94 bool RowInserted( size_t before
);
95 bool RowDeleted( size_t row
);
96 bool RowChanged( size_t row
);
97 bool ValueChanged( size_t col
, size_t row
);
101 void AddViewingColumn( wxDataViewColumn
*view_column
, size_t model_column
);
102 void RemoveViewingColumn( wxDataViewColumn
*column
);
105 void SetNotifier( wxDataViewListModelNotifier
*notifier
);
106 wxDataViewListModelNotifier
* GetNotifier();
109 wxDataViewListModelNotifier
*m_notifier
;
110 wxList m_viewingColumns
;
113 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewListModel
)
116 // ---------------------------------------------------------
117 // wxDataViewCellBase
118 // ---------------------------------------------------------
120 enum wxDataViewCellMode
122 wxDATAVIEW_CELL_INERT
,
123 wxDATAVIEW_CELL_ACTIVATABLE
,
124 wxDATAVIEW_CELL_EDITABLE
127 enum wxDataViewCellRenderState
129 wxDATAVIEW_CELL_SELECTED
= 1,
130 wxDATAVIEW_CELL_PRELIT
= 2,
131 wxDATAVIEW_CELL_INSENSITIVE
= 4,
132 wxDATAVIEW_CELL_FOCUSED
= 8
135 class wxDataViewCellBase
: public wxObject
138 wxDataViewCellBase( const wxString
&varianttype
, wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
140 virtual bool SetValue( const wxVariant
&value
) { return true; }
141 virtual bool GetValue( wxVariant
&value
) { return true; }
142 virtual bool Validate( wxVariant
&value
) { return true; }
144 wxString
GetVariantType() { return m_variantType
; }
146 void SetOwner( wxDataViewColumn
*owner
) { m_owner
= owner
; }
147 wxDataViewColumn
* GetOwner() { return m_owner
; }
150 wxDataViewCellMode m_mode
;
151 wxString m_variantType
;
152 wxDataViewColumn
*m_owner
;
155 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCellBase
)
158 // ---------------------------------------------------------
159 // wxDataViewColumnBase
160 // ---------------------------------------------------------
162 enum wxDataViewColumnFlags
164 wxDATAVIEW_COL_RESIZABLE
= 1,
165 wxDATAVIEW_COL_SORTABLE
= 2,
166 wxDATAVIEW_COL_HIDDEN
= 4
169 class wxDataViewColumnBase
: public wxObject
172 wxDataViewColumnBase( const wxString
&title
, wxDataViewCell
*cell
, size_t model_column
, int flags
= 0 );
173 ~wxDataViewColumnBase();
175 virtual void SetTitle( const wxString
&title
);
176 virtual wxString
GetTitle();
178 wxDataViewCell
* GetCell() { return m_cell
; }
180 size_t GetModelColumn() { return m_model_column
; }
182 void SetOwner( wxDataViewCtrl
*owner
) { m_owner
= owner
; }
183 wxDataViewCtrl
*GetOwner() { return m_owner
; }
186 wxDataViewCtrl
*m_ctrl
;
187 wxDataViewCell
*m_cell
;
191 wxDataViewCtrl
*m_owner
;
194 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumnBase
)
197 // ---------------------------------------------------------
198 // wxDataViewCtrlBase
199 // ---------------------------------------------------------
201 class wxDataViewCtrlBase
: public wxControl
204 wxDataViewCtrlBase();
205 ~wxDataViewCtrlBase();
207 virtual bool AssociateModel( wxDataViewListModel
*model
);
208 wxDataViewListModel
* GetModel();
210 virtual bool AppendTextColumn( const wxString
&label
, size_t model_column
);
211 virtual bool AppendToggleColumn( const wxString
&label
, size_t model_column
);
212 virtual bool AppendProgressColumn( const wxString
&label
, size_t model_column
);
213 virtual bool AppendDateColumn( const wxString
&label
, size_t model_column
);
214 virtual bool AppendColumn( wxDataViewColumn
*col
);
215 virtual size_t GetNumberOfColumns();
216 virtual bool DeleteColumn( size_t pos
);
217 virtual bool ClearColumns();
218 virtual wxDataViewColumn
* GetColumn( size_t pos
);
221 wxDataViewListModel
*m_model
;
225 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCtrlBase
)
228 #if defined(__WXGTK20__)
229 #include "wx/gtk/dataview.h"
230 #elif defined(__WXMAC__)
231 #include "wx/mac/dataview.h"
233 #include "wx/generic/dataview.h"
236 #endif // wxUSE_DATAVIEWCTRL
239 // _WX_DATAVIEW_H_BASE_