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 virtual ~wxDataViewColumn();
221 virtual void SetTitle( const wxString
&title
);
223 virtual int GetWidth();
230 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn
)
233 // ---------------------------------------------------------
235 // ---------------------------------------------------------
237 class WXDLLIMPEXP_ADV wxDataViewCtrl
: public wxDataViewCtrlBase
,
238 public wxScrollHelperNative
241 wxDataViewCtrl() : wxScrollHelperNative(this)
246 wxDataViewCtrl( wxWindow
*parent
, wxWindowID id
,
247 const wxPoint
& pos
= wxDefaultPosition
,
248 const wxSize
& size
= wxDefaultSize
, long style
= 0,
249 const wxValidator
& validator
= wxDefaultValidator
)
250 : wxScrollHelperNative(this)
252 Create(parent
, id
, pos
, size
, style
, validator
);
255 virtual ~wxDataViewCtrl();
259 bool Create(wxWindow
*parent
, wxWindowID id
,
260 const wxPoint
& pos
= wxDefaultPosition
,
261 const wxSize
& size
= wxDefaultSize
, long style
= 0,
262 const wxValidator
& validator
= wxDefaultValidator
);
264 virtual bool AssociateModel( wxDataViewListModel
*model
);
265 virtual bool AppendColumn( wxDataViewColumn
*col
);
267 virtual void SetSelection( int row
); // -1 for unselect
268 virtual void SetSelectionRange( unsigned int from
, unsigned int to
);
269 virtual void SetSelections( const wxArrayInt
& aSelections
);
270 virtual void Unselect( unsigned int row
);
272 virtual bool IsSelected( unsigned int row
) const;
273 virtual int GetSelection() const;
274 virtual int GetSelections(wxArrayInt
& aSelections
) const;
277 friend class wxDataViewMainWindow
;
278 friend class wxDataViewHeaderWindow
;
279 wxDataViewListModelNotifier
*m_notifier
;
280 wxDataViewMainWindow
*m_clientArea
;
281 wxDataViewHeaderWindow
*m_headerArea
;
284 void OnSize( wxSizeEvent
&event
);
286 // we need to return a special WM_GETDLGCODE value to process just the
287 // arrows but let the other navigation characters through
289 virtual WXLRESULT
MSWWindowProc(WXUINT nMsg
, WXWPARAM wParam
, WXLPARAM lParam
);
292 WX_FORWARD_TO_SCROLL_HELPER()
295 DECLARE_DYNAMIC_CLASS(wxDataViewCtrl
)
296 DECLARE_NO_COPY_CLASS(wxDataViewCtrl
)
297 DECLARE_EVENT_TABLE()
301 #endif // __GENERICDATAVIEWCTRLH__