From: Robert Roebling Date: Mon, 7 Apr 2008 00:07:14 +0000 (+0000) Subject: Mention that the renderer's alignment is ignored under OS X, reorder docs X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/5b99d5d8eae1091046d3fd475c48fa43073e03b3 Mention that the renderer's alignment is ignored under OS X, reorder docs git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/interface/dataview.h b/interface/dataview.h index 9f2eba2c45..fd58d96c90 100644 --- a/interface/dataview.h +++ b/interface/dataview.h @@ -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); }; + +