1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/gtk/dvrenderers.h
3 // Purpose: All GTK wxDataViewCtrl renderer classes
4 // Author: Robert Roebling, Vadim Zeitlin
5 // Created: 2009-11-07 (extracted from wx/gtk/dataview.h)
7 // Copyright: (c) 2006 Robert Roebling
8 // (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_GTK_DVRENDERERS_H_
13 #define _WX_GTK_DVRENDERERS_H_
16 typedef struct _cairo_rectangle_int cairo_rectangle_int_t
;
17 typedef cairo_rectangle_int_t GdkRectangle
;
19 typedef struct _GdkRectangle GdkRectangle
;
22 // ---------------------------------------------------------
23 // wxDataViewTextRenderer
24 // ---------------------------------------------------------
26 class WXDLLIMPEXP_ADV wxDataViewTextRenderer
: public wxDataViewRenderer
29 wxDataViewTextRenderer( const wxString
&varianttype
= "string",
30 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
,
31 int align
= wxDVR_DEFAULT_ALIGNMENT
);
33 virtual bool SetValue( const wxVariant
&value
)
35 return SetTextValue(value
);
38 virtual bool GetValue( wxVariant
&value
) const
41 if ( !GetTextValue(str
) )
49 virtual void SetAlignment( int align
);
51 virtual bool GtkSupportsAttrs() const { return true; }
52 virtual bool GtkSetAttr(const wxDataViewItemAttr
& attr
);
54 virtual GtkCellRendererText
*GtkGetTextRenderer() const;
57 // implementation of Set/GetValue()
58 bool SetTextValue(const wxString
& str
);
59 bool GetTextValue(wxString
& str
) const;
62 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer
)
65 // ---------------------------------------------------------
66 // wxDataViewBitmapRenderer
67 // ---------------------------------------------------------
69 class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer
: public wxDataViewRenderer
72 wxDataViewBitmapRenderer( const wxString
&varianttype
= "wxBitmap",
73 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
,
74 int align
= wxDVR_DEFAULT_ALIGNMENT
);
76 bool SetValue( const wxVariant
&value
);
77 bool GetValue( wxVariant
&value
) const;
80 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer
)
83 // ---------------------------------------------------------
84 // wxDataViewToggleRenderer
85 // ---------------------------------------------------------
87 class WXDLLIMPEXP_ADV wxDataViewToggleRenderer
: public wxDataViewRenderer
90 wxDataViewToggleRenderer( const wxString
&varianttype
= "bool",
91 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
,
92 int align
= wxDVR_DEFAULT_ALIGNMENT
);
94 bool SetValue( const wxVariant
&value
);
95 bool GetValue( wxVariant
&value
) const;
98 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer
)
101 // ---------------------------------------------------------
102 // wxDataViewCustomRenderer
103 // ---------------------------------------------------------
105 class WXDLLIMPEXP_ADV wxDataViewCustomRenderer
: public wxDataViewCustomRendererBase
108 wxDataViewCustomRenderer( const wxString
&varianttype
= "string",
109 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
,
110 int align
= wxDVR_DEFAULT_ALIGNMENT
,
111 bool no_init
= false );
112 virtual ~wxDataViewCustomRenderer();
115 // Create DC on request
116 virtual wxDC
*GetDC();
118 // override the base class function to use GTK text cell renderer
119 virtual void RenderText(const wxString
& text
,
125 struct GTKRenderParams
;
127 // store GTK render call parameters for possible later use
128 void GTKSetRenderParams(GTKRenderParams
* renderParams
)
130 m_renderParams
= renderParams
;
133 // we may or not support attributes, as we don't know it, return true to
134 // make it possible to use them
135 virtual bool GtkSupportsAttrs() const { return true; }
137 virtual bool GtkSetAttr(const wxDataViewItemAttr
& attr
)
140 return !attr
.IsDefault();
143 virtual GtkCellRendererText
*GtkGetTextRenderer() const;
146 bool Init(wxDataViewCellMode mode
, int align
);
148 // Called from GtkGetTextRenderer() to really create the renderer if
150 void GtkInitTextRenderer();
154 GtkCellRendererText
*m_text_renderer
;
156 // parameters of the original render() call stored so that we could pass
157 // them forward to m_text_renderer if our RenderText() is called
158 GTKRenderParams
* m_renderParams
;
160 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer
)
163 // ---------------------------------------------------------
164 // wxDataViewProgressRenderer
165 // ---------------------------------------------------------
167 class WXDLLIMPEXP_ADV wxDataViewProgressRenderer
: public wxDataViewCustomRenderer
170 wxDataViewProgressRenderer( const wxString
&label
= wxEmptyString
,
171 const wxString
&varianttype
= "long",
172 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
,
173 int align
= wxDVR_DEFAULT_ALIGNMENT
);
174 virtual ~wxDataViewProgressRenderer();
176 bool SetValue( const wxVariant
&value
);
177 bool GetValue( wxVariant
&value
) const;
179 virtual bool Render( wxRect cell
, wxDC
*dc
, int state
);
180 virtual wxSize
GetSize() const;
189 // Flag used to indicate that we need to set the label because we were
190 // unable to do it in the ctor (see comments there).
191 bool m_needsToSetLabel
;
192 #endif // !wxUSE_UNICODE
195 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer
)
198 // ---------------------------------------------------------
199 // wxDataViewIconTextRenderer
200 // ---------------------------------------------------------
202 class WXDLLIMPEXP_ADV wxDataViewIconTextRenderer
: public wxDataViewTextRenderer
205 wxDataViewIconTextRenderer( const wxString
&varianttype
= "wxDataViewIconText",
206 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
,
207 int align
= wxDVR_DEFAULT_ALIGNMENT
);
208 virtual ~wxDataViewIconTextRenderer();
210 bool SetValue( const wxVariant
&value
);
211 bool GetValue( wxVariant
&value
) const;
213 virtual void GtkPackIntoColumn(GtkTreeViewColumn
*column
);
216 virtual void GtkOnCellChanged(const wxVariant
& value
,
217 const wxDataViewItem
& item
,
221 wxDataViewIconText m_value
;
223 // we use the base class m_renderer for the text and this one for the icon
224 GtkCellRenderer
*m_rendererIcon
;
226 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer
)
229 // -------------------------------------
230 // wxDataViewChoiceRenderer
231 // -------------------------------------
233 class WXDLLIMPEXP_ADV wxDataViewChoiceRenderer
: public wxDataViewCustomRenderer
236 wxDataViewChoiceRenderer(const wxArrayString
&choices
,
237 wxDataViewCellMode mode
= wxDATAVIEW_CELL_EDITABLE
,
238 int alignment
= wxDVR_DEFAULT_ALIGNMENT
);
239 virtual bool Render( wxRect rect
, wxDC
*dc
, int state
);
240 virtual wxSize
GetSize() const;
241 virtual bool SetValue( const wxVariant
&value
);
242 virtual bool GetValue( wxVariant
&value
) const;
244 void SetAlignment( int align
);
246 wxString
GetChoice(size_t index
) const { return m_choices
[index
]; }
247 const wxArrayString
& GetChoices() const { return m_choices
; }
250 wxArrayString m_choices
;
254 // ----------------------------------------------------------------------------
255 // wxDataViewChoiceByIndexRenderer
256 // ----------------------------------------------------------------------------
258 class WXDLLIMPEXP_ADV wxDataViewChoiceByIndexRenderer
: public wxDataViewChoiceRenderer
261 wxDataViewChoiceByIndexRenderer( const wxArrayString
&choices
,
262 wxDataViewCellMode mode
= wxDATAVIEW_CELL_EDITABLE
,
263 int alignment
= wxDVR_DEFAULT_ALIGNMENT
);
265 virtual bool SetValue( const wxVariant
&value
);
266 virtual bool GetValue( wxVariant
&value
) const;
269 virtual void GtkOnTextEdited(const char *itempath
, const wxString
& str
);
274 #endif // _WX_GTK_DVRENDERERS_H_