X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4cc4bfafe5a31cb96f35b3ec9b19fa2b0b3a4eef..02dddcf7efa1f8bd2e68b00f47936049438f70e7:/interface/dataview.h diff --git a/interface/dataview.h b/interface/dataview.h index cdc7491ef4..533e8ec36b 100644 --- a/interface/dataview.h +++ b/interface/dataview.h @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: dataview.h -// Purpose: documentation for wxDataViewIconText class +// Purpose: interface of wxDataViewIconText // Author: wxWidgets team // RCS-ID: $Id$ // Licence: wxWindows license @@ -16,7 +16,7 @@ a wxVariant. @library{wxbase} - @category{FIXME} + @category{dvc} */ class wxDataViewIconText : public wxObject { @@ -33,12 +33,12 @@ public: /** Gets the icon. */ - const wxIcon GetIcon(); + const wxIcon GetIcon() const; /** Gets the text. */ - wxString GetText(); + wxString GetText() const; /** Set the icon. @@ -52,6 +52,7 @@ public: }; + /** @class wxDataViewEvent @wxheader{dataview.h} @@ -59,14 +60,14 @@ public: wxDataViewEvent - the event class for the wxDataViewCtrl notifications @library{wxadv} - @category{FIXME} + @category{events,dvc} */ class wxDataViewEvent : public wxNotifyEvent { public: //@{ /** - + */ wxDataViewEvent(wxEventType commandType = wxEVT_NULL, int winid = 0); @@ -76,13 +77,13 @@ public: /** Used to clone the event. */ - wxEvent* Clone(); + wxEvent* Clone() const; /** Returns the position of the column in the control or -1 if no column field was set by the event emitter. */ - int GetColumn(); + int GetColumn() const; /** Returns a pointer to the wxDataViewColumn from which @@ -93,20 +94,20 @@ public: /** Returns the wxDataViewModel associated with the event. */ - wxDataViewModel* GetModel(); + wxDataViewModel* GetModel() const; /** Returns a the position of a context menu event in screen coordinates. */ - wxPoint GetPosition(); + wxPoint GetPosition() const; /** Returns a reference to a value. */ - const wxVariant GetValue(); + const wxVariant GetValue() const; /** - + */ void SetColumn(int col); @@ -116,161 +117,17 @@ public: void SetDataViewColumn(wxDataViewColumn* col); /** - + */ void SetModel(wxDataViewModel* model); /** - - */ - void SetValue(const wxVariant& value); -}; - - -/** - @class wxDataViewIconTextRenderer - @wxheader{dataview.h} - The wxDataViewIconTextRenderer class is used to display text with - a small icon next to it as it is typically done in a file manager. - This classes uses the wxDataViewIconText - helper class to store its data. wxDataViewIonText can be converted - to a from a wxVariant using the left shift - operator. - - @library{wxadv} - @category{FIXME} -*/ -class wxDataViewIconTextRenderer : public wxDataViewRenderer -{ -public: - /** - */ - wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); + void SetValue(const wxVariant& value); }; -/** - @class wxDataViewIndexListModel - @wxheader{dataview.h} - - wxDataViewIndexListModel is a specialized data model which lets - you address an item by its position (row) rather than its - wxDataViewItem (which you can obtain from this class). - This model also provides its own - wxDataViewIndexListModel::Compare method - which sorts the model's data by the index. - - This model is special in the it is implemented differently under OS X - and other platforms. Under OS X a wxDataViewItem is always persistent - and this is also the case for this class. Under other platforms, the - meaning of a wxDataViewItem is changed to reflect a row number for - wxDataViewIndexListModel. The consequence of this is that - wxDataViewIndexListModel can be used as a virtual model with an - almost infinate number of items on platforms other than OS X. - - @library{wxbase} - @category{FIXME} -*/ -class wxDataViewIndexListModel : public wxDataViewModel -{ -public: - /** - Constructor. - */ - wxDataViewIndexListModel(unsigned int initial_size = 0); - - /** - Destructor. - */ - ~wxDataViewIndexListModel(); - - /** - Compare method that sorts the items by their index. - */ - int Compare(const wxDataViewItem& item1, - const wxDataViewItem& item2, - unsigned int column, bool ascending); - - /** - Oberride this to indicate that the row has special font attributes. - This only affects the - wxDataViewTextRendererText renderer. - See also wxDataViewItemAttr. - */ - bool GetAttr(unsigned int row, unsigned int col, - wxDataViewItemAttr& attr); - - /** - Returns the wxDataViewItem at the given @e row. - */ - wxDataViewItem GetItem(unsigned int row); - - /** - Returns the position of given @e item. - */ - unsigned int GetRow(const wxDataViewItem& item); - - /** - Override this to allow getting values from the model. - */ - void GetValue(wxVariant& variant, unsigned int row, - unsigned int col); - - /** - Call this after if the data has to be read again from - the model. This is useful after major changes when - calling the methods below (possibly thousands of times) - doesn't make sense. - */ - void Reset(unsigned int new_size); - - /** - Call this after a row has been appended to the model. - */ - void RowAppended(); - - /** - Call this after a row has been changed. - */ - void RowChanged(unsigned int row); - - /** - Call this after a row has been deleted. - */ - void RowDeleted(unsigned int row); - - /** - Call this after a row has been inserted at the given position. - */ - void RowInserted(unsigned int before); - - /** - Call this after a row has been prepended to the model. - */ - void RowPrepended(); - - /** - Call this after a value has been changed. - */ - void RowValueChanged(unsigned int row, unsigned int col); - - /** - Call this after rows have been deleted. The array will internally - get copied and sorted in descending order so that the rows with - the highest position will be deleted first. - */ - void RowsDeleted(const wxArrayInt& rows); - - /** - Called in order to set a value in the model. - */ - bool SetValue(const wxVariant& variant, unsigned int row, - unsigned int col); -}; - /** @class wxDataViewModel @@ -337,6 +194,7 @@ public: Currently wxWidgets provides the following models apart from the base model: wxDataViewIndexListModel, + wxDataViewVirtualListModel, wxDataViewTreeStore. Note that wxDataViewModel is reference counted, derives from @@ -355,7 +213,7 @@ public: @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewModel : public wxObjectRefData { @@ -396,7 +254,7 @@ public: /** Oberride this to indicate that the item has special font attributes. This only affects the - wxDataViewTextRendererText renderer. + wxDataViewTextRendererText() renderer. See also wxDataViewItemAttr. */ bool GetAttr(const wxDataViewItem& item, unsigned int col, @@ -407,26 +265,26 @@ public: an item. Returns the number of items. */ virtual unsigned int GetChildren(const wxDataViewItem& item, - wxDataViewItemArray& children); + wxDataViewItemArray& children) const; /** Override this to indicate the number of columns in the model. */ - virtual unsigned int GetColumnCount(); + virtual unsigned int GetColumnCount() const; /** Override this to indicate what type of data is stored in the column specified by @e col. This should return a string indicating the type of data as reported by wxVariant. */ - virtual wxString GetColumnType(unsigned int col); + virtual wxString GetColumnType(unsigned int col) const; /** Override this to indicate which wxDataViewItem representing the parent of @a item or an invalid wxDataViewItem if the the root item is the parent item. */ - virtual wxDataViewItem GetParent(const wxDataViewItem& item); + virtual wxDataViewItem GetParent(const wxDataViewItem& item) const; /** Override this to indicate the value of @e item @@ -434,7 +292,7 @@ public: */ virtual void GetValue(wxVariant& variant, const wxDataViewItem& item, - unsigned int col); + unsigned int col) const; /** Override this method to indicate if a container item merely @@ -442,7 +300,7 @@ public: acts a normal item with entries for futher columns. By default returns @e @false. */ - virtual bool HasContainerColumns(const wxDataViewItem& item); + virtual bool HasContainerColumns(const wxDataViewItem& item) const; /** Override this to indicate that the model provides a default compare @@ -453,13 +311,13 @@ public: should be used. See also wxDataViewIndexListModel for a model which makes use of this. */ - virtual bool HasDefaultCompare(); + virtual bool HasDefaultCompare() const; /** Override this to indicate of @a item is a container, i.e. if it can have child items. */ - virtual bool IsContainer(const wxDataViewItem& item); + virtual bool IsContainer(const wxDataViewItem& item) const; /** Call this to inform the model that an item has been added @@ -536,160 +394,167 @@ public: }; + /** - @class wxDataViewCustomRenderer + @class wxDataViewIndexListModel @wxheader{dataview.h} - You need to derive a new class from wxDataViewCustomRenderer in - order to write a new renderer. You need to override at least - wxDataViewRenderer::SetValue, - wxDataViewRenderer::GetValue, - wxDataViewCustomRenderer::GetSize - and wxDataViewCustomRenderer::Render. - - If you want your renderer to support in-place editing then you - also need to override - wxDataViewCustomRenderer::HasEditorCtrl, - wxDataViewCustomRenderer::CreateEditorCtrl - and wxDataViewCustomRenderer::GetValueFromEditorCtrl. - Note that a special event handler will be pushed onto that - editor control which handles ENTER and focus out events - in order to end the editing. + wxDataViewIndexListModel is a specialized data model which lets + you address an item by its position (row) rather than its + wxDataViewItem (which you can obtain from this class). + This model also provides its own wxDataViewIndexListModel::Compare + method which sorts the model's data by the index. + + This model is not a virtual model since the control stores + each wxDataViewItem. Use wxDataViewVirtualListModel if you + need to display millions of items or have other reason to + use a virtual control. - @library{wxadv} - @category{FIXME} + @library{wxbase} + @category{dvc} */ -class wxDataViewCustomRenderer : public wxDataViewRenderer +class wxDataViewIndexListModel : public wxDataViewModel { public: /** Constructor. */ - wxDataViewCustomRenderer(const wxString& varianttype = "string", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - bool no_init = false); + wxDataViewIndexListModel(unsigned int initial_size = 0); /** Destructor. */ - ~wxDataViewCustomRenderer(); + ~wxDataViewIndexListModel(); /** - Override this to react to double clicks or ENTER. + Compare method that sorts the items by their index. */ - virtual bool Activate(wxRect cell, wxDataViewModel* model, - unsigned int col, - unsigned int row); + int Compare(const wxDataViewItem& item1, + const wxDataViewItem& item2, + unsigned int column, bool ascending); /** - 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: + Oberride this to indicate that the row has special font attributes. + This only affects the + wxDataViewTextRendererText() renderer. + See also wxDataViewItemAttr. */ - virtual wxControl* CreateEditorCtrl(wxWindow* parent, - wxRect labelRect, - const wxVariant& value); + bool GetAttr(unsigned int row, unsigned int col, + wxDataViewItemAttr& attr); /** - Create DC on request. Internal. + Returns the wxDataViewItem at the given @e row. */ - virtual wxDC* GetDC(); + wxDataViewItem GetItem(unsigned int row) const; /** - Return size required to show content. + Returns the position of given @e item. */ - virtual wxSize GetSize(); + unsigned int GetRow(const wxDataViewItem& item) const; /** - Overrride this so that the renderer can get the value - from the editor control (pointed to by @e editor): + Override this to allow getting values from the model. */ - virtual bool GetValueFromEditorCtrl(wxControl* editor, - wxVariant& value); + void GetValue(wxVariant& variant, unsigned int row, + unsigned int col) const; /** - Override this and make it return @e @true in order to - indicate that this renderer supports in-place editing. + Call this after if the data has to be read again from + the model. This is useful after major changes when + calling the methods below (possibly thousands of times) + doesn't make sense. */ - virtual bool HasEditorCtrl(); + void Reset(unsigned int new_size); /** - Overrride this to react to a left click. + Call this after a row has been appended to the model. */ - virtual bool LeftClick(wxPoint cursor, wxRect cell, - wxDataViewModel* model, - unsigned int col, - unsigned int row); + void RowAppended(); /** - Override this to render the cell. Before this is called, - wxDataViewRenderer::SetValue was called - so that this instance knows what to render. + Call this after a row has been changed. */ - virtual bool Render(wxRect cell, wxDC* dc, int state); + void RowChanged(unsigned int row); /** - 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. + Call this after a row has been deleted. */ - bool RenderText(const wxString& text, int xoffset, wxRect cell, - wxDC* dc, int state); + void RowDeleted(unsigned int row); /** - Overrride this to react to a right click. + Call this after a row has been inserted at the given position. */ - virtual bool RightClick(wxPoint cursor, wxRect cell, - wxDataViewModel* model, - unsigned int col, - unsigned int row); + void RowInserted(unsigned int before); /** - Overrride this to start a drag operation. + Call this after a row has been prepended to the model. */ - virtual bool StartDrag(wxPoint cursor, wxRect cell, - wxDataViewModel* model, - unsigned int col, - unsigned int row); + void RowPrepended(); + + /** + Call this after a value has been changed. + */ + void RowValueChanged(unsigned int row, unsigned int col); + + /** + Call this after rows have been deleted. The array will internally + get copied and sorted in descending order so that the rows with + the highest position will be deleted first. + */ + void RowsDeleted(const wxArrayInt& rows); + + /** + Called in order to set a value in the model. + */ + bool SetValue(const wxVariant& variant, unsigned int row, + unsigned int col); }; + /** - @class wxDataViewBitmapRenderer + @class wxDataViewVirtualListModel @wxheader{dataview.h} - wxDataViewBitmapRenderer + wxDataViewVirtualListModel is a specialized data model which lets + you address an item by its position (row) rather than its + wxDataViewItem and as such offers the exact same interface as + wxDataViewIndexListModel. The important difference is that under + platforms other than OS X, using this model will result in a + truely virtual control able to handle millions of items as the + control doesn't store any item (a feature not supported by the + Carbon API under OS X). - @library{wxadv} - @category{FIXME} + @see wxDataViewIndexListModel for the API. + + @library{wxbase} + @category{dvc} */ -class wxDataViewBitmapRenderer : public wxDataViewRenderer +class wxDataViewVirtualListModel : public wxDataViewModel { public: /** - + Constructor. */ - wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); + wxDataViewVirtualListModel(unsigned int initial_size = 0); }; + /** @class wxDataViewItemAttr @wxheader{dataview.h} This class is used to indicate to a wxDataViewCtrl - that a certain Item has extra font attributes + that a certain Item() has extra font attributes for its renderer. For this, it is required to override wxDataViewModel::GetAttr. Attributes are currently only supported by - wxDataViewTextRendererText. + wxDataViewTextRendererText(). @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewItemAttr { @@ -717,6 +582,7 @@ public: }; + /** @class wxDataViewItem @wxheader{dataview.h} @@ -738,14 +604,14 @@ public: wxDataViewModel::GetChildren. @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewItem { public: //@{ /** - + */ wxDataViewItem(void* id = NULL); wxDataViewItem(const wxDataViewItem& item); @@ -754,15 +620,16 @@ public: /** Returns the ID. */ - void* GetID(); + void* GetID() const; /** Returns @true if the ID is not @e @NULL. */ - bool IsOk(); + bool IsOk() const; }; + /** @class wxDataViewCtrl @wxheader{dataview.h} @@ -799,42 +666,65 @@ public: from wxVariant::GetType. @beginStyleTable - @style{wxDV_SINGLE}: + @style{wxDV_SINGLE} Single selection mode. This is the default. - @style{wxDV_MULTIPLE}: + @style{wxDV_MULTIPLE} Multiple selection mode. - @style{wxDV_ROW_LINES}: + @style{wxDV_ROW_LINES} Use alternating colours for rows if supported by platform and theme. - @style{wxDV_HORIZ_RULES}: + @style{wxDV_HORIZ_RULES} Display fine rules between row if supported. - @style{wxDV_VERT_RULES}: + @style{wxDV_VERT_RULES} Display fine rules between columns is supported. + @style{wxDV_VARIABLE_LINE_HEIGHT} + Allow variable line heights. This can be inefficient when displaying large number of items. @endStyleTable @library{wxadv} - @category{ctrl} - @appearance{dataviewctrl.png} + @category{ctrl,dvc} + */ class wxDataViewCtrl : public wxControl { public: - //@{ /** - Constructor. Calls Create(). + Default Constructor. */ wxDataViewCtrl(); + + /** + Constructor. Calls Create(). + */ wxDataViewCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator); - //@} /** Destructor. */ ~wxDataViewCtrl(); + /** + Appends a wxDataViewColumn to the control. Returns @true on success. + Note that there is a number of short cut methods which implicitly create + a wxDataViewColumn and a wxDataViewRenderer for it (see below). + */ + virtual bool AppendColumn(wxDataViewColumn* col); + + /** + Prepends a wxDataViewColumn to the control. Returns @true on success. + Note that there is a number of short cut methods which implicitly create + a wxDataViewColumn and a wxDataViewRenderer for it. + */ + virtual bool PrependColumn(wxDataViewColumn* col); + + /** + Inserts a wxDataViewColumn to the control. Returns @true on success. + */ + virtual bool InsertColumn(unsigned int pos, wxDataViewColumn* col); + //@{ /** Appends a column for rendering a bitmap. Returns the wxDataViewColumn @@ -854,19 +744,13 @@ public: int flags = wxDATAVIEW_COL_RESIZABLE); //@} - /** - Add a wxDataViewColumn to the control. Returns - @e @true on success. - Note that there is a number of short cut methods which implicitly create - a wxDataViewColumn and a - wxDataViewRenderer for it (see below). - */ - virtual bool AppendColumn(wxDataViewColumn* col); - //@{ /** Appends a column for rendering a date. Returns the wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendDateColumn(const wxString& label, unsigned int model_column, @@ -885,8 +769,11 @@ public: //@{ /** Appends a column for rendering text with an icon. Returns the wxDataViewColumn - created in the function or @NULL on failure. This uses the - wxDataViewIconTextRenderer. + created in the function or @NULL on failure. This method uses the + wxDataViewIconTextRenderer class. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendIconTextColumn(const wxString& label, unsigned int model_column, @@ -905,8 +792,10 @@ public: //@{ /** Appends a column for rendering a progress indicator. Returns the - wxDataViewColumn - created in the function or @NULL on failure. + wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendProgressColumn(const wxString& label, unsigned int model_column, @@ -926,6 +815,9 @@ public: /** Appends a column for rendering text. Returns the wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendTextColumn(const wxString& label, unsigned int model_column, @@ -945,6 +837,9 @@ public: /** Appends a column for rendering a toggle. Returns the wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendToggleColumn(const wxString& label, unsigned int model_column, @@ -961,8 +856,8 @@ public: //@} /** - Associates a wxDataViewModel with the - control. This increases the reference count of the model by 1. + Associates a wxDataViewModel with the control. This increases the reference + count of the model by 1. */ virtual bool AssociateModel(wxDataViewModel* model); @@ -1011,67 +906,67 @@ public: position in the control which may change after reordering columns by the user. */ - virtual wxDataViewColumn* GetColumn(unsigned int pos); + virtual wxDataViewColumn* GetColumn(unsigned int pos) const; /** Returns the number of columns. */ - virtual unsigned int GetColumnCount(); + virtual unsigned int GetColumnCount() const; /** Returns the position of the column or -1 if not found in the control. */ - virtual int GetColumnPosition(const wxDataViewColumn* column); + virtual int GetColumnPosition(const wxDataViewColumn* column) const; /** Returns column containing the expanders. */ - wxDataViewColumn* GetExpanderColumn(); + wxDataViewColumn* GetExpanderColumn() const; /** Returns indentation. */ - int GetIndent(); + int GetIndent() const; /** Returns item rect. */ wxRect GetItemRect(const wxDataViewItem& item, - const wxDataViewColumn* col = NULL); + const wxDataViewColumn* col = NULL) const; /** Returns pointer to the data model associated with the control (if any). */ - virtual wxDataViewModel* GetModel(); + virtual wxDataViewModel* GetModel() const; /** Returns first selected item or an invalid item if none is selected. */ - wxDataViewItem GetSelection(); + wxDataViewItem GetSelection() const; /** Fills @a sel with currently selected items and returns their number. */ - int GetSelections(wxDataViewItemArray& sel); + int GetSelections(wxDataViewItemArray& sel) const; /** Returns the wxDataViewColumn currently responsible for sorting or @NULL if none has been selected. */ - virtual wxDataViewColumn* GetSortingColumn(); + virtual wxDataViewColumn* GetSortingColumn() const; /** Hittest. */ void HitTest(const wxPoint& point, wxDataViewItem& item, - wxDataViewColumn*& col); + wxDataViewColumn*& col) const; /** Return @true if the item is selected. */ - bool IsSelected(const wxDataViewItem& item); + bool IsSelected(const wxDataViewItem& item) const; /** Select the given item. @@ -1111,6 +1006,7 @@ public: }; + /** @class wxDataViewModelNotifier @wxheader{dataview.h} @@ -1122,7 +1018,7 @@ public: information. @library{wxbase} - @category{FIXME} + @category{dvc} */ class wxDataViewModelNotifier { @@ -1145,7 +1041,7 @@ public: /** Get owning wxDataViewModel. */ - wxDataViewModel* GetOwner(); + wxDataViewModel* GetOwner() const; /** Called by owning model. @@ -1198,14 +1094,14 @@ 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, @@ -1253,17 +1149,22 @@ public: @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewRenderer : public wxObject { public: /** - Constructor. + Constructor. */ wxDataViewRenderer(const wxString& varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - int alignment = wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL); + int align = wxDVR_DEFAULT_ALIGNMENT ); + + /** + Returns the alignment. See SetAlignment() + */ + virtual int GetAlignment() const; /** Returns the cell mode. @@ -1273,7 +1174,7 @@ public: /** Returns pointer to the owning wxDataViewColumn. */ - virtual wxDataViewColumn* GetOwner(); + virtual wxDataViewColumn* GetOwner() const; /** This methods retrieves the value from the renderer in order to @@ -1288,6 +1189,15 @@ public: */ virtual wxString GetVariantType(); + /** + Sets the alignment of the renderer's content. The default value + of wxDVR_DEFAULT_ALIGMENT indicates that the content should + have the same alignment as the column header. The method is + not implemented under OS X and the renderer always aligns its + contents as the column header on that platform. The other platforms + support both vertical and horizontal alignment. + */ + virtual void SetAlignment( int align ); /** Sets the owning wxDataViewColumn. This is usually called from within wxDataViewColumn. @@ -1315,6 +1225,7 @@ public: }; + /** @class wxDataViewTextRenderer @wxheader{dataview.h} @@ -1323,19 +1234,48 @@ public: in-place editing if desired. @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewTextRenderer : public wxDataViewRenderer { public: /** - + */ wxDataViewTextRenderer(const wxString& varianttype = "string", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); +}; + + + +/** + @class wxDataViewIconTextRenderer + @wxheader{dataview.h} + + The wxDataViewIconTextRenderer class is used to display text with + a small icon next to it as it is typically done in a file manager. + This classes uses the wxDataViewIconText + helper class to store its data. wxDataViewIonText can be converted + to a from a wxVariant using the left shift + operator. + + @library{wxadv} + @category{dvc} +*/ +class wxDataViewIconTextRenderer : public wxDataViewRenderer +{ +public: + /** + + */ + wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); }; + /** @class wxDataViewProgressRenderer @wxheader{dataview.h} @@ -1343,20 +1283,22 @@ public: wxDataViewProgressRenderer @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewProgressRenderer : public wxDataViewRenderer { public: /** - + */ wxDataViewProgressRenderer(const wxString& label = wxEmptyString, const wxString& varianttype = "long", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); }; + /** @class wxDataViewSpinRenderer @wxheader{dataview.h} @@ -1366,7 +1308,7 @@ public: The renderer only support variants of type @e long. @library{wxbase} - @category{FIXME} + @category{dvc} */ class wxDataViewSpinRenderer : public wxDataViewCustomRenderer { @@ -1377,10 +1319,11 @@ public: */ wxDataViewSpinRenderer(int min, int max, wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, - int alignment = wxDVR_DEFAULT_ALIGNMENT); + int align = wxDVR_DEFAULT_ALIGNMENT); }; + /** @class wxDataViewToggleRenderer @wxheader{dataview.h} @@ -1388,521 +1331,667 @@ public: wxDataViewToggleRenderer @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewToggleRenderer : public wxDataViewRenderer { public: /** - + */ wxDataViewToggleRenderer(const wxString& varianttype = "bool", 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{dvc} */ -class wxDataViewTreeCtrl : public wxDataViewCtrl +class wxDataViewDateRenderer : public wxDataViewRenderer { public: - //@{ /** - Constructor. Calls Create(). - */ - wxDataViewTreeCtrl(); - wxDataViewTreeCtrl(wxWindow* parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDV_NO_HEADER, - const wxValidator& validator = wxDefaultValidator); - //@} - /** - Destructor. Deletes the image list if any. */ - ~wxDataViewTreeCtrl(); + wxDataViewDateRenderer(const wxString& varianttype = "datetime", + wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE); +}; - /** - - */ - wxDataViewItem AppendContainer(const wxDataViewItem& parent, - const wxString& text, - int icon = -1, - int expanded = -1, - wxClientData* data = NULL); - /** - - */ - 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{dvc} +*/ +class wxDataViewTextRendererAttr : public wxDataViewTextRenderer +{ +public: /** - Calls the identical method from wxDataViewTreeStore. + */ - void DeleteItem(const wxDataViewItem& item); + wxDataViewTextRendererAttr(const wxString& varianttype = "string", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT); +}; + + +/** + @class wxDataViewCustomRenderer + @wxheader{dataview.h} + + You need to derive a new class from wxDataViewCustomRenderer in + order to write a new renderer. You need to override at least + wxDataViewRenderer::SetValue, + wxDataViewRenderer::GetValue, + wxDataViewCustomRenderer::GetSize + and wxDataViewCustomRenderer::Render. + + If you want your renderer to support in-place editing then you + also need to override + wxDataViewCustomRenderer::HasEditorCtrl, + wxDataViewCustomRenderer::CreateEditorCtrl + and wxDataViewCustomRenderer::GetValueFromEditorCtrl. + Note that a special event handler will be pushed onto that + editor control which handles ENTER and focus out events + in order to end the editing. + + @library{wxadv} + @category{dvc} +*/ +class wxDataViewCustomRenderer : public wxDataViewRenderer +{ +public: /** - Calls the identical method from wxDataViewTreeStore. + Constructor. */ - int GetChildCount(const wxDataViewItem& parent); + wxDataViewCustomRenderer(const wxString& varianttype = "string", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); /** - Returns the image list. + Destructor. */ - wxImageList* GetImageList(); + ~wxDataViewCustomRenderer(); /** - Calls the identical method from wxDataViewTreeStore. + Override this to react to double clicks or ENTER. This method will + only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. */ - wxClientData* GetItemData(const wxDataViewItem& item); + virtual bool Activate( wxRect cell, + wxDataViewModel* model, + const wxDataViewItem & item, + unsigned int col ); /** - Calls the identical method from wxDataViewTreeStore. + Override this to create the actual editor control once editing + is about to start. @a parent is the parent of the editor + control, @a labelRect indicates the position and + size of the editor control and @a value is its initial value: */ - const wxIcon GetItemExpandedIcon(const wxDataViewItem& item); + virtual wxControl* CreateEditorCtrl(wxWindow* parent, + wxRect labelRect, + const wxVariant& value); /** - Calls the identical method from wxDataViewTreeStore. + Create DC on request. Internal. */ - const wxIcon GetItemIcon(const wxDataViewItem& item); + virtual wxDC* GetDC(); /** - Calls the identical method from wxDataViewTreeStore. + Return size required to show content. */ - wxString GetItemText(const wxDataViewItem& item); + virtual wxSize GetSize(); /** - Calls the identical method from wxDataViewTreeStore. + Overrride this so that the renderer can get the value + from the editor control (pointed to by @e editor): */ - wxDataViewItem GetNthChild(const wxDataViewItem& parent, - unsigned int pos); + virtual bool GetValueFromEditorCtrl(wxControl* editor, + wxVariant& value); - //@{ /** - Returns the store. + Override this and make it return @e @true in order to + indicate that this renderer supports in-place editing. */ - wxDataViewTreeStore* GetStore(); - const wxDataViewTreeStore* GetStore(); - //@} + virtual bool HasEditorCtrl(); /** - Calls the same method from wxDataViewTreeStore but uess - and index position in the image list instead of a wxIcon. + Overrride this to react to a left click. This method will + only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. */ - wxDataViewItem InsertContainer(const wxDataViewItem& parent, - const wxDataViewItem& previous, - const wxString& text, - int icon = -1, - int expanded = -1, - wxClientData* data = NULL); + virtual bool LeftClick( wxPoint cursor, + wxRect cell, + wxDataViewModel * model, + const wxDataViewItem & item, + unsigned int col ); /** - Calls the same method from wxDataViewTreeStore but uess - and index position in the image list instead of a wxIcon. + Override this to render the cell. Before this is called, + wxDataViewRenderer::SetValue was called + so that this instance knows what to render. */ - wxDataViewItem InsertItem(const wxDataViewItem& parent, - const wxDataViewItem& previous, - const wxString& text, - int icon = -1, - wxClientData* data = NULL); + virtual bool Render(wxRect cell, wxDC* dc, int state); /** - Calls the same method from wxDataViewTreeStore but uess - and index position in the image list instead of a wxIcon. + This method should be called from within Render() + whenever you need to render simple text. This will ensure that the + correct colour, font and vertical alignment will be chosen so the + text will look the same as text drawn by native renderers. */ - wxDataViewItem PrependContainer(const wxDataViewItem& parent, - const wxString& text, - int icon = -1, - int expanded = -1, - wxClientData* data = NULL); + bool RenderText(const wxString& text, int xoffset, wxRect cell, + wxDC* dc, int state); /** - Calls the same method from wxDataViewTreeStore but uess - and index position in the image list instead of a wxIcon. + Overrride this to start a drag operation. Not yet + supported */ - wxDataViewItem PrependItem(const wxDataViewItem& parent, - const wxString& text, - int icon = -1, - wxClientData* data = NULL); + virtual bool StartDrag(wxPoint cursor, wxRect cell, + wxDataViewModel* model, + const wxDataViewItem & item, + unsigned int col); +}; + + + +/** + @class wxDataViewBitmapRenderer + @wxheader{dataview.h} + + wxDataViewBitmapRenderer + @library{wxadv} + @category{dvc} +*/ +class wxDataViewBitmapRenderer : public wxDataViewRenderer +{ +public: /** - Sets the image list. + */ - void SetImageList(wxImageList* imagelist); + wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT, +}; + + +/** + @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{dvc} +*/ +class wxDataViewColumn : public wxObject +{ +public: + //@{ /** - Calls the identical method from wxDataViewTreeStore. + Constructors. */ - void SetItemData(const wxDataViewItem& item, wxClientData* data); + 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); + //@} /** - Calls the identical method from wxDataViewTreeStore. + Destructor. */ - void SetItemExpandedIcon(const wxDataViewItem& item, - const wxIcon& icon); + ~wxDataViewColumn(); /** - Calls the identical method from wxDataViewTreeStore. + Returns the bitmap in the header of the column, if any. */ - void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon); + const wxBitmap GetBitmap(); /** - Calls the identical method from wxDataViewTreeStore. + Returns the index of the column of the model, which this + wxDataViewColumn is displaying. */ - void SetItemText(const wxDataViewItem& item, - const wxString& text); + unsigned int GetModelColumn(); + + /** + Returns the owning wxDataViewCtrl. + */ + wxDataViewCtrl* GetOwner() const; + + /** + Returns the renderer of this wxDataViewColumn. + See also wxDataViewRenderer. + */ + wxDataViewRenderer* GetRenderer(); + + /** + Returns @true if the column is reorderable. + */ + bool GetReorderable(); + + /** + Returns @true if the column is sortable. + See SetSortable() + */ + bool GetSortable(); + + /** + Returns the width of the column. + */ + int GetWidth(); + + /** + Returns @true, if the sort order is ascending. + See also SetSortOrder() + */ + bool IsSortOrderAscending(); + + /** + Set the alignment of the column header. + */ + void SetAlignment(wxAlignment align); + + /** + Set the bitmap of the column header. + */ + void SetBitmap(const wxBitmap& bitmap); + + /** + Indicate wether the column can be reordered by the + user using the mouse. This is typically implemented + visually by dragging the header button around. + */ + void SetReorderable(bool reorderable); + + /** + Indicate the sort order if the implementation of the + wxDataViewCtrl supports it, most commonly by showing + a little arrow. + */ + void SetSortOrder(bool ascending); + + /** + 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 SetSortable(bool sortable); + + /** + Set the title of the column header to @e title. + */ + void SetTitle(const wxString& title); }; + /** - @class wxDataViewTreeStore + @class wxDataViewTreeCtrl @wxheader{dataview.h} - wxDataViewTreeStore is a specialised wxDataViewModel - for displaying simple trees very much like wxTreeCtrl - does and it offers a similar API. This class actually stores the entire - tree (therefore its name) and implements all virtual methods from the base - class so it can be used directly without having to derive any class from it. - This comes at the price of much reduced flexibility. + This class is a wxDataViewCtrl which internally + uses a wxDataViewTreeStore and forwards + most of its API to that class. Additionally, it uses a wxImageList + to store a list of icons. The main purpose of this class is to look + like a wxTreeCtrl to make a transition from it + to the wxDataViewCtrl class simpler. - @library{wxadv} - @category{FIXME} + @library{wxbase} + @category{ctrl,dvc} + */ -class wxDataViewTreeStore : public wxDataViewModel +class wxDataViewTreeCtrl : public wxDataViewCtrl { public: + //@{ /** - Constructor. Creates the invisible root node internally. + Constructor. Calls Create(). */ - wxDataViewTreeStore(); + wxDataViewTreeCtrl(); + wxDataViewTreeCtrl(wxWindow* parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDV_NO_HEADER, + const wxValidator& validator = wxDefaultValidator); + //@} /** - Destructor. + Destructor. Deletes the image list if any. */ - ~wxDataViewTreeStore(); + ~wxDataViewTreeCtrl(); /** - Append a container. + */ wxDataViewItem AppendContainer(const wxDataViewItem& parent, const wxString& text, - const wxIcon& icon = wxNullIcon, - const wxIcon& expanded = wxNullIcon, + int icon = -1, + int expanded = -1, wxClientData* data = NULL); /** - Append an item. + */ wxDataViewItem AppendItem(const wxDataViewItem& parent, const wxString& text, - const wxIcon& icon = wxNullIcon, + int icon = -1, wxClientData* data = NULL); /** - Delete all item in the model. + 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(); /** - Delete all children of the item, but not the item itself. + Calls the identical method from wxDataViewTreeStore. */ void DeleteChildren(const wxDataViewItem& item); /** - Delete this item. + Calls the identical method from wxDataViewTreeStore. */ void DeleteItem(const wxDataViewItem& item); /** - Return the number of children of item. + Calls the identical method from wxDataViewTreeStore. */ - int GetChildCount(const wxDataViewItem& parent); + int GetChildCount(const wxDataViewItem& parent) const; /** - Returns the client data asoociated with the item. + Returns the image list. */ - wxClientData* GetItemData(const wxDataViewItem& item); + wxImageList* GetImageList(); /** - Returns the icon to display in expanded containers. + Calls the identical method from wxDataViewTreeStore. */ - const wxIcon GetItemExpandedIcon(const wxDataViewItem& item); + wxClientData* GetItemData(const wxDataViewItem& item) const; /** - Returns the icon of the item. + Calls the identical method from wxDataViewTreeStore. */ - const wxIcon GetItemIcon(const wxDataViewItem& item); + const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) const; /** - Returns the text of the item. + Calls the identical method from wxDataViewTreeStore. */ - wxString GetItemText(const wxDataViewItem& item); + const wxIcon GetItemIcon(const wxDataViewItem& item) const; /** - Returns the nth child item of item. + Calls the identical method from wxDataViewTreeStore. + */ + wxString GetItemText(const wxDataViewItem& item) const; + + /** + Calls the identical method from wxDataViewTreeStore. */ wxDataViewItem GetNthChild(const wxDataViewItem& parent, - unsigned int pos); + unsigned int pos) const; + //@{ /** - Inserts a container after @e previous. + Returns the store. + */ + wxDataViewTreeStore* GetStore() const; + const wxDataViewTreeStore* GetStore() const; + //@} + + /** + Calls the same method from wxDataViewTreeStore but uess + and index position in the image list instead of a wxIcon. */ wxDataViewItem InsertContainer(const wxDataViewItem& parent, const wxDataViewItem& previous, const wxString& text, - const wxIcon& icon = wxNullIcon, - const wxIcon& expanded = wxNullIcon, + int icon = -1, + int expanded = -1, wxClientData* data = NULL); /** - Inserts an item after @e previous. + Calls the same method from wxDataViewTreeStore but uess + and index position in the image list instead of a wxIcon. */ wxDataViewItem InsertItem(const wxDataViewItem& parent, const wxDataViewItem& previous, const wxString& text, - const wxIcon& icon = wxNullIcon, + int icon = -1, wxClientData* data = NULL); /** - Inserts a container before the first child item or @e parent. + Calls the same method from wxDataViewTreeStore but uess + and index position in the image list instead of a wxIcon. */ wxDataViewItem PrependContainer(const wxDataViewItem& parent, const wxString& text, - const wxIcon& icon = wxNullIcon, - const wxIcon& expanded = wxNullIcon, + int icon = -1, + int expanded = -1, wxClientData* data = NULL); /** - Inserts an item before the first child item or @e parent. + Calls the same method from wxDataViewTreeStore but uess + and index position in the image list instead of a wxIcon. */ wxDataViewItem PrependItem(const wxDataViewItem& parent, const wxString& text, - const wxIcon& icon = wxNullIcon, + int icon = -1, wxClientData* data = NULL); /** - Sets the client data associated with the item. + Sets the image list. + */ + void SetImageList(wxImageList* imagelist); + + /** + Calls the identical method from wxDataViewTreeStore. */ void SetItemData(const wxDataViewItem& item, wxClientData* data); /** - Sets the expanded icon for the item. + Calls the identical method from wxDataViewTreeStore. */ void SetItemExpandedIcon(const wxDataViewItem& item, const wxIcon& icon); /** - Sets the icon for the item. + Calls the identical method from wxDataViewTreeStore. */ void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon); -}; - - -/** - @class wxDataViewDateRenderer - @wxheader{dataview.h} - wxDataViewDateRenderer - - @library{wxadv} - @category{FIXME} -*/ -class wxDataViewDateRenderer : public wxDataViewRenderer -{ -public: /** - + Calls the identical method from wxDataViewTreeStore. */ - wxDataViewDateRenderer(const wxString& varianttype = "datetime", - wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE); + void SetItemText(const wxDataViewItem& item, + const wxString& text); }; + /** - @class wxDataViewTextRendererAttr + @class wxDataViewTreeStore @wxheader{dataview.h} - The same as wxDataViewTextRenderer but with - support for font attributes. Font attributes are currently only supported - under GTK+ and MSW. - - See also wxDataViewModel::GetAttr and - wxDataViewItemAttr. + wxDataViewTreeStore is a specialised wxDataViewModel + for displaying simple trees very much like wxTreeCtrl + does and it offers a similar API. This class actually stores the entire + tree (therefore its name) and implements all virtual methods from the base + class so it can be used directly without having to derive any class from it. + This comes at the price of much reduced flexibility. @library{wxadv} - @category{FIXME} + @category{dvc} */ -class wxDataViewTextRendererAttr : public wxDataViewTextRenderer +class wxDataViewTreeStore : public wxDataViewModel { public: /** - + Constructor. Creates the invisible root node internally. */ - wxDataViewTextRendererAttr(const wxString& varianttype = "string", - 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); }; +