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; }
136 virtual bool BeginEdit() { return true; }
137 virtual bool EndEdit() { return true; }
139 wxString
GetVariantType() { return m_variantType
; }
141 void SetOwner( wxDataViewColumn
*owner
) { m_owner
= owner
; }
142 wxDataViewColumn
* GetOwner() { return m_owner
; }
145 wxDataViewCellMode m_mode
;
146 wxString m_variantType
;
147 wxDataViewColumn
*m_owner
;
150 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCellBase
)
153 // ---------------------------------------------------------
154 // wxDataViewColumnBase
155 // ---------------------------------------------------------
157 enum wxDataViewColumnFlags
159 wxDATAVIEW_COL_RESIZABLE
= 1,
160 wxDATAVIEW_COL_SORTABLE
= 2,
161 wxDATAVIEW_COL_HIDDEN
= 4
164 class wxDataViewColumnBase
: public wxObject
167 wxDataViewColumnBase( const wxString
&title
, wxDataViewCell
*cell
, size_t model_column
, int flags
= 0 );
168 ~wxDataViewColumnBase();
170 virtual void SetTitle( const wxString
&title
);
171 virtual wxString
GetTitle();
173 wxDataViewCell
* GetCell() { return m_cell
; }
175 size_t GetModelColumn() { return m_model_column
; }
177 void SetOwner( wxDataViewCtrl
*owner
) { m_owner
= owner
; }
178 wxDataViewCtrl
*GetOwner() { return m_owner
; }
181 wxDataViewCtrl
*m_ctrl
;
182 wxDataViewCell
*m_cell
;
186 wxDataViewCtrl
*m_owner
;
189 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumnBase
)
192 // ---------------------------------------------------------
193 // wxDataViewCtrlBase
194 // ---------------------------------------------------------
196 class wxDataViewCtrlBase
: public wxControl
199 wxDataViewCtrlBase();
200 ~wxDataViewCtrlBase();
202 virtual bool AssociateModel( wxDataViewListModel
*model
);
203 wxDataViewListModel
* GetModel();
205 virtual bool AppendTextColumn( const wxString
&label
, size_t model_column
);
206 virtual bool AppendToggleColumn( 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_