// Purpose: wxDataViewRenderer for GTK wxDataViewCtrl implementation
// Author: Robert Roebling, Vadim Zeitlin
// Created: 2009-11-07 (extracted from wx/gtk/dataview.h)
-// RCS-ID: $Id: wxhead.h,v 1.11 2009-06-29 10:23:04 zeitlin Exp $
// Copyright: (c) 2006 Robert Roebling
// (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
#ifndef _WX_GTK_DVRENDERER_H_
#define _WX_GTK_DVRENDERER_H_
+typedef struct _GtkCellRendererText GtkCellRendererText;
typedef struct _GtkTreeViewColumn GtkTreeViewColumn;
// ----------------------------------------------------------------------------
//
// it validates the new value and notifies the model about the change by
// calling GtkOnCellChanged() if it was accepted
- void GtkOnTextEdited(const gchar *itempath, const wxString& value);
+ virtual void GtkOnTextEdited(const char *itempath, const wxString& value);
GtkCellRenderer* GetGtkHandle() { return m_renderer; }
void GtkInitHandlers();
- void GtkUpdateAlignment();
+ void GtkUpdateAlignment() { GtkApplyAlignment(m_renderer); }
+ // should be overridden to return true if the renderer supports properties
+ // corresponding to wxDataViewItemAttr field, see wxGtkTreeCellDataFunc()
+ // for details
+ virtual bool GtkSupportsAttrs() const { return false; }
+
+ // if GtkSupportsAttrs() returns true, this function will be called to
+ // effectively set the attribute to use for rendering the next item
+ //
+ // it should return true if the attribute had any non-default properties
+ virtual bool GtkSetAttr(const wxDataViewItemAttr& WXUNUSED(attr))
+ { return false; }
+
+
+ // these functions are only called if GtkSupportsAttrs() returns true and
+ // are used to remember whether the renderer currently uses the default
+ // attributes or if we changed (and not reset them)
bool GtkIsUsingDefaultAttrs() const { return m_usingDefaultAttrs; }
void GtkSetUsingDefaultAttrs(bool def) { m_usingDefaultAttrs = def; }
+ // return the text renderer used by this renderer for setting text cell
+ // specific attributes: can return NULL if this renderer doesn't render any
+ // text
+ virtual GtkCellRendererText *GtkGetTextRenderer() const { return NULL; }
+
+ wxDataViewCellMode GtkGetMode() { return m_mode; }
+
protected:
virtual void GtkOnCellChanged(const wxVariant& value,
const wxDataViewItem& item,
unsigned col);
+ // Apply our effective alignment (i.e. m_alignment if specified or the
+ // associated column alignment by default) to the given renderer.
+ void GtkApplyAlignment(GtkCellRenderer *renderer);
- GtkCellRenderer *m_renderer;
- int m_alignment;
+ GtkCellRenderer *m_renderer;
+ int m_alignment;
+ wxDataViewCellMode m_mode;
// true if we hadn't changed any visual attributes or restored them since
// doing this