@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,
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.
{
public:
/**
- Constructor.
+ Constructor.
*/
wxDataViewRenderer(const wxString& varianttype,
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
/**
- @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);
};
+
+