1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/generic/dataview.h
3 // Purpose: wxDataViewCtrl generic implementation header
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
10 #ifndef __GENERICDATAVIEWCTRLH__
11 #define __GENERICDATAVIEWCTRLH__
14 #include "wx/object.h"
16 #include "wx/control.h"
17 #include "wx/scrolwin.h"
20 // ---------------------------------------------------------
22 // ---------------------------------------------------------
24 class WXDLLIMPEXP_ADV wxDataViewCtrl
;
25 class WXDLLIMPEXP_ADV wxDataViewMainWindow
;
26 class WXDLLIMPEXP_ADV wxDataViewHeaderWindow
;
28 // ---------------------------------------------------------
30 // ---------------------------------------------------------
32 class WXDLLIMPEXP_ADV wxDataViewRenderer
: public wxDataViewRendererBase
35 wxDataViewRenderer( const wxString
&varianttype
, wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
36 virtual ~wxDataViewRenderer();
38 virtual bool Render( wxRect cell
, wxDC
*dc
, int state
) = 0;
39 virtual wxSize
GetSize() = 0;
41 virtual bool Activate( wxRect
WXUNUSED(cell
),
42 wxDataViewListModel
*WXUNUSED(model
),
43 unsigned int WXUNUSED(col
),
44 unsigned int WXUNUSED(row
) )
47 virtual bool LeftClick( wxPoint
WXUNUSED(cursor
),
48 wxRect
WXUNUSED(cell
),
49 wxDataViewListModel
*WXUNUSED(model
),
50 unsigned int WXUNUSED(col
),
51 unsigned int WXUNUSED(row
) )
53 virtual bool RightClick( wxPoint
WXUNUSED(cursor
),
54 wxRect
WXUNUSED(cell
),
55 wxDataViewListModel
*WXUNUSED(model
),
56 unsigned int WXUNUSED(col
),
57 unsigned int WXUNUSED(row
) )
59 virtual bool StartDrag( wxPoint
WXUNUSED(cursor
),
60 wxRect
WXUNUSED(cell
),
61 wxDataViewListModel
*WXUNUSED(model
),
62 unsigned int WXUNUSED(col
),
63 unsigned int WXUNUSED(row
) )
66 // Create DC on request
67 virtual wxDC
*GetDC();
73 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer
)
76 // ---------------------------------------------------------
77 // wxDataViewCustomRenderer
78 // ---------------------------------------------------------
80 class WXDLLIMPEXP_ADV wxDataViewCustomRenderer
: public wxDataViewRenderer
83 wxDataViewCustomRenderer( const wxString
&varianttype
= wxT("string"),
84 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
87 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer
)
90 // ---------------------------------------------------------
91 // wxDataViewTextRenderer
92 // ---------------------------------------------------------
94 class WXDLLIMPEXP_ADV wxDataViewTextRenderer
: public wxDataViewCustomRenderer
97 wxDataViewTextRenderer( const wxString
&varianttype
= wxT("string"),
98 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
100 bool SetValue( const wxVariant
&value
);
101 bool GetValue( wxVariant
&value
);
103 bool Render( wxRect cell
, wxDC
*dc
, int state
);
110 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer
)
113 // ---------------------------------------------------------
114 // wxDataViewBitmapRenderer
115 // ---------------------------------------------------------
117 class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer
: public wxDataViewCustomRenderer
120 wxDataViewBitmapRenderer( const wxString
&varianttype
= wxT("wxBitmap"),
121 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
123 bool SetValue( const wxVariant
&value
);
124 bool GetValue( wxVariant
&value
);
126 bool Render( wxRect cell
, wxDC
*dc
, int state
);
134 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer
)
137 // ---------------------------------------------------------
138 // wxDataViewToggleRenderer
139 // ---------------------------------------------------------
141 class WXDLLIMPEXP_ADV wxDataViewToggleRenderer
: public wxDataViewCustomRenderer
144 wxDataViewToggleRenderer( const wxString
&varianttype
= wxT("bool"),
145 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
147 bool SetValue( const wxVariant
&value
);
148 bool GetValue( wxVariant
&value
);
150 bool Render( wxRect cell
, wxDC
*dc
, int state
);
151 bool Activate( wxRect cell
, wxDataViewListModel
*model
, unsigned int col
, unsigned int row
);
158 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer
)
161 // ---------------------------------------------------------
162 // wxDataViewProgressRenderer
163 // ---------------------------------------------------------
165 class WXDLLIMPEXP_ADV wxDataViewProgressRenderer
: public wxDataViewCustomRenderer
168 wxDataViewProgressRenderer( const wxString
&label
= wxEmptyString
,
169 const wxString
&varianttype
= wxT("long"),
170 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
);
171 virtual ~wxDataViewProgressRenderer();
173 bool SetValue( const wxVariant
&value
);
175 virtual bool Render( wxRect cell
, wxDC
*dc
, int state
);
176 virtual wxSize
GetSize();
183 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer
)
186 // ---------------------------------------------------------
187 // wxDataViewDateRenderer
188 // ---------------------------------------------------------
190 class WXDLLIMPEXP_ADV wxDataViewDateRenderer
: public wxDataViewCustomRenderer
193 wxDataViewDateRenderer( const wxString
&varianttype
= wxT("datetime"),
194 wxDataViewCellMode mode
= wxDATAVIEW_CELL_ACTIVATABLE
);
196 bool SetValue( const wxVariant
&value
);
198 virtual bool Render( wxRect cell
, wxDC
*dc
, int state
);
199 virtual wxSize
GetSize();
200 virtual bool Activate( wxRect cell
,
201 wxDataViewListModel
*model
, unsigned int col
, unsigned int row
);
207 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer
)
210 // ---------------------------------------------------------
212 // ---------------------------------------------------------
214 class WXDLLIMPEXP_ADV wxDataViewColumn
: public wxDataViewColumnBase
217 wxDataViewColumn( const wxString
&title
, wxDataViewRenderer
*renderer
, unsigned int model_column
,
218 int width
= 80, int flags
= wxDATAVIEW_COL_RESIZABLE
);
219 wxDataViewColumn( const wxBitmap
&bitmap
, wxDataViewRenderer
*renderer
, unsigned int model_column
,
220 int width
= 80, int flags
= wxDATAVIEW_COL_RESIZABLE
);
221 virtual ~wxDataViewColumn();
223 virtual void SetTitle( const wxString
&title
);
224 virtual void SetBitmap( const wxBitmap
&bitmap
);
226 virtual void SetAlignment( wxAlignment align
);
228 virtual void SetSortable( bool sortable
);
229 virtual bool GetSortable();
230 virtual void SetSortOrder( bool ascending
);
231 virtual bool IsSortOrderAscending();
233 virtual int GetWidth();
240 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn
)
243 // ---------------------------------------------------------
245 // ---------------------------------------------------------
247 class WXDLLIMPEXP_ADV wxDataViewCtrl
: public wxDataViewCtrlBase
,
248 public wxScrollHelperNative
251 wxDataViewCtrl() : wxScrollHelperNative(this)
256 wxDataViewCtrl( wxWindow
*parent
, wxWindowID id
,
257 const wxPoint
& pos
= wxDefaultPosition
,
258 const wxSize
& size
= wxDefaultSize
, long style
= 0,
259 const wxValidator
& validator
= wxDefaultValidator
)
260 : wxScrollHelperNative(this)
262 Create(parent
, id
, pos
, size
, style
, validator
);
265 virtual ~wxDataViewCtrl();
269 bool Create(wxWindow
*parent
, wxWindowID id
,
270 const wxPoint
& pos
= wxDefaultPosition
,
271 const wxSize
& size
= wxDefaultSize
, long style
= 0,
272 const wxValidator
& validator
= wxDefaultValidator
);
274 virtual bool AssociateModel( wxDataViewListModel
*model
);
275 virtual bool AppendColumn( wxDataViewColumn
*col
);
277 virtual void SetSelection( int row
); // -1 for unselect
278 virtual void SetSelectionRange( unsigned int from
, unsigned int to
);
279 virtual void SetSelections( const wxArrayInt
& aSelections
);
280 virtual void Unselect( unsigned int row
);
282 virtual bool IsSelected( unsigned int row
) const;
283 virtual int GetSelection() const;
284 virtual int GetSelections(wxArrayInt
& aSelections
) const;
287 friend class wxDataViewMainWindow
;
288 friend class wxDataViewHeaderWindow
;
289 wxDataViewListModelNotifier
*m_notifier
;
290 wxDataViewMainWindow
*m_clientArea
;
291 wxDataViewHeaderWindow
*m_headerArea
;
294 void OnSize( wxSizeEvent
&event
);
296 // we need to return a special WM_GETDLGCODE value to process just the
297 // arrows but let the other navigation characters through
299 virtual WXLRESULT
MSWWindowProc(WXUINT nMsg
, WXWPARAM wParam
, WXLPARAM lParam
);
302 WX_FORWARD_TO_SCROLL_HELPER()
305 DECLARE_DYNAMIC_CLASS(wxDataViewCtrl
)
306 DECLARE_NO_COPY_CLASS(wxDataViewCtrl
)
307 DECLARE_EVENT_TABLE()
311 #endif // __GENERICDATAVIEWCTRLH__