]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/dvrenderer.h
Unselect all wxDataViewCtrl items when clicking outside of the item area.
[wxWidgets.git] / include / wx / gtk / dvrenderer.h
index 9513104c1c8e1284d108f9f7630dcc58b2b88815..1c1bc50d6d00cafe54a1c52899988baf6637d0a0 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     wxDataViewRenderer for GTK wxDataViewCtrl implementation
 // Author:      Robert Roebling, Vadim Zeitlin
 // Created:     2009-11-07 (extracted from wx/gtk/dataview.h)
 // 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 $
+// RCS-ID:      $Id$
 // Copyright:   (c) 2006 Robert Roebling
 //              (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 // Copyright:   (c) 2006 Robert Roebling
 //              (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
@@ -12,6 +12,7 @@
 #ifndef _WX_GTK_DVRENDERER_H_
 #define _WX_GTK_DVRENDERER_H_
 
 #ifndef _WX_GTK_DVRENDERER_H_
 #define _WX_GTK_DVRENDERER_H_
 
+typedef struct _GtkCellRendererText GtkCellRendererText;
 typedef struct _GtkTreeViewColumn GtkTreeViewColumn;
 
 // ----------------------------------------------------------------------------
 typedef struct _GtkTreeViewColumn GtkTreeViewColumn;
 
 // ----------------------------------------------------------------------------
@@ -47,23 +48,50 @@ public:
     //
     // it validates the new value and notifies the model about the change by
     // calling GtkOnCellChanged() if it was accepted
     //
     // 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();
 
     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; }
 
     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);
 
 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
 
     // true if we hadn't changed any visual attributes or restored them since
     // doing this