]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gtk/dvrenderers.h
Define WXBUILDING in Xcode projects.
[wxWidgets.git] / include / wx / gtk / dvrenderers.h
CommitLineData
6eec70b9
VZ
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)
b1153ed6 6// RCS-ID: $Id$
6eec70b9
VZ
7// Copyright: (c) 2006 Robert Roebling
8// (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
9// Licence: wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_GTK_DVRENDERERS_H_
13#define _WX_GTK_DVRENDERERS_H_
14
9dc44eff
PC
15#ifdef __WXGTK3__
16 typedef struct _cairo_rectangle_int cairo_rectangle_int_t;
17 typedef cairo_rectangle_int_t GdkRectangle;
18#else
19 typedef struct _GdkRectangle GdkRectangle;
20#endif
70884c6f 21
6eec70b9
VZ
22// ---------------------------------------------------------
23// wxDataViewTextRenderer
24// ---------------------------------------------------------
25
26class WXDLLIMPEXP_ADV wxDataViewTextRenderer: public wxDataViewRenderer
27{
28public:
29 wxDataViewTextRenderer( const wxString &varianttype = "string",
30 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
31 int align = wxDVR_DEFAULT_ALIGNMENT );
32
33 virtual bool SetValue( const wxVariant &value )
34 {
35 return SetTextValue(value);
36 }
37
38 virtual bool GetValue( wxVariant &value ) const
39 {
40 wxString str;
41 if ( !GetTextValue(str) )
42 return false;
43
44 value = str;
45
46 return true;
47 }
48
49 virtual void SetAlignment( int align );
50
c2a738e3 51 virtual bool GtkSupportsAttrs() const { return true; }
c80cde00 52 virtual bool GtkSetAttr(const wxDataViewItemAttr& attr);
c2a738e3 53
17cbc244
VZ
54 virtual GtkCellRendererText *GtkGetTextRenderer() const;
55
6eec70b9
VZ
56protected:
57 // implementation of Set/GetValue()
58 bool SetTextValue(const wxString& str);
59 bool GetTextValue(wxString& str) const;
60
61
62 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer)
63};
64
65// ---------------------------------------------------------
66// wxDataViewBitmapRenderer
67// ---------------------------------------------------------
68
69class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer: public wxDataViewRenderer
70{
71public:
72 wxDataViewBitmapRenderer( const wxString &varianttype = "wxBitmap",
73 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
74 int align = wxDVR_DEFAULT_ALIGNMENT );
75
76 bool SetValue( const wxVariant &value );
77 bool GetValue( wxVariant &value ) const;
78
79protected:
80 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer)
81};
82
83// ---------------------------------------------------------
84// wxDataViewToggleRenderer
85// ---------------------------------------------------------
86
87class WXDLLIMPEXP_ADV wxDataViewToggleRenderer: public wxDataViewRenderer
88{
89public:
90 wxDataViewToggleRenderer( const wxString &varianttype = "bool",
91 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
92 int align = wxDVR_DEFAULT_ALIGNMENT );
93
94 bool SetValue( const wxVariant &value );
95 bool GetValue( wxVariant &value ) const;
96
97protected:
98 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer)
99};
100
101// ---------------------------------------------------------
102// wxDataViewCustomRenderer
103// ---------------------------------------------------------
104
105class WXDLLIMPEXP_ADV wxDataViewCustomRenderer: public wxDataViewCustomRendererBase
106{
107public:
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();
113
114
6eec70b9
VZ
115 // Create DC on request
116 virtual wxDC *GetDC();
117
62265c2c
VZ
118 // override the base class function to use GTK text cell renderer
119 virtual void RenderText(const wxString& text,
120 int xoffset,
121 wxRect cell,
122 wxDC *dc,
123 int state);
6eec70b9 124
02800dde
PC
125 struct GTKRenderParams;
126
2a454ffd 127 // store GTK render call parameters for possible later use
02800dde 128 void GTKSetRenderParams(GTKRenderParams* renderParams)
2a454ffd 129 {
02800dde 130 m_renderParams = renderParams;
2a454ffd 131 }
6eec70b9 132
c80cde00
VZ
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; }
136
137 virtual bool GtkSetAttr(const wxDataViewItemAttr& attr)
138 {
139 SetAttr(attr);
140 return !attr.IsDefault();
141 }
142
17cbc244
VZ
143 virtual GtkCellRendererText *GtkGetTextRenderer() const;
144
95dc31e0 145private:
6eec70b9
VZ
146 bool Init(wxDataViewCellMode mode, int align);
147
3e81bbbf
VZ
148 // Called from GtkGetTextRenderer() to really create the renderer if
149 // necessary.
150 void GtkInitTextRenderer();
151
6eec70b9
VZ
152 wxDC *m_dc;
153
c80cde00 154 GtkCellRendererText *m_text_renderer;
6eec70b9 155
2a454ffd
VZ
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
02800dde 158 GTKRenderParams* m_renderParams;
2a454ffd 159
6eec70b9
VZ
160 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
161};
162
163// ---------------------------------------------------------
164// wxDataViewProgressRenderer
165// ---------------------------------------------------------
166
167class WXDLLIMPEXP_ADV wxDataViewProgressRenderer: public wxDataViewCustomRenderer
168{
169public:
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();
175
176 bool SetValue( const wxVariant &value );
177 bool GetValue( wxVariant &value ) const;
178
179 virtual bool Render( wxRect cell, wxDC *dc, int state );
180 virtual wxSize GetSize() const;
181
182private:
fdd67a6a
VZ
183 void GTKSetLabel();
184
6eec70b9
VZ
185 wxString m_label;
186 int m_value;
187
fdd67a6a
VZ
188#if !wxUSE_UNICODE
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
193
6eec70b9
VZ
194protected:
195 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer)
196};
197
198// ---------------------------------------------------------
199// wxDataViewIconTextRenderer
200// ---------------------------------------------------------
201
202class WXDLLIMPEXP_ADV wxDataViewIconTextRenderer: public wxDataViewTextRenderer
203{
204public:
205 wxDataViewIconTextRenderer( const wxString &varianttype = "wxDataViewIconText",
206 wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
207 int align = wxDVR_DEFAULT_ALIGNMENT );
208 virtual ~wxDataViewIconTextRenderer();
209
210 bool SetValue( const wxVariant &value );
211 bool GetValue( wxVariant &value ) const;
212
213 virtual void GtkPackIntoColumn(GtkTreeViewColumn *column);
214
215protected:
216 virtual void GtkOnCellChanged(const wxVariant& value,
217 const wxDataViewItem& item,
218 unsigned col);
219
220private:
221 wxDataViewIconText m_value;
222
223 // we use the base class m_renderer for the text and this one for the icon
224 GtkCellRenderer *m_rendererIcon;
225
226 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer)
227};
228
6eec70b9
VZ
229// -------------------------------------
230// wxDataViewChoiceRenderer
231// -------------------------------------
232
233class WXDLLIMPEXP_ADV wxDataViewChoiceRenderer: public wxDataViewCustomRenderer
234{
235public:
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;
243
244 void SetAlignment( int align );
245
f4fcd648
RR
246 wxString GetChoice(size_t index) const { return m_choices[index]; }
247 const wxArrayString& GetChoices() const { return m_choices; }
248
6eec70b9
VZ
249private:
250 wxArrayString m_choices;
251 wxString m_data;
252};
253
65887bd0
RR
254// ----------------------------------------------------------------------------
255// wxDataViewChoiceByIndexRenderer
256// ----------------------------------------------------------------------------
257
258class WXDLLIMPEXP_ADV wxDataViewChoiceByIndexRenderer: public wxDataViewChoiceRenderer
259{
260public:
261 wxDataViewChoiceByIndexRenderer( const wxArrayString &choices,
262 wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
263 int alignment = wxDVR_DEFAULT_ALIGNMENT );
ce00f59b 264
65887bd0
RR
265 virtual bool SetValue( const wxVariant &value );
266 virtual bool GetValue( wxVariant &value ) const;
ce00f59b 267
65887bd0 268private:
29e461a2 269 virtual void GtkOnTextEdited(const char *itempath, const wxString& str);
65887bd0
RR
270};
271
272
273
6eec70b9
VZ
274#endif // _WX_GTK_DVRENDERERS_H_
275