]> git.saurik.com Git - wxWidgets.git/commitdiff
Mention that the renderer's alignment is ignored under OS X, reorder docs
authorRobert Roebling <robert@roebling.de>
Mon, 7 Apr 2008 00:07:14 +0000 (00:07 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 7 Apr 2008 00:07:14 +0000 (00:07 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

interface/dataview.h

index 9f2eba2c455a1e308e005f8925a86acbc38dbf43..fd58d96c90820dc818a074a8c87190e005994cf0 100644 (file)
@@ -1072,10 +1072,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,
@@ -1085,6 +1084,11 @@ public:
     wxDataViewDateRenderer.
     wxDataViewSpinRenderer.
 
+    Note that the @e alignment parameter is ignored under OS X and
+    the alignment is controlled by wxDataViewColumn::GetAlignment()
+    so that under OS X, column header alignment and column content
+    alignment are always the same and cannot be set independently.
+    
     Additionally, the user can write own renderers by deriving from
     wxDataViewCustomRenderer.
 
@@ -1129,7 +1133,7 @@ class wxDataViewRenderer : public wxObject
 {
 public:
     /**
-        Constructor.
+        Constructor. 
     */
     wxDataViewRenderer(const wxString& varianttype,
                        wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
@@ -1288,650 +1292,654 @@ 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{FIXME}
 */
-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();
-
     /**
 
     */
-    wxDataViewItem AppendContainer(const wxDataViewItem& parent,
-                                   const wxString& text,
-                                   int icon = -1,
-                                   int expanded = -1,
-                                   wxClientData* data = NULL);
+    wxDataViewDateRenderer(const wxString& varianttype = "datetime",
+                           wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE);
+};
 
-    /**
 
-    */
-    wxDataViewItem AppendItem(const wxDataViewItem& parent,
-                              const wxString& text,
-                              int icon = -1,
-                              wxClientData* data = NULL);
 
-    /**
-        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);
+/**
+    @class wxDataViewTextRendererAttr
+    @wxheader{dataview.h}
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    void DeleteAllItems();
+    The same as wxDataViewTextRenderer but with
+    support for font attributes. Font attributes are currently only supported
+    under GTK+ and MSW.
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    void DeleteChildren(const wxDataViewItem& item);
+    See also wxDataViewModel::GetAttr and
+    wxDataViewItemAttr.
 
+    @library{wxadv}
+    @category{FIXME}
+*/
+class wxDataViewTextRendererAttr : public wxDataViewTextRenderer
+{
+public:
     /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    void DeleteItem(const wxDataViewItem& item);
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
     */
-    int GetChildCount(const wxDataViewItem& parent) const;
+    wxDataViewTextRendererAttr(const wxString& varianttype = "string",
+                               wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+                               int align = wxDVR_DEFAULT_ALIGNMENT);
+};
 
-    /**
-        Returns the image list.
-    */
-    wxImageList* GetImageList();
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    wxClientData* GetItemData(const wxDataViewItem& item) const;
+/**
+    @class wxDataViewCustomRenderer
+    @wxheader{dataview.h}
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) 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.
 
-    /**
-        Calls the identical method from wxDataViewTreeStore.
-    */
-    const wxIcon GetItemIcon(const wxDataViewItem& item) const;
+    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{FIXME}
+*/
+class wxDataViewCustomRenderer : public wxDataViewRenderer
+{
+public:
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Constructor.
     */
-    wxString GetItemText(const wxDataViewItem& item) const;
+    wxDataViewCustomRenderer(const wxString& varianttype = "string",
+                             wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+                             int align = wxDVR_DEFAULT_ALIGNMENT );
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Destructor.
     */
-    wxDataViewItem GetNthChild(const wxDataViewItem& parent,
-                               unsigned int pos) const;
+    ~wxDataViewCustomRenderer();
 
-    //@{
     /**
-        Returns the store.
+        Override this to react to double clicks or ENTER. This method will
+        only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
     */
-    wxDataViewTreeStore* GetStore() const;
-    const wxDataViewTreeStore* GetStore() const;
-    //@}
+    virtual bool Activate( 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 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:
     */
-    wxDataViewItem InsertContainer(const wxDataViewItem& parent,
-                                   const wxDataViewItem& previous,
-                                   const wxString& text,
-                                   int icon = -1,
-                                   int expanded = -1,
-                                   wxClientData* data = NULL);
+    virtual wxControl* CreateEditorCtrl(wxWindow* parent,
+                                        wxRect labelRect,
+                                        const wxVariant& value);
 
     /**
-        Calls the same method from wxDataViewTreeStore but uess
-        and index position in the image list instead of a wxIcon.
+        Create DC on request. Internal.
     */
-    wxDataViewItem InsertItem(const wxDataViewItem& parent,
-                              const wxDataViewItem& previous,
-                              const wxString& text,
-                              int icon = -1,
-                              wxClientData* data = NULL);
+    virtual wxDC* GetDC();
 
     /**
-        Calls the same method from wxDataViewTreeStore but uess
-        and index position in the image list instead of a wxIcon.
+        Return size required to show content.
     */
-    wxDataViewItem PrependContainer(const wxDataViewItem& parent,
-                                    const wxString& text,
-                                    int icon = -1,
-                                    int expanded = -1,
-                                    wxClientData* data = NULL);
+    virtual wxSize GetSize();
 
     /**
-        Calls the same method from wxDataViewTreeStore but uess
-        and index position in the image list instead of a wxIcon.
+        Overrride this so that the renderer can get the value
+        from the editor control (pointed to by @e editor):
     */
-    wxDataViewItem PrependItem(const wxDataViewItem& parent,
-                               const wxString& text,
-                               int icon = -1,
-                               wxClientData* data = NULL);
+    virtual bool GetValueFromEditorCtrl(wxControl* editor,
+                                        wxVariant& value);
 
     /**
-        Sets the image list.
+        Override this and make it return @e @true in order to
+        indicate that this renderer supports in-place editing.
     */
-    void SetImageList(wxImageList* imagelist);
+    virtual bool HasEditorCtrl();
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Overrride this to react to a left click. This method will
+        only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
     */
-    void SetItemData(const wxDataViewItem& item, wxClientData* data);
+    virtual bool LeftClick( wxPoint cursor,
+                            wxRect cell,
+                            wxDataViewModel * model,
+                            const wxDataViewItem & item,
+                            unsigned int col );
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Override this to render the cell. Before this is called,
+        wxDataViewRenderer::SetValue was called
+        so that this instance knows what to render.
     */
-    void SetItemExpandedIcon(const wxDataViewItem& item,
-                             const wxIcon& icon);
+    virtual bool Render(wxRect cell, wxDC* dc, int state);
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        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.
     */
-    void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon);
+    bool RenderText(const wxString& text, int xoffset, wxRect cell,
+                    wxDC* dc, int state);
 
     /**
-        Calls the identical method from wxDataViewTreeStore.
+        Overrride this to start a drag operation. Not yet
+        supported
     */
-    void SetItemText(const wxDataViewItem& item,
-                     const wxString& text);
+    virtual bool StartDrag(wxPoint cursor, wxRect cell,
+                           wxDataViewModel* model,
+                           const wxDataViewItem & item,
+                           unsigned int col);
 };
 
 
 
 /**
-    @class wxDataViewTreeStore
+    @class wxDataViewBitmapRenderer
     @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.
+    wxDataViewBitmapRenderer
 
     @library{wxadv}
     @category{FIXME}
 */
-class wxDataViewTreeStore : public wxDataViewModel
+class wxDataViewBitmapRenderer : public wxDataViewRenderer
 {
 public:
     /**
-        Constructor. Creates the invisible root node internally.
-    */
-    wxDataViewTreeStore();
 
-    /**
-        Destructor.
     */
-    ~wxDataViewTreeStore();
+    wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap",
+                             wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+                             int align = wxDVR_DEFAULT_ALIGNMENT,
+};
+
 
-    /**
-        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);
 
+/**
+    @class wxDataViewColumn
+    @wxheader{dataview.h}
+
+    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}
+*/
+class wxDataViewColumn : public wxObject
+{
+public:
+    //@{
     /**
-        Delete all item in the model.
+        Constructors.
     */
-    void DeleteAllItems();
+    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);
+    //@}
 
     /**
-        Delete all children of the item, but not the item itself.
+        Destructor.
     */
-    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();
 
     /**
-        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}
+    @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);
+
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    void DeleteAllItems();
 
-    @library{wxadv}
-    @category{FIXME}
-*/
-class wxDataViewTextRendererAttr : public wxDataViewTextRenderer
-{
-public:
     /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    void DeleteChildren(const wxDataViewItem& item);
 
+    /**
+        Calls the identical method from wxDataViewTreeStore.
     */
-    wxDataViewTextRendererAttr(const wxString& varianttype = "string",
-                               wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
-                               int align = wxDVR_DEFAULT_ALIGNMENT);
-};
+    void DeleteItem(const wxDataViewItem& item);
 
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    int GetChildCount(const wxDataViewItem& parent) const;
 
-/**
-    @class wxDataViewCustomRenderer
-    @wxheader{dataview.h}
+    /**
+        Returns the image list.
+    */
+    wxImageList* GetImageList();
 
-    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.
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    wxClientData* GetItemData(const wxDataViewItem& item) const;
 
-    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.
+    */
+    const wxIcon GetItemExpandedIcon(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 GetItemIcon(const wxDataViewItem& item) const;
 
     /**
-        Destructor.
+        Calls the identical method from wxDataViewTreeStore.
     */
-    ~wxDataViewCustomRenderer();
+    wxString GetItemText(const wxDataViewItem& item) const;
+
+    /**
+        Calls the identical method from wxDataViewTreeStore.
+    */
+    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}
 */
-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);
 };
 
+
+