]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/dataview.h
minor Unicode overview corrections
[wxWidgets.git] / interface / dataview.h
index 9f2eba2c455a1e308e005f8925a86acbc38dbf43..08be7734b1f3bc556f21a0e00da203e18c2b824d 100644 (file)
@@ -16,7 +16,7 @@
     a wxVariant.
 
     @library{wxbase}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewIconText : public wxObject
 {
@@ -60,7 +60,7 @@ public:
     wxDataViewEvent - the event class for the wxDataViewCtrl notifications
 
     @library{wxadv}
-    @category{FIXME}
+    @category{events,dvc}
 */
 class wxDataViewEvent : public wxNotifyEvent
 {
@@ -129,153 +129,6 @@ public:
 
 
 
-/**
-    @class wxDataViewIconTextRenderer
-    @wxheader{dataview.h}
-
-    The wxDataViewIconTextRenderer class is used to display text with
-    a small icon next to it as it is typically done in a file manager.
-    This classes uses the wxDataViewIconText
-    helper class to store its data. wxDataViewIonText can be converted
-    to a from a wxVariant using the left shift
-    operator.
-
-    @library{wxadv}
-    @category{FIXME}
-*/
-class wxDataViewIconTextRenderer : public wxDataViewRenderer
-{
-public:
-    /**
-
-    */
-    wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText",
-                               wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT);
-};
-
-
-
-/**
-    @class wxDataViewIndexListModel
-    @wxheader{dataview.h}
-
-    wxDataViewIndexListModel is a specialized data model which lets
-    you address an item by its position (row) rather than its
-    wxDataViewItem (which you can obtain from this class).
-    This model also provides its own
-    wxDataViewIndexListModel::Compare method
-    which sorts the model's data by the index.
-
-    This model is special in the it is implemented differently under OS X
-    and other platforms. Under OS X a wxDataViewItem is always persistent
-    and this is also the case for this class. Under other platforms, the
-    meaning of a wxDataViewItem is changed to reflect a row number for
-    wxDataViewIndexListModel. The consequence of this is that
-    wxDataViewIndexListModel can be used as a virtual model with an
-    almost infinate number of items on platforms other than OS X.
-
-    @library{wxbase}
-    @category{FIXME}
-*/
-class wxDataViewIndexListModel : public wxDataViewModel
-{
-public:
-    /**
-        Constructor.
-    */
-    wxDataViewIndexListModel(unsigned int initial_size = 0);
-
-    /**
-        Destructor.
-    */
-    ~wxDataViewIndexListModel();
-
-    /**
-        Compare method that sorts the items by their index.
-    */
-    int Compare(const wxDataViewItem& item1,
-                const wxDataViewItem& item2,
-                unsigned int column, bool ascending);
-
-    /**
-        Oberride this to indicate that the row has special font attributes.
-        This only affects the
-        wxDataViewTextRendererText() renderer.
-        See also wxDataViewItemAttr.
-    */
-    bool GetAttr(unsigned int row, unsigned int col,
-                 wxDataViewItemAttr& attr);
-
-    /**
-        Returns the wxDataViewItem at the given @e row.
-    */
-    wxDataViewItem GetItem(unsigned int row) const;
-
-    /**
-        Returns the position of given @e item.
-    */
-    unsigned int GetRow(const wxDataViewItem& item) const;
-
-    /**
-        Override this to allow getting values from the model.
-    */
-    void GetValue(wxVariant& variant, unsigned int row,
-                  unsigned int col) const;
-
-    /**
-        Call this after if the data has to be read again from
-        the model. This is useful after major changes when
-        calling the methods below (possibly thousands of times)
-        doesn't make sense.
-    */
-    void Reset(unsigned int new_size);
-
-    /**
-        Call this after a row has been appended to the model.
-    */
-    void RowAppended();
-
-    /**
-        Call this after a row has been changed.
-    */
-    void RowChanged(unsigned int row);
-
-    /**
-        Call this after a row has been deleted.
-    */
-    void RowDeleted(unsigned int row);
-
-    /**
-        Call this after a row has been inserted at the given position.
-    */
-    void RowInserted(unsigned int before);
-
-    /**
-        Call this after a row has been prepended to the model.
-    */
-    void RowPrepended();
-
-    /**
-        Call this after a value has been changed.
-    */
-    void RowValueChanged(unsigned int row, unsigned int col);
-
-    /**
-        Call this after rows have been deleted. The array will internally
-        get copied and sorted in descending order so that the rows with
-        the highest position will be deleted first.
-    */
-    void RowsDeleted(const wxArrayInt& rows);
-
-    /**
-        Called in order to set a value in the model.
-    */
-    bool SetValue(const wxVariant& variant, unsigned int row,
-                  unsigned int col);
-};
-
-
-
 /**
     @class wxDataViewModel
     @wxheader{dataview.h}
@@ -341,6 +194,7 @@ public:
     Currently wxWidgets provides the following models apart
     from the base model:
     wxDataViewIndexListModel,
+    wxDataViewVirtualListModel,
     wxDataViewTreeStore.
 
     Note that wxDataViewModel is reference counted, derives from
@@ -359,7 +213,7 @@ public:
 
 
     @library{wxadv}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewModel : public wxObjectRefData
 {
@@ -541,101 +395,246 @@ public:
 
 
 
-
 /**
-    @class wxDataViewItemAttr
+    @class wxDataViewIndexListModel
     @wxheader{dataview.h}
 
-    This class is used to indicate to a wxDataViewCtrl
-    that a certain Item() has extra font attributes
-    for its renderer. For this, it is required to override
-    wxDataViewModel::GetAttr.
-
-    Attributes are currently only supported by
-    wxDataViewTextRendererText().
+    wxDataViewIndexListModel is a specialized data model which lets
+    you address an item by its position (row) rather than its
+    wxDataViewItem (which you can obtain from this class).
+    This model also provides its own wxDataViewIndexListModel::Compare
+    method which sorts the model's data by the index.
+    
+    This model is not a virtual model since the control stores 
+    each wxDataViewItem. Use wxDataViewVirtualListModel if you
+    need to display millions of items or have other reason to
+    use a virtual control.
 
-    @library{wxadv}
-    @category{FIXME}
+    @library{wxbase}
+    @category{dvc}
 */
-class wxDataViewItemAttr
+class wxDataViewIndexListModel : public wxDataViewModel
 {
 public:
     /**
         Constructor.
     */
-    wxDataViewItemAttr();
+    wxDataViewIndexListModel(unsigned int initial_size = 0);
 
     /**
-        Call this to indicate that the item shall be displayed in bold text.
+        Destructor.
     */
-    void SetBold(bool set);
+    ~wxDataViewIndexListModel();
 
     /**
-        Call this to indicate that the item shall be displayed with
-        that colour.
+        Compare method that sorts the items by their index.
     */
-    void SetColour(const wxColour& colour);
+    int Compare(const wxDataViewItem& item1,
+                const wxDataViewItem& item2,
+                unsigned int column, bool ascending);
 
     /**
-        Call this to indicate that the item shall be displayed in italic text.
+        Oberride this to indicate that the row has special font attributes.
+        This only affects the
+        wxDataViewTextRendererText() renderer.
+        See also wxDataViewItemAttr.
     */
-    void SetItalic(bool set);
-};
+    bool GetAttr(unsigned int row, unsigned int col,
+                 wxDataViewItemAttr& attr);
 
+    /**
+        Returns the wxDataViewItem at the given @e row.
+    */
+    wxDataViewItem GetItem(unsigned int row) const;
 
+    /**
+        Returns the position of given @e item.
+    */
+    unsigned int GetRow(const wxDataViewItem& item) const;
 
-/**
-    @class wxDataViewItem
-    @wxheader{dataview.h}
+    /**
+        Override this to allow getting values from the model.
+    */
+    void GetValue(wxVariant& variant, unsigned int row,
+                  unsigned int col) const;
 
-    wxDataViewItem is a small opaque class that represents an
-    item in a wxDataViewCtrl in a
-    persistent way, i.e. indepent of the position of the
-    item in the control or changes to its contents. It must
-    hold a unique ID of type @e void* in its only field
-    and can be converted to a from it.
+    /**
+        Call this after if the data has to be read again from
+        the model. This is useful after major changes when
+        calling the methods below (possibly thousands of times)
+        doesn't make sense.
+    */
+    void Reset(unsigned int new_size);
 
-    If the ID is @e @NULL the wxDataViewItem is invalid and
-    wxDataViewItem::IsOk will return @e @false
-    which used in many places in the API of wxDataViewCtrl
-    to indicate that e.g. no item was found. An ID of @NULL
-    is also used to indicate the invisible root. Examples
-    for this are
-    wxDataViewModel::GetParent and
-    wxDataViewModel::GetChildren.
+    /**
+        Call this after a row has been appended to the model.
+    */
+    void RowAppended();
+
+    /**
+        Call this after a row has been changed.
+    */
+    void RowChanged(unsigned int row);
 
-    @library{wxadv}
-    @category{FIXME}
-*/
-class wxDataViewItem
-{
-public:
-    //@{
     /**
+        Call this after a row has been deleted.
+    */
+    void RowDeleted(unsigned int row);
 
+    /**
+        Call this after a row has been inserted at the given position.
     */
-    wxDataViewItem(void* id = NULL);
-    wxDataViewItem(const wxDataViewItem& item);
-    //@}
+    void RowInserted(unsigned int before);
 
     /**
-        Returns the ID.
+        Call this after a row has been prepended to the model.
     */
-    void* GetID() const;
+    void RowPrepended();
 
     /**
-        Returns @true if the ID is not @e @NULL.
+        Call this after a value has been changed.
     */
-    bool IsOk() const;
+    void RowValueChanged(unsigned int row, unsigned int col);
+
+    /**
+        Call this after rows have been deleted. The array will internally
+        get copied and sorted in descending order so that the rows with
+        the highest position will be deleted first.
+    */
+    void RowsDeleted(const wxArrayInt& rows);
+
+    /**
+        Called in order to set a value in the model.
+    */
+    bool SetValue(const wxVariant& variant, unsigned int row,
+                  unsigned int col);
 };
 
 
 
 /**
-    @class wxDataViewCtrl
+    @class wxDataViewVirtualListModel
     @wxheader{dataview.h}
 
-    wxDataViewCtrl is a control to display data either
+    wxDataViewVirtualListModel is a specialized data model which lets
+    you address an item by its position (row) rather than its
+    wxDataViewItem and as such offers the exact same interface as
+    wxDataViewIndexListModel. The important difference is that under
+    platforms other than OS X, using this model will result in a
+    truely virtual control able to handle millions of items as the
+    control doesn't store any item (a feature not supported by the
+    Carbon API under OS X).
+
+    @see wxDataViewIndexListModel for the API.
+
+    @library{wxbase}
+    @category{dvc}
+*/
+class wxDataViewVirtualListModel : public wxDataViewModel
+{
+public:
+    /**
+        Constructor.
+    */
+    wxDataViewVirtualListModel(unsigned int initial_size = 0);
+};
+
+
+
+/**
+    @class wxDataViewItemAttr
+    @wxheader{dataview.h}
+
+    This class is used to indicate to a wxDataViewCtrl
+    that a certain Item() has extra font attributes
+    for its renderer. For this, it is required to override
+    wxDataViewModel::GetAttr.
+
+    Attributes are currently only supported by
+    wxDataViewTextRendererText().
+
+    @library{wxadv}
+    @category{dvc}
+*/
+class wxDataViewItemAttr
+{
+public:
+    /**
+        Constructor.
+    */
+    wxDataViewItemAttr();
+
+    /**
+        Call this to indicate that the item shall be displayed in bold text.
+    */
+    void SetBold(bool set);
+
+    /**
+        Call this to indicate that the item shall be displayed with
+        that colour.
+    */
+    void SetColour(const wxColour& colour);
+
+    /**
+        Call this to indicate that the item shall be displayed in italic text.
+    */
+    void SetItalic(bool set);
+};
+
+
+
+/**
+    @class wxDataViewItem
+    @wxheader{dataview.h}
+
+    wxDataViewItem is a small opaque class that represents an
+    item in a wxDataViewCtrl in a
+    persistent way, i.e. indepent of the position of the
+    item in the control or changes to its contents. It must
+    hold a unique ID of type @e void* in its only field
+    and can be converted to a from it.
+
+    If the ID is @e @NULL the wxDataViewItem is invalid and
+    wxDataViewItem::IsOk will return @e @false
+    which used in many places in the API of wxDataViewCtrl
+    to indicate that e.g. no item was found. An ID of @NULL
+    is also used to indicate the invisible root. Examples
+    for this are
+    wxDataViewModel::GetParent and
+    wxDataViewModel::GetChildren.
+
+    @library{wxadv}
+    @category{dvc}
+*/
+class wxDataViewItem
+{
+public:
+    //@{
+    /**
+
+    */
+    wxDataViewItem(void* id = NULL);
+    wxDataViewItem(const wxDataViewItem& item);
+    //@}
+
+    /**
+        Returns the ID.
+    */
+    void* GetID() const;
+
+    /**
+        Returns @true if the ID is not @e @NULL.
+    */
+    bool IsOk() const;
+};
+
+
+
+/**
+    @class wxDataViewCtrl
+    @wxheader{dataview.h}
+
+    wxDataViewCtrl is a control to display data either
     in a tree like fashion or in a tabular form or both.
     If you only need to display a simple tree structure
     with an API more like the older wxTreeCtrl class,
@@ -677,11 +676,13 @@ public:
            Display fine rules between row if supported.
     @style{wxDV_VERT_RULES}
            Display fine rules between columns is supported.
+    @style{wxDV_VARIABLE_LINE_HEIGHT}
+           Allow variable line heights. This can be inefficient when displaying large number of items.
     @endStyleTable
 
     @library{wxadv}
-    @category{ctrl}
-    @appearance{dataviewctrl.png}
+    @category{ctrl,dvc}
+    <!-- @appearance{dataviewctrl.png} -->
 */
 class wxDataViewCtrl : public wxControl
 {
@@ -703,6 +704,14 @@ public:
     */
     ~wxDataViewCtrl();
 
+    /**
+        Add a wxDataViewColumn to the control. Returns
+        @e @true on success.
+        Note that there is a number of short cut methods which implicitly create
+        a wxDataViewColumn and a wxDataViewRenderer for it (see below).
+    */
+    virtual bool AppendColumn(wxDataViewColumn* col);
+
     //@{
     /**
         Appends a column for rendering a bitmap. Returns the wxDataViewColumn
@@ -722,19 +731,13 @@ public:
                                          int flags = wxDATAVIEW_COL_RESIZABLE);
     //@}
 
-    /**
-        Add a wxDataViewColumn to the control. Returns
-        @e @true on success.
-        Note that there is a number of short cut methods which implicitly create
-        a wxDataViewColumn and a
-        wxDataViewRenderer for it (see below).
-    */
-    virtual bool AppendColumn(wxDataViewColumn* col);
-
     //@{
     /**
         Appends a column for rendering a date. Returns the wxDataViewColumn
         created in the function or @NULL on failure.
+        
+        NB: The @e align parameter is applied to both the column header and
+        the column renderer.
     */
     wxDataViewColumn* AppendDateColumn(const wxString& label,
                                        unsigned int model_column,
@@ -753,8 +756,11 @@ public:
     //@{
     /**
         Appends a column for rendering text with an icon. Returns the wxDataViewColumn
-        created in the function or @NULL on failure. This uses the
-        wxDataViewIconTextRenderer.
+        created in the function or @NULL on failure. This method uses the
+        wxDataViewIconTextRenderer class.
+        
+        NB: The @e align parameter is applied to both the column header and
+        the column renderer.
     */
     wxDataViewColumn* AppendIconTextColumn(const wxString& label,
                                            unsigned int model_column,
@@ -773,8 +779,10 @@ public:
     //@{
     /**
         Appends a column for rendering a progress indicator. Returns the
-        wxDataViewColumn
-        created in the function or @NULL on failure.
+        wxDataViewColumn created in the function or @NULL on failure.
+        
+        NB: The @e align parameter is applied to both the column header and
+        the column renderer.
     */
     wxDataViewColumn* AppendProgressColumn(const wxString& label,
                                            unsigned int model_column,
@@ -794,6 +802,9 @@ public:
     /**
         Appends a column for rendering text. Returns the wxDataViewColumn
         created in the function or @NULL on failure.
+        
+        NB: The @e align parameter is applied to both the column header and
+        the column renderer.
     */
     wxDataViewColumn* AppendTextColumn(const wxString& label,
                                        unsigned int model_column,
@@ -813,6 +824,9 @@ public:
     /**
         Appends a column for rendering a toggle. Returns the wxDataViewColumn
         created in the function or @NULL on failure.
+        
+        NB: The @e align parameter is applied to both the column header and
+        the column renderer.
     */
     wxDataViewColumn* AppendToggleColumn(const wxString& label,
                                          unsigned int model_column,
@@ -829,8 +843,8 @@ public:
     //@}
 
     /**
-        Associates a wxDataViewModel with the
-        control. This increases the reference count of the model by 1.
+        Associates a wxDataViewModel with the control. This increases the reference
+        count of the model by 1.
     */
     virtual bool AssociateModel(wxDataViewModel* model);
 
@@ -991,7 +1005,7 @@ public:
     information.
 
     @library{wxbase}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewModelNotifier
 {
@@ -1014,7 +1028,7 @@ public:
     /**
         Get owning wxDataViewModel.
     */
-    wxDataViewModel* GetOwner();
+    wxDataViewModel* GetOwner() const;
 
     /**
         Called by owning model.
@@ -1072,10 +1086,9 @@ public:
     @class wxDataViewRenderer
     @wxheader{dataview.h}
 
-    This class is used by wxDataViewCtrl to
-    render the individual cells. One instance of a renderer class is
-    owned by wxDataViewColumn. There is
-    a number of ready-to-use renderers provided:
+    This class is used by wxDataViewCtrl to render the individual cells.
+    One instance of a renderer class is owned by a wxDataViewColumn. There
+    is a number of ready-to-use renderers provided:
     wxDataViewTextRenderer,
     wxDataViewTextRendererAttr,
     wxDataViewIconTextRenderer,
@@ -1123,20 +1136,20 @@ public:
 
 
     @library{wxadv}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewRenderer : public wxObject
 {
 public:
     /**
-        Constructor.
+        Constructor. 
     */
     wxDataViewRenderer(const wxString& varianttype,
                        wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
-                       int align = wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL);
+                       int align = wxDVR_DEFAULT_ALIGNMENT );
 
     /**
-        Returns the alignment.
+        Returns the alignment. See SetAlignment()
     */
     virtual int GetAlignment() const;
 
@@ -1148,7 +1161,7 @@ public:
     /**
         Returns pointer to the owning wxDataViewColumn.
     */
-    virtual wxDataViewColumn* GetOwner();
+    virtual wxDataViewColumn* GetOwner() const;
 
     /**
         This methods retrieves the value from the renderer in order to
@@ -1164,7 +1177,12 @@ public:
     virtual wxString GetVariantType();
 
     /**
-        Sets the alignment.
+        Sets the alignment of the renderer's content. The default value
+        of wxDVR_DEFAULT_ALIGMENT indicates that the content should 
+        have the same alignment as the column header. The method is
+        not implemented under OS X and the renderer always aligns its
+        contents as the column header on that platform. The other platforms
+        support both vertical and horizontal alignment.
     */
     virtual void SetAlignment( int align );
     /**
@@ -1203,7 +1221,7 @@ public:
     in-place editing if desired.
 
     @library{wxadv}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewTextRenderer : public wxDataViewRenderer
 {
@@ -1218,6 +1236,33 @@ public:
 
 
 
+/**
+    @class wxDataViewIconTextRenderer
+    @wxheader{dataview.h}
+
+    The wxDataViewIconTextRenderer class is used to display text with
+    a small icon next to it as it is typically done in a file manager.
+    This classes uses the wxDataViewIconText
+    helper class to store its data. wxDataViewIonText can be converted
+    to a from a wxVariant using the left shift
+    operator.
+
+    @library{wxadv}
+    @category{dvc}
+*/
+class wxDataViewIconTextRenderer : public wxDataViewRenderer
+{
+public:
+    /**
+
+    */
+    wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText",
+                               wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+                               int align = wxDVR_DEFAULT_ALIGNMENT );
+};
+
+
+
 /**
     @class wxDataViewProgressRenderer
     @wxheader{dataview.h}
@@ -1225,7 +1270,7 @@ public:
     wxDataViewProgressRenderer
 
     @library{wxadv}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewProgressRenderer : public wxDataViewRenderer
 {
@@ -1250,7 +1295,7 @@ public:
     The renderer only support variants of type @e long.
 
     @library{wxbase}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewSpinRenderer : public wxDataViewCustomRenderer
 {
@@ -1273,7 +1318,7 @@ public:
     wxDataViewToggleRenderer
 
     @library{wxadv}
-    @category{FIXME}
+    @category{dvc}
 */
 class wxDataViewToggleRenderer : public wxDataViewRenderer
 {
@@ -1288,650 +1333,652 @@ public:
 
 
 /**
-    @class wxDataViewTreeCtrl
+    @class wxDataViewDateRenderer
     @wxheader{dataview.h}
 
-    This class is a wxDataViewCtrl which internally
-    uses a wxDataViewTreeStore and forwards
-    most of its API to that class. Additionally, it uses a wxImageList
-    to store a list of icons. The main purpose of this class is to look
-    like a wxTreeCtrl to make a transition from it
-    to the wxDataViewCtrl class simpler.
+    wxDataViewDateRenderer
 
-    @library{wxbase}
-    @category{ctrl}
-    @appearance{dataviewtreectrl.png}
+    @library{wxadv}
+    @category{dvc}
 */
-class wxDataViewTreeCtrl : public wxDataViewCtrl
+class wxDataViewDateRenderer : public wxDataViewRenderer
 {
 public:
-    //@{
     /**
-        Constructor. Calls Create().
-    */
-    wxDataViewTreeCtrl();
-    wxDataViewTreeCtrl(wxWindow* parent, wxWindowID id,
-                       const wxPoint& pos = wxDefaultPosition,
-                       const wxSize& size = wxDefaultSize,
-                       long style = wxDV_NO_HEADER,
-                       const wxValidator& validator = wxDefaultValidator);
-    //@}
 
-    /**
-        Destructor. Deletes the image list if any.
     */
-    ~wxDataViewTreeCtrl();
+    wxDataViewDateRenderer(const wxString& varianttype = "datetime",
+                           wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE);
+};
 
-    /**
 
-    */
-    wxDataViewItem AppendContainer(const wxDataViewItem& parent,
-                                   const wxString& text,
-                                   int icon = -1,
-                                   int expanded = -1,
-                                   wxClientData* data = NULL);
 
-    /**
+/**
+    @class wxDataViewTextRendererAttr
+    @wxheader{dataview.h}
 
-    */
-    wxDataViewItem AppendItem(const wxDataViewItem& parent,
-                              const wxString& text,
-                              int icon = -1,
-                              wxClientData* data = NULL);
+    The same as wxDataViewTextRenderer but with
+    support for font attributes. Font attributes are currently only supported
+    under GTK+ and MSW.
 
-    /**
-        Creates the control and a wxDataViewTreeStore as
-        its internal model.
-    */
-    bool Create(wxWindow* parent, wxWindowID id,
-                const wxPoint& pos = wxDefaultPosition,
-                const wxSize& size = wxDefaultSize,
-                long style = wxDV_NO_HEADER,
-                const wxValidator& validator = wxDefaultValidator);
+    See also wxDataViewModel::GetAttr and
+    wxDataViewItemAttr.
 
+    @library{wxadv}
+    @category{dvc}
+*/
+class wxDataViewTextRendererAttr : public wxDataViewTextRenderer
+{
+public:
     /**
-        Calls the identical method from wxDataViewTreeStore.
+
     */
-    void DeleteAllItems();
+    wxDataViewTextRendererAttr(const wxString& varianttype = "string",
+                               wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+                               int align = wxDVR_DEFAULT_ALIGNMENT);
+};
+
+
+
+/**
+    @class wxDataViewCustomRenderer
+    @wxheader{dataview.h}
+
+    You need to derive a new class from wxDataViewCustomRenderer in
+    order to write a new renderer. You need to override at least
+    wxDataViewRenderer::SetValue,
+    wxDataViewRenderer::GetValue,
+    wxDataViewCustomRenderer::GetSize
+    and wxDataViewCustomRenderer::Render.
+
+    If you want your renderer to support in-place editing then you
+    also need to override
+    wxDataViewCustomRenderer::HasEditorCtrl,
+    wxDataViewCustomRenderer::CreateEditorCtrl
+    and wxDataViewCustomRenderer::GetValueFromEditorCtrl.
+    Note that a special event handler will be pushed onto that
+    editor control which handles ENTER and focus out events
+    in order to end the editing.
 
+    @library{wxadv}
+    @category{dvc}
+*/
+class wxDataViewCustomRenderer : public wxDataViewRenderer
+{
+public:
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Constructor.
     */
-    void DeleteChildren(const wxDataViewItem& item);
+    wxDataViewCustomRenderer(const wxString& varianttype = "string",
+                             wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+                             int align = wxDVR_DEFAULT_ALIGNMENT );
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Destructor.
     */
-    void DeleteItem(const wxDataViewItem& item);
+    ~wxDataViewCustomRenderer();
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    int GetChildCount(const wxDataViewItem& parent) const;
-
-    /**
-        Returns the image list.
+        Override this to react to double clicks or ENTER. This method will
+        only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
     */
-    wxImageList* GetImageList();
+    virtual bool Activate( wxRect cell,
+                           wxDataViewModel* model,
+                           const wxDataViewItem & item,
+                           unsigned int col );
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Override this to create the actual editor control once editing
+        is about to start. @a parent is the parent of the editor
+        control, @a labelRect indicates the position and
+        size of the editor control and @a value is its initial value:
     */
-    wxClientData* GetItemData(const wxDataViewItem& item) const;
+    virtual wxControl* CreateEditorCtrl(wxWindow* parent,
+                                        wxRect labelRect,
+                                        const wxVariant& value);
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Create DC on request. Internal.
     */
-    const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) const;
+    virtual wxDC* GetDC();
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Return size required to show content.
     */
-    const wxIcon GetItemIcon(const wxDataViewItem& item) const;
+    virtual wxSize GetSize();
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Overrride this so that the renderer can get the value
+        from the editor control (pointed to by @e editor):
     */
-    wxString GetItemText(const wxDataViewItem& item) const;
+    virtual bool GetValueFromEditorCtrl(wxControl* editor,
+                                        wxVariant& value);
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Override this and make it return @e @true in order to
+        indicate that this renderer supports in-place editing.
     */
-    wxDataViewItem GetNthChild(const wxDataViewItem& parent,
-                               unsigned int pos) const;
+    virtual bool HasEditorCtrl();
 
-    //@{
     /**
-        Returns the store.
+        Overrride this to react to a left click. This method will
+        only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
     */
-    wxDataViewTreeStore* GetStore() const;
-    const wxDataViewTreeStore* GetStore() const;
-    //@}
+    virtual bool LeftClick( wxPoint cursor,
+                            wxRect cell,
+                            wxDataViewModel * model,
+                            const wxDataViewItem & item,
+                            unsigned int col );
 
     /**
-        Calls the same method from wxDataViewTreeStore but uess
-        and index position in the image list instead of a wxIcon.
+        Override this to render the cell. Before this is called,
+        wxDataViewRenderer::SetValue was called
+        so that this instance knows what to render.
     */
-    wxDataViewItem InsertContainer(const wxDataViewItem& parent,
-                                   const wxDataViewItem& previous,
-                                   const wxString& text,
-                                   int icon = -1,
-                                   int expanded = -1,
-                                   wxClientData* data = NULL);
+    virtual bool Render(wxRect cell, wxDC* dc, int state);
 
     /**
-        Calls the same method from wxDataViewTreeStore but uess
-        and index position in the image list instead of a wxIcon.
+        This method should be called from within Render()
+        whenever you need to render simple text. This will ensure that the
+        correct colour, font and vertical alignment will be chosen so the
+        text will look the same as text drawn by native renderers.
     */
-    wxDataViewItem InsertItem(const wxDataViewItem& parent,
-                              const wxDataViewItem& previous,
-                              const wxString& text,
-                              int icon = -1,
-                              wxClientData* data = NULL);
+    bool RenderText(const wxString& text, int xoffset, wxRect cell,
+                    wxDC* dc, int state);
 
     /**
-        Calls the same method from wxDataViewTreeStore but uess
-        and index position in the image list instead of a wxIcon.
+        Overrride this to start a drag operation. Not yet
+        supported
     */
-    wxDataViewItem PrependContainer(const wxDataViewItem& parent,
-                                    const wxString& text,
-                                    int icon = -1,
-                                    int expanded = -1,
-                                    wxClientData* data = NULL);
+    virtual bool StartDrag(wxPoint cursor, wxRect cell,
+                           wxDataViewModel* model,
+                           const wxDataViewItem & item,
+                           unsigned int col);
+};
 
-    /**
-        Calls the same method from wxDataViewTreeStore but uess
-        and index position in the image list instead of a wxIcon.
-    */
-    wxDataViewItem PrependItem(const wxDataViewItem& parent,
-                               const wxString& text,
-                               int icon = -1,
-                               wxClientData* data = NULL);
 
-    /**
-        Sets the image list.
-    */
-    void SetImageList(wxImageList* imagelist);
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    void SetItemData(const wxDataViewItem& item, wxClientData* data);
+/**
+    @class wxDataViewBitmapRenderer
+    @wxheader{dataview.h}
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    void SetItemExpandedIcon(const wxDataViewItem& item,
-                             const wxIcon& icon);
+    wxDataViewBitmapRenderer
 
+    @library{wxadv}
+    @category{dvc}
+*/
+class wxDataViewBitmapRenderer : public wxDataViewRenderer
+{
+public:
     /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon);
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
     */
-    void SetItemText(const wxDataViewItem& item,
-                     const wxString& text);
+    wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap",
+                             wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+                             int align = wxDVR_DEFAULT_ALIGNMENT,
 };
 
 
 
 /**
-    @class wxDataViewTreeStore
+    @class wxDataViewColumn
     @wxheader{dataview.h}
 
-    wxDataViewTreeStore is a specialised wxDataViewModel
-    for displaying simple trees very much like wxTreeCtrl
-    does and it offers a similar API. This class actually stores the entire
-    tree (therefore its name) and implements all virtual methods from the base
-    class so it can be used directly without having to derive any class from it.
-    This comes at the price of much reduced flexibility.
+    This class represents a column in a wxDataViewCtrl.
+    One wxDataViewColumn is bound to one column in the data model,
+    to which the wxDataViewCtrl has been associated.
+
+    An instance of wxDataViewRenderer is used by
+    this class to render its data.
 
     @library{wxadv}
-    @category{FIXME}
+    @category{dvc}
 */
-class wxDataViewTreeStore : public wxDataViewModel
+class wxDataViewColumn : public wxObject
 {
 public:
+    //@{
     /**
-        Constructor. Creates the invisible root node internally.
+        Constructors.
     */
-    wxDataViewTreeStore();
+    wxDataViewColumn(const wxString& title,
+                     wxDataViewRenderer* renderer,
+                     unsigned int model_column,
+                     int width = wxDVC_DEFAULT_WIDTH,
+                     wxAlignment align = wxALIGN_CENTRE,
+                     int flags = wxDATAVIEW_COL_RESIZABLE);
+    wxDataViewColumn(const wxBitmap& bitmap,
+                     wxDataViewRenderer* renderer,
+                     unsigned int model_column,
+                     int width = wxDVC_DEFAULT_WIDTH,
+                     wxAlignment align = wxALIGN_CENTRE,
+                     int flags = wxDATAVIEW_COL_RESIZABLE);
+    //@}
 
     /**
         Destructor.
     */
-    ~wxDataViewTreeStore();
-
-    /**
-        Append a container.
-    */
-    wxDataViewItem AppendContainer(const wxDataViewItem& parent,
-                                   const wxString& text,
-                                   const wxIcon& icon = wxNullIcon,
-                                   const wxIcon& expanded = wxNullIcon,
-                                   wxClientData* data = NULL);
-
-    /**
-        Append an item.
-    */
-    wxDataViewItem AppendItem(const wxDataViewItem& parent,
-                              const wxString& text,
-                              const wxIcon& icon = wxNullIcon,
-                              wxClientData* data = NULL);
-
-    /**
-        Delete all item in the model.
-    */
-    void DeleteAllItems();
-
-    /**
-        Delete all children of the item, but not the item itself.
-    */
-    void DeleteChildren(const wxDataViewItem& item);
+    ~wxDataViewColumn();
 
     /**
-        Delete this item.
+        Returns the bitmap in the header of the column, if any.
     */
-    void DeleteItem(const wxDataViewItem& item);
+    const wxBitmap GetBitmap();
 
     /**
-        Return the number of children of item.
+        Returns the index of the column of the model, which this
+        wxDataViewColumn is displaying.
     */
-    int GetChildCount(const wxDataViewItem& parent) const;
+    unsigned int GetModelColumn();
 
     /**
-        Returns the client data asoociated with the item.
+        Returns the owning wxDataViewCtrl.
     */
-    wxClientData* GetItemData(const wxDataViewItem& item) const;
+    wxDataViewCtrl* GetOwner() const;
 
     /**
-        Returns the icon to display in expanded containers.
+        Returns the renderer of this wxDataViewColumn.
+        See also wxDataViewRenderer.
     */
-    const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) const;
+    wxDataViewRenderer* GetRenderer();
 
     /**
-        Returns the icon of the item.
+        Returns @true if the column is reorderable.
     */
-    const wxIcon GetItemIcon(const wxDataViewItem& item) const;
+    bool GetReorderable();
 
     /**
-        Returns the text of the item.
+        Returns @true if the column is sortable.
+        See SetSortable()
     */
-    wxString GetItemText(const wxDataViewItem& item) const;
+    bool GetSortable();
 
     /**
-        Returns the nth child item of item.
+        Returns the width of the column.
     */
-    wxDataViewItem GetNthChild(const wxDataViewItem& parent,
-                               unsigned int pos) const;
+    int GetWidth();
 
     /**
-        Inserts a container after @e previous.
+        Returns @true, if the sort order is ascending.
+        See also SetSortOrder()
     */
-    wxDataViewItem InsertContainer(const wxDataViewItem& parent,
-                                   const wxDataViewItem& previous,
-                                   const wxString& text,
-                                   const wxIcon& icon = wxNullIcon,
-                                   const wxIcon& expanded = wxNullIcon,
-                                   wxClientData* data = NULL);
+    bool IsSortOrderAscending();
 
     /**
-        Inserts an item after @e previous.
+        Set the alignment of the column header.
     */
-    wxDataViewItem InsertItem(const wxDataViewItem& parent,
-                              const wxDataViewItem& previous,
-                              const wxString& text,
-                              const wxIcon& icon = wxNullIcon,
-                              wxClientData* data = NULL);
+    void SetAlignment(wxAlignment align);
 
     /**
-        Inserts a container before the first child item or @e parent.
+        Set the bitmap of the column header.
     */
-    wxDataViewItem PrependContainer(const wxDataViewItem& parent,
-                                    const wxString& text,
-                                    const wxIcon& icon = wxNullIcon,
-                                    const wxIcon& expanded = wxNullIcon,
-                                    wxClientData* data = NULL);
+    void SetBitmap(const wxBitmap& bitmap);
 
     /**
-        Inserts an item before the first child item or @e parent.
+        Indicate wether the column can be reordered by the
+        user using the mouse. This is typically implemented
+        visually by dragging the header button around.
     */
-    wxDataViewItem PrependItem(const wxDataViewItem& parent,
-                               const wxString& text,
-                               const wxIcon& icon = wxNullIcon,
-                               wxClientData* data = NULL);
+    void SetReorderable(bool reorderable);
 
     /**
-        Sets the client data associated with the item.
+        Indicate the sort order if the implementation of the
+        wxDataViewCtrl supports it, most commonly by showing
+        a little arrow.
     */
-    void SetItemData(const wxDataViewItem& item, wxClientData* data);
+    void SetSortOrder(bool ascending);
 
     /**
-        Sets the expanded icon for the item.
+        Indicate that the column is sortable. This does
+        not show any sorting indicate yet, but it does
+        make the column header clickable. Call
+        SetSortOrder()
+        afterwards to actually make the sort indicator appear.
+        If @a sortable is @false, the column header is
+        no longer clickable and the sort indicator (little
+        arrow) will disappear.
     */
-    void SetItemExpandedIcon(const wxDataViewItem& item,
-                             const wxIcon& icon);
+    void SetSortable(bool sortable);
 
     /**
-        Sets the icon for the item.
+        Set the title of the column header to @e title.
     */
-    void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon);
+    void SetTitle(const wxString& title);
 };
 
 
 
 /**
-    @class wxDataViewDateRenderer
+    @class wxDataViewTreeCtrl
     @wxheader{dataview.h}
 
-    wxDataViewDateRenderer
+    This class is a wxDataViewCtrl which internally
+    uses a wxDataViewTreeStore and forwards
+    most of its API to that class. Additionally, it uses a wxImageList
+    to store a list of icons. The main purpose of this class is to look
+    like a wxTreeCtrl to make a transition from it
+    to the wxDataViewCtrl class simpler.
 
-    @library{wxadv}
-    @category{FIXME}
+    @library{wxbase}
+    @category{ctrl,dvc}
+    <!-- @appearance{dataviewtreectrl.png} -->
 */
-class wxDataViewDateRenderer : public wxDataViewRenderer
+class wxDataViewTreeCtrl : public wxDataViewCtrl
 {
 public:
+    //@{
     /**
+        Constructor. Calls Create().
+    */
+    wxDataViewTreeCtrl();
+    wxDataViewTreeCtrl(wxWindow* parent, wxWindowID id,
+                       const wxPoint& pos = wxDefaultPosition,
+                       const wxSize& size = wxDefaultSize,
+                       long style = wxDV_NO_HEADER,
+                       const wxValidator& validator = wxDefaultValidator);
+    //@}
 
+    /**
+        Destructor. Deletes the image list if any.
     */
-    wxDataViewDateRenderer(const wxString& varianttype = "datetime",
-                           wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE);
-};
+    ~wxDataViewTreeCtrl();
 
+    /**
 
+    */
+    wxDataViewItem AppendContainer(const wxDataViewItem& parent,
+                                   const wxString& text,
+                                   int icon = -1,
+                                   int expanded = -1,
+                                   wxClientData* data = NULL);
 
-/**
-    @class wxDataViewTextRendererAttr
-    @wxheader{dataview.h}
+    /**
 
-    The same as wxDataViewTextRenderer but with
-    support for font attributes. Font attributes are currently only supported
-    under GTK+ and MSW.
+    */
+    wxDataViewItem AppendItem(const wxDataViewItem& parent,
+                              const wxString& text,
+                              int icon = -1,
+                              wxClientData* data = NULL);
 
-    See also wxDataViewModel::GetAttr and
-    wxDataViewItemAttr.
+    /**
+        Creates the control and a wxDataViewTreeStore as
+        its internal model.
+    */
+    bool Create(wxWindow* parent, wxWindowID id,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxDV_NO_HEADER,
+                const wxValidator& validator = wxDefaultValidator);
 
-    @library{wxadv}
-    @category{FIXME}
-*/
-class wxDataViewTextRendererAttr : public wxDataViewTextRenderer
-{
-public:
     /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    void DeleteAllItems();
 
+    /**
+        Calls the identical method from wxDataViewTreeStore.
     */
-    wxDataViewTextRendererAttr(const wxString& varianttype = "string",
-                               wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
-                               int align = wxDVR_DEFAULT_ALIGNMENT);
-};
+    void DeleteChildren(const wxDataViewItem& item);
 
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    void DeleteItem(const wxDataViewItem& item);
 
-/**
-    @class wxDataViewCustomRenderer
-    @wxheader{dataview.h}
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    int GetChildCount(const wxDataViewItem& parent) const;
 
-    You need to derive a new class from wxDataViewCustomRenderer in
-    order to write a new renderer. You need to override at least
-    wxDataViewRenderer::SetValue,
-    wxDataViewRenderer::GetValue,
-    wxDataViewCustomRenderer::GetSize
-    and wxDataViewCustomRenderer::Render.
+    /**
+        Returns the image list.
+    */
+    wxImageList* GetImageList();
 
-    If you want your renderer to support in-place editing then you
-    also need to override
-    wxDataViewCustomRenderer::HasEditorCtrl,
-    wxDataViewCustomRenderer::CreateEditorCtrl
-    and wxDataViewCustomRenderer::GetValueFromEditorCtrl.
-    Note that a special event handler will be pushed onto that
-    editor control which handles ENTER and focus out events
-    in order to end the editing.
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    wxClientData* GetItemData(const wxDataViewItem& item) const;
 
-    @library{wxadv}
-    @category{FIXME}
-*/
-class wxDataViewCustomRenderer : public wxDataViewRenderer
-{
-public:
     /**
-        Constructor.
+        Calls the identical method from wxDataViewTreeStore.
     */
-    wxDataViewCustomRenderer(const wxString& varianttype = "string",
-                             wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
-                             int align = wxDVR_DEFAULT_ALIGNMENT );
+    const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) const;
 
     /**
-        Destructor.
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    const wxIcon GetItemIcon(const wxDataViewItem& item) const;
+
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    wxString GetItemText(const wxDataViewItem& item) const;
+
+    /**
+        Calls the identical method from wxDataViewTreeStore.
     */
-    ~wxDataViewCustomRenderer();
+    wxDataViewItem GetNthChild(const wxDataViewItem& parent,
+                               unsigned int pos) const;
 
+    //@{
     /**
-        Override this to react to double clicks or ENTER. This method will
-        only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
+        Returns the store.
     */
-    virtual bool Activate( wxRect cell,
-                           wxDataViewModel* model,
-                           const wxDataViewItem & item,
-                           unsigned int col );
+    wxDataViewTreeStore* GetStore() const;
+    const wxDataViewTreeStore* GetStore() const;
+    //@}
 
     /**
-        Override this to create the actual editor control once editing
-        is about to start. @a parent is the parent of the editor
-        control, @a labelRect indicates the position and
-        size of the editor control and @a value is its initial value:
+        Calls the same method from wxDataViewTreeStore but uess
+        and index position in the image list instead of a wxIcon.
     */
-    virtual wxControl* CreateEditorCtrl(wxWindow* parent,
-                                        wxRect labelRect,
-                                        const wxVariant& value);
+    wxDataViewItem InsertContainer(const wxDataViewItem& parent,
+                                   const wxDataViewItem& previous,
+                                   const wxString& text,
+                                   int icon = -1,
+                                   int expanded = -1,
+                                   wxClientData* data = NULL);
 
     /**
-        Create DC on request. Internal.
+        Calls the same method from wxDataViewTreeStore but uess
+        and index position in the image list instead of a wxIcon.
     */
-    virtual wxDC* GetDC();
+    wxDataViewItem InsertItem(const wxDataViewItem& parent,
+                              const wxDataViewItem& previous,
+                              const wxString& text,
+                              int icon = -1,
+                              wxClientData* data = NULL);
 
     /**
-        Return size required to show content.
+        Calls the same method from wxDataViewTreeStore but uess
+        and index position in the image list instead of a wxIcon.
     */
-    virtual wxSize GetSize();
+    wxDataViewItem PrependContainer(const wxDataViewItem& parent,
+                                    const wxString& text,
+                                    int icon = -1,
+                                    int expanded = -1,
+                                    wxClientData* data = NULL);
 
     /**
-        Overrride this so that the renderer can get the value
-        from the editor control (pointed to by @e editor):
+        Calls the same method from wxDataViewTreeStore but uess
+        and index position in the image list instead of a wxIcon.
     */
-    virtual bool GetValueFromEditorCtrl(wxControl* editor,
-                                        wxVariant& value);
+    wxDataViewItem PrependItem(const wxDataViewItem& parent,
+                               const wxString& text,
+                               int icon = -1,
+                               wxClientData* data = NULL);
 
     /**
-        Override this and make it return @e @true in order to
-        indicate that this renderer supports in-place editing.
+        Sets the image list.
     */
-    virtual bool HasEditorCtrl();
+    void SetImageList(wxImageList* imagelist);
 
     /**
-        Overrride this to react to a left click. This method will
-        only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
+        Calls the identical method from wxDataViewTreeStore.
     */
-    virtual bool LeftClick( wxPoint cursor,
-                            wxRect cell,
-                            wxDataViewModel * model,
-                            const wxDataViewItem & item,
-                            unsigned int col );
+    void SetItemData(const wxDataViewItem& item, wxClientData* data);
 
     /**
-        Override this to render the cell. Before this is called,
-        wxDataViewRenderer::SetValue was called
-        so that this instance knows what to render.
+        Calls the identical method from wxDataViewTreeStore.
     */
-    virtual bool Render(wxRect cell, wxDC* dc, int state);
+    void SetItemExpandedIcon(const wxDataViewItem& item,
+                             const wxIcon& icon);
 
     /**
-        This method should be called from within Render()
-        whenever you need to render simple text. This will ensure that the
-        correct colour, font and vertical alignment will be chosen so the
-        text will look the same as text drawn by native renderers.
+        Calls the identical method from wxDataViewTreeStore.
     */
-    bool RenderText(const wxString& text, int xoffset, wxRect cell,
-                    wxDC* dc, int state);
+    void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon);
 
     /**
-        Overrride this to start a drag operation. Not yet
-        supported
+        Calls the identical method from wxDataViewTreeStore.
     */
-    virtual bool StartDrag(wxPoint cursor, wxRect cell,
-                           wxDataViewModel* model,
-                           const wxDataViewItem & item,
-                           unsigned int col);
+    void SetItemText(const wxDataViewItem& item,
+                     const wxString& text);
 };
 
 
 
 /**
-    @class wxDataViewBitmapRenderer
+    @class wxDataViewTreeStore
     @wxheader{dataview.h}
 
-    wxDataViewBitmapRenderer
+    wxDataViewTreeStore is a specialised wxDataViewModel
+    for displaying simple trees very much like wxTreeCtrl
+    does and it offers a similar API. This class actually stores the entire
+    tree (therefore its name) and implements all virtual methods from the base
+    class so it can be used directly without having to derive any class from it.
+    This comes at the price of much reduced flexibility.
 
     @library{wxadv}
-    @category{FIXME}
+    @category{dvc}
 */
-class wxDataViewBitmapRenderer : public wxDataViewRenderer
+class wxDataViewTreeStore : public wxDataViewModel
 {
 public:
     /**
-
+        Constructor. Creates the invisible root node internally.
     */
-    wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap",
-                             wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
-                             int align = wxDVR_DEFAULT_ALIGNMENT,
-};
-
+    wxDataViewTreeStore();
 
-/**
-    @class wxDataViewColumn
-    @wxheader{dataview.h}
+    /**
+        Destructor.
+    */
+    ~wxDataViewTreeStore();
 
-    This class represents a column in a wxDataViewCtrl.
-    One wxDataViewColumn is bound to one column in the data model,
-    to which the wxDataViewCtrl has been associated.
+    /**
+        Append a container.
+    */
+    wxDataViewItem AppendContainer(const wxDataViewItem& parent,
+                                   const wxString& text,
+                                   const wxIcon& icon = wxNullIcon,
+                                   const wxIcon& expanded = wxNullIcon,
+                                   wxClientData* data = NULL);
 
-    An instance of wxDataViewRenderer is used by
-    this class to render its data.
+    /**
+        Append an item.
+    */
+    wxDataViewItem AppendItem(const wxDataViewItem& parent,
+                              const wxString& text,
+                              const wxIcon& icon = wxNullIcon,
+                              wxClientData* data = NULL);
 
-    @library{wxadv}
-    @category{FIXME}
-*/
-class wxDataViewColumn : public wxObject
-{
-public:
-    //@{
     /**
-        Constructors.
+        Delete all item in the model.
     */
-    wxDataViewColumn(const wxString& title,
-                     wxDataViewRenderer* renderer,
-                     unsigned int model_column,
-                     int width = wxDVC_DEFAULT_WIDTH,
-                     wxAlignment align = wxALIGN_CENTRE,
-                     int flags = wxDATAVIEW_COL_RESIZABLE);
-    wxDataViewColumn(const wxBitmap& bitmap,
-                     wxDataViewRenderer* renderer,
-                     unsigned int model_column,
-                     int width = wxDVC_DEFAULT_WIDTH,
-                     wxAlignment align = wxALIGN_CENTRE,
-                     int flags = wxDATAVIEW_COL_RESIZABLE);
-    //@}
+    void DeleteAllItems();
 
     /**
-        Destructor.
+        Delete all children of the item, but not the item itself.
     */
-    ~wxDataViewColumn();
+    void DeleteChildren(const wxDataViewItem& item);
 
     /**
-        Returns the bitmap in the header of the column, if any.
+        Delete this item.
     */
-    const wxBitmap GetBitmap();
+    void DeleteItem(const wxDataViewItem& item);
 
     /**
-        Returns the index of the column of the model, which this
-        wxDataViewColumn is displaying.
+        Return the number of children of item.
     */
-    unsigned int GetModelColumn();
+    int GetChildCount(const wxDataViewItem& parent) const;
 
     /**
-        Returns the owning wxDataViewCtrl.
+        Returns the client data asoociated with the item.
     */
-    wxDataViewCtrl* GetOwner();
+    wxClientData* GetItemData(const wxDataViewItem& item) const;
 
     /**
-        Returns the renderer of this wxDataViewColumn.
-        See also wxDataViewRenderer.
+        Returns the icon to display in expanded containers.
     */
-    wxDataViewRenderer* GetRenderer();
+    const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) const;
 
     /**
-        Returns @true if the column is reorderable.
+        Returns the icon of the item.
     */
-    bool GetReorderable();
+    const wxIcon GetItemIcon(const wxDataViewItem& item) const;
 
     /**
-        Returns @true if the column is sortable.
-        See SetSortable()
+        Returns the text of the item.
     */
-    bool GetSortable();
+    wxString GetItemText(const wxDataViewItem& item) const;
 
     /**
-        Returns the width of the column.
+        Returns the nth child item of item.
     */
-    int GetWidth();
+    wxDataViewItem GetNthChild(const wxDataViewItem& parent,
+                               unsigned int pos) const;
 
     /**
-        Returns @true, if the sort order is ascending.
-        See also SetSortOrder()
+        Inserts a container after @e previous.
     */
-    bool IsSortOrderAscending();
+    wxDataViewItem InsertContainer(const wxDataViewItem& parent,
+                                   const wxDataViewItem& previous,
+                                   const wxString& text,
+                                   const wxIcon& icon = wxNullIcon,
+                                   const wxIcon& expanded = wxNullIcon,
+                                   wxClientData* data = NULL);
 
     /**
-        Set the alignment of the column header.
+        Inserts an item after @e previous.
     */
-    void SetAlignment(wxAlignment align);
+    wxDataViewItem InsertItem(const wxDataViewItem& parent,
+                              const wxDataViewItem& previous,
+                              const wxString& text,
+                              const wxIcon& icon = wxNullIcon,
+                              wxClientData* data = NULL);
 
     /**
-        Set the bitmap of the column header.
+        Inserts a container before the first child item or @e parent.
     */
-    void SetBitmap(const wxBitmap& bitmap);
+    wxDataViewItem PrependContainer(const wxDataViewItem& parent,
+                                    const wxString& text,
+                                    const wxIcon& icon = wxNullIcon,
+                                    const wxIcon& expanded = wxNullIcon,
+                                    wxClientData* data = NULL);
 
     /**
-        Indicate wether the column can be reordered by the
-        user using the mouse. This is typically implemented
-        visually by dragging the header button around.
+        Inserts an item before the first child item or @e parent.
     */
-    void SetReorderable(bool reorderable);
+    wxDataViewItem PrependItem(const wxDataViewItem& parent,
+                               const wxString& text,
+                               const wxIcon& icon = wxNullIcon,
+                               wxClientData* data = NULL);
 
     /**
-        Indicate the sort order if the implementation of the
-        wxDataViewCtrl supports it, most commonly by showing
-        a little arrow.
+        Sets the client data associated with the item.
     */
-    void SetSortOrder(bool ascending);
+    void SetItemData(const wxDataViewItem& item, wxClientData* data);
 
     /**
-        Indicate that the column is sortable. This does
-        not show any sorting indicate yet, but it does
-        make the column header clickable. Call
-        SetSortOrder()
-        afterwards to actually make the sort indicator appear.
-        If @a sortable is @false, the column header is
-        no longer clickable and the sort indicator (little
-        arrow) will disappear.
+        Sets the expanded icon for the item.
     */
-    void SetSortable(bool sortable);
+    void SetItemExpandedIcon(const wxDataViewItem& item,
+                             const wxIcon& icon);
 
     /**
-        Set the title of the column header to @e title.
+        Sets the icon for the item.
     */
-    void SetTitle(const wxString& title);
+    void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon);
 };