1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/gtk/dvrenderer.h
3 // Purpose: wxDataViewRenderer for GTK wxDataViewCtrl implementation
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_DVRENDERER_H_
13 #define _WX_GTK_DVRENDERER_H_
15 typedef struct _GtkCellRendererText GtkCellRendererText
;
16 typedef struct _GtkTreeViewColumn GtkTreeViewColumn
;
18 // ----------------------------------------------------------------------------
20 // ----------------------------------------------------------------------------
22 class WXDLLIMPEXP_ADV wxDataViewRenderer
: public wxDataViewRendererBase
25 wxDataViewRenderer( const wxString
&varianttype
,
26 wxDataViewCellMode mode
= wxDATAVIEW_CELL_INERT
,
27 int align
= wxDVR_DEFAULT_ALIGNMENT
);
29 virtual void SetMode( wxDataViewCellMode mode
);
30 virtual wxDataViewCellMode
GetMode() const;
32 virtual void SetAlignment( int align
);
33 virtual int GetAlignment() const;
35 virtual void EnableEllipsize(wxEllipsizeMode mode
= wxELLIPSIZE_MIDDLE
);
36 virtual wxEllipsizeMode
GetEllipsizeMode() const;
38 // GTK-specific implementation
39 // ---------------------------
41 // pack the GTK cell renderers used by this renderer to the given column
43 // by default only a single m_renderer is used but some renderers use more
44 // than one GTK cell renderer
45 virtual void GtkPackIntoColumn(GtkTreeViewColumn
*column
);
47 // called when the cell value was edited by user with the new value
49 // it validates the new value and notifies the model about the change by
50 // calling GtkOnCellChanged() if it was accepted
51 virtual void GtkOnTextEdited(const gchar
*itempath
, const wxString
& value
);
53 GtkCellRenderer
* GetGtkHandle() { return m_renderer
; }
54 void GtkInitHandlers();
55 void GtkUpdateAlignment() { GtkApplyAlignment(m_renderer
); }
57 // should be overridden to return true if the renderer supports properties
58 // corresponding to wxDataViewItemAttr field, see wxGtkTreeCellDataFunc()
60 virtual bool GtkSupportsAttrs() const { return false; }
62 // if GtkSupportsAttrs() returns true, this function will be called to
63 // effectively set the attribute to use for rendering the next item
65 // it should return true if the attribute had any non-default properties
66 virtual bool GtkSetAttr(const wxDataViewItemAttr
& WXUNUSED(attr
))
70 // these functions are only called if GtkSupportsAttrs() returns true and
71 // are used to remember whether the renderer currently uses the default
72 // attributes or if we changed (and not reset them)
73 bool GtkIsUsingDefaultAttrs() const { return m_usingDefaultAttrs
; }
74 void GtkSetUsingDefaultAttrs(bool def
) { m_usingDefaultAttrs
= def
; }
76 // return the text renderer used by this renderer for setting text cell
77 // specific attributes: can return NULL if this renderer doesn't render any
79 virtual GtkCellRendererText
*GtkGetTextRenderer() const { return NULL
; }
81 wxDataViewCellMode
GtkGetMode() { return m_mode
; }
84 virtual void GtkOnCellChanged(const wxVariant
& value
,
85 const wxDataViewItem
& item
,
88 // Apply our effective alignment (i.e. m_alignment if specified or the
89 // associated column alignment by default) to the given renderer.
90 void GtkApplyAlignment(GtkCellRenderer
*renderer
);
92 GtkCellRenderer
*m_renderer
;
94 wxDataViewCellMode m_mode
;
96 // true if we hadn't changed any visual attributes or restored them since
98 bool m_usingDefaultAttrs
;
101 DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer
)
104 #endif // _WX_GTK_DVRENDERER_H_