1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxDataViewIconText 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  10     @class wxDataViewIconText 
  12     wxDataViewIconText is used by wxDataViewIconTextRenderer for data transfer. 
  13     This class can be converted to and from a wxVariant. 
  18 class wxDataViewIconText 
: public wxObject
 
  25     wxDataViewIconText(const wxString
& text 
= wxEmptyString
, 
  26                        const wxIcon
& icon 
= wxNullIcon
); 
  27     wxDataViewIconText(const wxDataViewIconText
& other
); 
  33     const wxIcon
& GetIcon() const; 
  38     wxString 
GetText() const; 
  43     void SetIcon(const wxIcon
& icon
); 
  48     void SetText(const wxString
& text
); 
  54     @class wxDataViewEvent 
  56     This is the event class for the wxDataViewCtrl notifications. 
  61 class wxDataViewEvent 
: public wxNotifyEvent
 
  66         Constructor. Typically used by wxWidgets internals only. 
  68     wxDataViewEvent(wxEventType commandType 
= wxEVT_NULL
, 
  70     wxDataViewEvent(const wxDataViewEvent
& event
); 
  74         Used to clone the event. 
  76     wxEvent
* Clone() const; 
  79         Returns the position of the column in the control or -1 
  80         if no column field was set by the event emitter. 
  82     int GetColumn() const; 
  85         Returns a pointer to the wxDataViewColumn from which 
  86         the event was emitted or @NULL. 
  88     wxDataViewColumn
* GetDataViewColumn() const; 
  91         Returns the wxDataViewModel associated with the event. 
  93     wxDataViewModel
* GetModel() const; 
  96         Returns a the position of a context menu event in screen coordinates. 
  98     wxPoint 
GetPosition() const; 
 101         Returns a reference to a value. 
 103     const wxVariant
& GetValue() const; 
 106         Sets the column index associated with this event. 
 108     void SetColumn(int col
); 
 111         For wxEVT_DATAVIEW_COLUMN_HEADER_CLICKED only. 
 113     void SetDataViewColumn(wxDataViewColumn
* col
); 
 116         Sets the dataview model associated with this event. 
 118     void SetModel(wxDataViewModel
* model
); 
 121         Sets the value associated with this event. 
 123     void SetValue(const wxVariant
& value
); 
 129     @class wxDataViewModel 
 131     wxDataViewModel is the base class for all data model to be displayed by a 
 134     All other models derive from it and must implement its pure virtual functions 
 135     in order to define a complete data model. In detail, you need to override 
 136     wxDataViewModel::IsContainer, wxDataViewModel::GetParent, wxDataViewModel::GetChildren, 
 137     wxDataViewModel::GetColumnCount, wxDataViewModel::GetColumnType and 
 138     wxDataViewModel::GetValue in order to define the data model which acts as an 
 139     interface between your actual data and the wxDataViewCtrl. 
 141     Since you will usually also allow the wxDataViewCtrl to change your data 
 142     through its graphical interface, you will also have to override 
 143     wxDataViewModel::SetValue which the wxDataViewCtrl will call when a change 
 144     to some data has been commited. 
 146     wxDataViewModel (as indeed the entire wxDataViewCtrl code) is using wxVariant 
 147     to store data and its type in a generic way. wxVariant can be extended to contain 
 148     almost any data without changes to the original class. 
 150     The data that is presented through this data model is expected to change at 
 151     run-time. You need to inform the data model when a change happened. 
 152     Depending on what happened you need to call one of the following methods: 
 153     - wxDataViewModel::ValueChanged, 
 154     - wxDataViewModel::ItemAdded, 
 155     - wxDataViewModel::ItemDeleted, 
 156     - wxDataViewModel::ItemChanged, 
 157     - wxDataViewModel::Cleared. 
 159     There are plural forms for notification of addition, change or removal of 
 160     several item at once. See: 
 161     - wxDataViewModel::ItemsAdded, 
 162     - wxDataViewModel::ItemsDeleted, 
 163     - wxDataViewModel::ItemsChanged. 
 165     Note that wxDataViewModel does not define the position or index of any item 
 166     in the control because different controls might display the same data differently. 
 167     wxDataViewModel does provide a wxDataViewModel::Compare method which the 
 168     wxDataViewCtrl may use to sort the data either in conjunction with a column 
 169     header or without (see wxDataViewModel::HasDefaultCompare). 
 171     This class maintains a list of wxDataViewModelNotifier which link this class 
 172     to the specific implementations on the supported platforms so that e.g. calling 
 173     wxDataViewModel::ValueChanged on this model will just call 
 174     wxDataViewModelNotifier::ValueChanged for each notifier that has been added. 
 175     You can also add your own notifier in order to get informed about any changes 
 176     to the data in the list model. 
 178     Currently wxWidgets provides the following models apart from the base model: 
 179     wxDataViewIndexListModel, wxDataViewVirtualListModel, wxDataViewTreeStore. 
 181     Note that wxDataViewModel is reference counted, derives from wxObjectRefData 
 182     and cannot be deleted directly as it can be shared by several wxDataViewCtrls. 
 183     This implies that you need to decrease the reference count after 
 184     associating the model with a control like this: 
 187         wxDataViewCtrl *musicCtrl = new wxDataViewCtrl( this, ID_MUSIC_CTRL ); 
 188         wxDataViewModel *musicModel = new MyMusicModel; 
 189         m_musicCtrl-AssociateModel( musicModel ); 
 190         musicModel-DecRef();  // avoid memory leak !! 
 198 class wxDataViewModel 
: public wxObjectRefData
 
 207         Adds a wxDataViewModelNotifier to the model. 
 209     void AddNotifier(wxDataViewModelNotifier
* notifier
); 
 212         Called to inform the model that all data has been cleared. 
 213         The control will reread the data from the model again. 
 215     virtual bool Cleared(); 
 218         The compare function to be used by control. The default compare function 
 219         sorts by container and other items separately and in ascending order. 
 220         Override this for a different sorting behaviour. 
 222         @see HasDefaultCompare(). 
 224     virtual int Compare(const wxDataViewItem
& item1
, 
 225                         const wxDataViewItem
& item2
, 
 230         Oberride this to indicate that the item has special font attributes. 
 231         This only affects the wxDataViewTextRendererText renderer. 
 233         @see wxDataViewItemAttr. 
 235     virtual bool GetAttr(const wxDataViewItem
& item
, unsigned int col
, 
 236                          wxDataViewItemAttr
& attr
); 
 239         Override this so the control can query the child items of an item. 
 240         Returns the number of items. 
 242     virtual unsigned int GetChildren(const wxDataViewItem
& item
, 
 243                                      wxDataViewItemArray
& children
) const = 0; 
 246         Override this to indicate the number of columns in the model. 
 248     virtual unsigned int GetColumnCount() const = 0; 
 251         Override this to indicate what type of data is stored in the 
 252         column specified by @a col. 
 254         This should return a string indicating the type of data as reported by wxVariant. 
 256     virtual wxString 
GetColumnType(unsigned int col
) const = 0; 
 259         Override this to indicate which wxDataViewItem representing the parent 
 260         of @a item or an invalid wxDataViewItem if the the root item is 
 263     virtual wxDataViewItem 
GetParent(const wxDataViewItem
& item
) const = 0; 
 266         Override this to indicate the value of @a item. 
 267         A wxVariant is used to store the data. 
 269     virtual void GetValue(wxVariant
& variant
, const wxDataViewItem
& item
, 
 270                           unsigned int col
) const = 0; 
 273         Override this method to indicate if a container item merely acts as a 
 274         headline (or for categorisation) or if it also acts a normal item with 
 275         entries for futher columns. By default returns @false. 
 277     virtual bool HasContainerColumns(const wxDataViewItem
& item
) const; 
 280         Override this to indicate that the model provides a default compare 
 281         function that the control should use if no wxDataViewColumn has been 
 282         chosen for sorting. Usually, the user clicks on a column header for 
 283         sorting, the data will be sorted alphanumerically. 
 285         If any other order (e.g. by index or order of appearance) is required, 
 286         then this should be used. 
 287         See wxDataViewIndexListModel for a model which makes use of this. 
 289     virtual bool HasDefaultCompare() const; 
 292         Override this to indicate of @a item is a container, i.e. if 
 293         it can have child items. 
 295     virtual bool IsContainer(const wxDataViewItem
& item
) const = 0; 
 298         Call this to inform the model that an item has been added to the data. 
 300     virtual bool ItemAdded(const wxDataViewItem
& parent
, 
 301                            const wxDataViewItem
& item
); 
 304         Call this to inform the model that an item has changed. 
 306         This will eventually emit a wxEVT_DATAVIEW_ITEM_VALUE_CHANGED 
 307         event (in which the column fields will not be set) to the user. 
 309     virtual bool ItemChanged(const wxDataViewItem
& item
); 
 312         Call this to inform the model that an item has been deleted from the data. 
 314     virtual bool ItemDeleted(const wxDataViewItem
& parent
, 
 315                              const wxDataViewItem
& item
); 
 318         Call this to inform the model that several items have been added to the data. 
 320     virtual bool ItemsAdded(const wxDataViewItem
& parent
, 
 321                             const wxDataViewItemArray
& items
); 
 324         Call this to inform the model that several items have changed. 
 326         This will eventually emit wxEVT_DATAVIEW_ITEM_VALUE_CHANGED 
 327         events (in which the column fields will not be set) to the user. 
 329     virtual bool ItemsChanged(const wxDataViewItemArray
& items
); 
 332         Call this to inform the model that several items have been deleted. 
 334     virtual bool ItemsDeleted(const wxDataViewItem
& parent
, 
 335                               const wxDataViewItemArray
& items
); 
 338         Remove the @a notifier from the list of notifiers. 
 340     void RemoveNotifier(wxDataViewModelNotifier
* notifier
); 
 343         Call this to initiate a resort after the sort function has been changed. 
 345     virtual void Resort(); 
 348         This gets called in order to set a value in the data model. 
 349         The most common scenario is that the wxDataViewCtrl calls this method 
 350         after the user changed some data in the view. 
 352         Afterwards ValueChanged() has to be called! 
 354     virtual bool SetValue(const wxVariant
& variant
, const wxDataViewItem
& item
, 
 355                           unsigned int col
) = 0; 
 358         Call this to inform this model that a value in the model has been changed. 
 359         This is also called from wxDataViewCtrl's internal editing code, e.g. when 
 360         editing a text field in the control. 
 362         This will eventually emit a wxEVT_DATAVIEW_ITEM_VALUE_CHANGED 
 365     virtual bool ValueChanged(const wxDataViewItem
& item
, 
 371         Destructor. This should not be called directly. Use DecRef() instead. 
 373     virtual ~wxDataViewModel(); 
 379     @class wxDataViewIndexListModel 
 381     wxDataViewIndexListModel is a specialized data model which lets you address 
 382     an item by its position (row) rather than its wxDataViewItem (which you can 
 383     obtain from this class). 
 384     This model also provides its own wxDataViewIndexListModel::Compare 
 385     method which sorts the model's data by the index. 
 387     This model is not a virtual model since the control stores each wxDataViewItem. 
 388     Use wxDataViewVirtualListModel if you need to display millions of items or 
 389     have other reason to use a virtual control. 
 394 class wxDataViewIndexListModel 
: public wxDataViewModel
 
 400     wxDataViewIndexListModel(unsigned int initial_size 
= 0); 
 405     virtual ~wxDataViewIndexListModel(); 
 408         Compare method that sorts the items by their index. 
 410     int Compare(const wxDataViewItem
& item1
, 
 411                 const wxDataViewItem
& item2
, 
 412                 unsigned int column
, bool ascending
); 
 415         Oberride this to indicate that the row has special font attributes. 
 416         This only affects the wxDataViewTextRendererText() renderer. 
 418         @see wxDataViewItemAttr. 
 420     virtual bool GetAttr(unsigned int row
, unsigned int col
, 
 421                          wxDataViewItemAttr
& attr
); 
 424         Returns the wxDataViewItem at the given @e row. 
 426     wxDataViewItem 
GetItem(unsigned int row
) const; 
 429         Returns the position of given @e item. 
 431     unsigned int GetRow(const wxDataViewItem
& item
) const; 
 434         Override this to allow getting values from the model. 
 436     virtual void GetValue(wxVariant
& variant
, unsigned int row
, 
 437                           unsigned int col
) const = 0; 
 440         Call this after if the data has to be read again from the model. 
 441         This is useful after major changes when calling the methods below 
 442         (possibly thousands of times) doesn't make sense. 
 444     void Reset(unsigned int new_size
); 
 447         Call this after a row has been appended to the model. 
 452         Call this after a row has been changed. 
 454     void RowChanged(unsigned int row
); 
 457         Call this after a row has been deleted. 
 459     void RowDeleted(unsigned int row
); 
 462         Call this after a row has been inserted at the given position. 
 464     void RowInserted(unsigned int before
); 
 467         Call this after a row has been prepended to the model. 
 472         Call this after a value has been changed. 
 474     void RowValueChanged(unsigned int row
, unsigned int col
); 
 477         Call this after rows have been deleted. 
 478         The array will internally get copied and sorted in descending order so 
 479         that the rows with the highest position will be deleted first. 
 481     void RowsDeleted(const wxArrayInt
& rows
); 
 484         Called in order to set a value in the model. 
 486     virtual bool SetValue(const wxVariant
& variant
, unsigned int row
, 
 487                           unsigned int col
) = 0; 
 493     @class wxDataViewVirtualListModel 
 495     wxDataViewVirtualListModel is a specialized data model which lets you address 
 496     an item by its position (row) rather than its wxDataViewItem and as such offers 
 497     the exact same interface as wxDataViewIndexListModel. 
 498     The important difference is that under platforms other than OS X, using this 
 499     model will result in a truly virtual control able to handle millions of items 
 500     as the control doesn't store any item (a feature not supported by the 
 501     Carbon API under OS X). 
 503     @see wxDataViewIndexListModel for the API. 
 508 class wxDataViewVirtualListModel 
: public wxDataViewModel
 
 514     wxDataViewVirtualListModel(unsigned int initial_size 
= 0); 
 520     @class wxDataViewItemAttr 
 522     This class is used to indicate to a wxDataViewCtrl that a certain item 
 523     (see wxDataViewItem) has extra font attributes for its renderer. 
 524     For this, it is required to override wxDataViewModel::GetAttr. 
 526     Attributes are currently only supported by wxDataViewTextRendererText. 
 531 class wxDataViewItemAttr
 
 537     wxDataViewItemAttr(); 
 540         Call this to indicate that the item shall be displayed in bold text. 
 542     void SetBold(bool set
); 
 545         Call this to indicate that the item shall be displayed with that colour. 
 547     void SetColour(const wxColour
& colour
); 
 550         Call this to indicate that the item shall be displayed in italic text. 
 552     void SetItalic(bool set
); 
 558     @class wxDataViewItem 
 560     wxDataViewItem is a small opaque class that represents an item in a wxDataViewCtrl 
 561     in a persistent way, i.e. indepent of the position of the item in the control 
 562     or changes to its contents. 
 564     It must hold a unique ID of type @e void* in its only field and can be converted 
 567     If the ID is @NULL the wxDataViewItem is invalid and wxDataViewItem::IsOk will 
 568     return @false which used in many places in the API of wxDataViewCtrl to 
 569     indicate that e.g. no item was found. An ID of @NULL is also used to indicate 
 570     the invisible root. Examples for this are wxDataViewModel::GetParent and 
 571     wxDataViewModel::GetChildren. 
 583     wxDataViewItem(void* id 
= NULL
); 
 584     wxDataViewItem(const wxDataViewItem
& item
); 
 593         Returns @true if the ID is not @NULL. 
 601     @class wxDataViewCtrl 
 603     wxDataViewCtrl is a control to display data either in a tree like fashion or 
 604     in a tabular form or both. 
 605     If you only need to display a simple tree structure with an API more like the 
 606     older wxTreeCtrl class, then the specialized wxDataViewTreeCtrl can be used. 
 608     A wxDataViewItem is used to represent a (visible) item in the control. 
 610     Unlike wxListCtrl wxDataViewCtrl doesn't get its data from the user through 
 611     virtual functions or by setting it directly. Instead you need to write your own 
 612     wxDataViewModel and associate it with this control. 
 613     Then you need to add a number of wxDataViewColumn to this control to define 
 614     what each column shall display. Each wxDataViewColumn in turn owns 1 instance 
 615     of a wxDataViewRenderer to render its cells. 
 617     A number of standard renderers for rendering text, dates, images, toggle, 
 618     a progress bar etc. are provided. Additionally, the user can write custom 
 619     renderes deriving from wxDataViewCustomRenderer for displaying anything. 
 621     All data transfer from the control to the model and the user code is done 
 622     through wxVariant which can be extended to support more data formats as necessary. 
 623     Accordingly, all type information uses the strings returned from wxVariant::GetType. 
 627            Single selection mode. This is the default. 
 628     @style{wxDV_MULTIPLE} 
 629            Multiple selection mode. 
 630     @style{wxDV_ROW_LINES} 
 631            Use alternating colours for rows if supported by platform and theme. 
 632     @style{wxDV_HORIZ_RULES} 
 633            Display fine rules between row if supported. 
 634     @style{wxDV_VERT_RULES} 
 635            Display fine rules between columns is supported. 
 636     @style{wxDV_VARIABLE_LINE_HEIGHT} 
 637            Allow variable line heights. 
 638             This can be inefficient when displaying large number of items. 
 641     @beginEventTable{wxDataViewEvent} 
 642     @event{EVT_DATAVIEW_SELECTION_CHANGED(id, func)} 
 643            Process a wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED event. 
 644     @event{EVT_DATAVIEW_ITEM_ACTIVATED(id, func)} 
 645            Process a wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED event. 
 646     @event{EVT_DATAVIEW_ITEM_EDITING_STARTED(id, func)} 
 647            Process a wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED event. 
 648     @event{EVT_DATAVIEW_ITEM_EDITING_DONE(id, func)} 
 649            Process a wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE event. 
 650     @event{EVT_DATAVIEW_ITEM_COLLAPSING(id, func)} 
 651            Process a wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING event. 
 652     @event{EVT_DATAVIEW_ITEM_COLLAPSED(id, func)} 
 653            Process a wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED event. 
 654     @event{EVT_DATAVIEW_ITEM_EXPANDING(id, func)} 
 655            Process a wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING event. 
 656     @event{EVT_DATAVIEW_ITEM_EXPANDED(id, func)} 
 657            Process a wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED event. 
 658     @event{EVT_DATAVIEW_ITEM_VALUE_CHANGED(id, func)} 
 659            Process a wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED event. 
 660     @event{EVT_DATAVIEW_ITEM_CONTEXT_MENU(id, func)} 
 661            Process a wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU event. 
 662     @event{EVT_DATAVIEW_COLUMN_HEADER_CLICK(id, func)} 
 663            Process a wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICKED event. 
 664     @event{EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK(id, func)} 
 665            Process a wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKED event. 
 666     @event{EVT_DATAVIEW_COLUMN_SORTED(id, func)} 
 667            Process a wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED event. 
 668     @event{EVT_DATAVIEW_COLUMN_REORDERED(id, func)} 
 669            Process a wxEVT_COMMAND_DATAVIEW_COLUMN_REORDERED event. 
 674     @appearance{dataviewctrl.png} 
 676 class wxDataViewCtrl 
: public wxControl
 
 685         Constructor. Calls Create(). 
 687     wxDataViewCtrl(wxWindow
* parent
, wxWindowID id
, 
 688                    const wxPoint
& pos 
= wxDefaultPosition
, 
 689                    const wxSize
& size 
= wxDefaultSize
, 
 691                    const wxValidator
& validator 
= wxDefaultValidator
); 
 696     virtual ~wxDataViewCtrl(); 
 699         Appends a wxDataViewColumn to the control. Returns @true on success. 
 701         Note that there is a number of short cut methods which implicitly create 
 702         a wxDataViewColumn and a wxDataViewRenderer for it (see below). 
 704     virtual bool AppendColumn(wxDataViewColumn
* col
); 
 707         Prepends a wxDataViewColumn to the control. Returns @true on success. 
 709         Note that there is a number of short cut methods which implicitly create 
 710         a wxDataViewColumn and a wxDataViewRenderer for it. 
 712     virtual bool PrependColumn(wxDataViewColumn
* col
); 
 715         Inserts a wxDataViewColumn to the control. Returns @true on success. 
 717     virtual bool InsertColumn(unsigned int pos
, wxDataViewColumn
* col
); 
 721         Appends a column for rendering a bitmap. Returns the wxDataViewColumn 
 722         created in the function or @NULL on failure. 
 724     wxDataViewColumn
* AppendBitmapColumn(const wxString
& label
, 
 725                                          unsigned int model_column
, 
 726                                          wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 728                                          wxAlignment align 
= wxALIGN_CENTER
, 
 729                                          int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 730     wxDataViewColumn
* AppendBitmapColumn(const wxBitmap
& label
, 
 731                                          unsigned int model_column
, 
 732                                          wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 734                                          wxAlignment align 
= wxALIGN_CENTER
, 
 735                                          int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 740         Appends a column for rendering a date. Returns the wxDataViewColumn 
 741         created in the function or @NULL on failure. 
 743         @note The @a align parameter is applied to both the column header and 
 746     wxDataViewColumn
* AppendDateColumn(const wxString
& label
, 
 747                                        unsigned int model_column
, 
 748                                        wxDataViewCellMode mode 
= wxDATAVIEW_CELL_ACTIVATABLE
, 
 750                                        wxAlignment align 
= wxALIGN_CENTER
, 
 751                                        int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 752     wxDataViewColumn
* AppendDateColumn(const wxBitmap
& label
, 
 753                                        unsigned int model_column
, 
 754                                        wxDataViewCellMode mode 
= wxDATAVIEW_CELL_ACTIVATABLE
, 
 756                                        wxAlignment align 
= wxALIGN_CENTER
, 
 757                                        int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 762         Appends a column for rendering text with an icon. Returns the wxDataViewColumn 
 763         created in the function or @NULL on failure. 
 764         This method uses the wxDataViewIconTextRenderer class. 
 766         @note The @a align parameter is applied to both the column header and 
 769     wxDataViewColumn
* AppendIconTextColumn(const wxString
& label
, 
 770                                            unsigned int model_column
, 
 771                                            wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 773                                            wxAlignment align 
= wxALIGN_LEFT
, 
 774                                            int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 775     wxDataViewColumn
* AppendIconTextColumn(const wxBitmap
& label
, 
 776                                            unsigned int model_column
, 
 777                                            wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 779                                            wxAlignment align 
= wxALIGN_LEFT
, 
 780                                            int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 785         Appends a column for rendering a progress indicator. Returns the 
 786         wxDataViewColumn created in the function or @NULL on failure. 
 788         @note The @a align parameter is applied to both the column header and 
 791     wxDataViewColumn
* AppendProgressColumn(const wxString
& label
, 
 792                                            unsigned int model_column
, 
 793                                            wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 795                                            wxAlignment align 
= wxALIGN_CENTER
, 
 796                                            int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 797     wxDataViewColumn
* AppendProgressColumn(const wxBitmap
& label
, 
 798                                            unsigned int model_column
, 
 799                                            wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 801                                            wxAlignment align 
= wxALIGN_CENTER
, 
 802                                            int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 807         Appends a column for rendering text. Returns the wxDataViewColumn 
 808         created in the function or @NULL on failure. 
 810         @note The @a align parameter is applied to both the column header and 
 813     wxDataViewColumn
* AppendTextColumn(const wxString
& label
, 
 814                                        unsigned int model_column
, 
 815                                        wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 817                                        wxAlignment align 
= wxALIGN_LEFT
, 
 818                                        int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 819     wxDataViewColumn
* AppendTextColumn(const wxBitmap
& label
, 
 820                                        unsigned int model_column
, 
 821                                        wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 823                                        wxAlignment align 
= wxALIGN_LEFT
, 
 824                                        int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 829         Appends a column for rendering a toggle. Returns the wxDataViewColumn 
 830         created in the function or @NULL on failure. 
 832         @note The @a align parameter is applied to both the column header and 
 835     wxDataViewColumn
* AppendToggleColumn(const wxString
& label
, 
 836                                          unsigned int model_column
, 
 837                                          wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 839                                          wxAlignment align 
= wxALIGN_CENTER
, 
 840                                          int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 841     wxDataViewColumn
* AppendToggleColumn(const wxBitmap
& label
, 
 842                                          unsigned int model_column
, 
 843                                          wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
 845                                          wxAlignment align 
= wxALIGN_CENTER
, 
 846                                          int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
 850         Associates a wxDataViewModel with the control. 
 851         This increases the reference count of the model by 1. 
 853     virtual bool AssociateModel(wxDataViewModel
* model
); 
 858     virtual bool ClearColumns(); 
 863     virtual void Collapse(const wxDataViewItem
& item
); 
 866         Create the control. Useful for two step creation. 
 868     bool Create(wxWindow
* parent
, wxWindowID id
, 
 869                 const wxPoint
& pos 
= wxDefaultPosition
, 
 870                 const wxSize
& size 
= wxDefaultSize
, 
 872                 const wxValidator
& validator 
= wxDefaultValidator
); 
 875         Deletes given column. 
 877     virtual bool DeleteColumn(wxDataViewColumn
* column
); 
 880         Call this to ensure that the given item is visible. 
 882     virtual void EnsureVisible(const wxDataViewItem
& item
, 
 883                                const wxDataViewColumn
* column 
= NULL
); 
 888     virtual void Expand(const wxDataViewItem
& item
); 
 891         Returns pointer to the column. @a pos refers to the position in the 
 892         control which may change after reordering columns by the user. 
 894     virtual wxDataViewColumn
* GetColumn(unsigned int pos
) const; 
 897         Returns the number of columns. 
 899     virtual unsigned int GetColumnCount() const; 
 902         Returns the position of the column or -1 if not found in the control. 
 904     virtual int GetColumnPosition(const wxDataViewColumn
* column
) const; 
 907         Returns column containing the expanders. 
 909     wxDataViewColumn
* GetExpanderColumn() const; 
 914     int GetIndent() const; 
 919     virtual wxRect 
GetItemRect(const wxDataViewItem
& item
, 
 920                                const wxDataViewColumn
* col 
= NULL
) const; 
 923         Returns pointer to the data model associated with the control (if any). 
 925     wxDataViewModel
* GetModel(); 
 928         Returns first selected item or an invalid item if none is selected. 
 930     virtual wxDataViewItem 
GetSelection() const; 
 933         Fills @a sel with currently selected items and returns their number. 
 935     virtual int GetSelections(wxDataViewItemArray
& sel
) const; 
 938         Returns the wxDataViewColumn currently responsible for sorting 
 939         or @NULL if none has been selected. 
 941     virtual wxDataViewColumn
* GetSortingColumn() const; 
 946     virtual void HitTest(const wxPoint
& point
, wxDataViewItem
& item
, 
 947                          wxDataViewColumn
*& col
) const; 
 950         Return @true if the item is selected. 
 952     virtual bool IsSelected(const wxDataViewItem
& item
) const; 
 955         Select the given item. 
 957     virtual void Select(const wxDataViewItem
& item
); 
 962     virtual void SelectAll(); 
 965         Set which column shall contain the tree-like expanders. 
 967     void SetExpanderColumn(wxDataViewColumn
* col
); 
 970         Sets the indendation. 
 972     void SetIndent(int indent
); 
 975         Sets the selection to the array of wxDataViewItems. 
 977     virtual void SetSelections(const wxDataViewItemArray
& sel
); 
 980         Unselect the given item. 
 982     virtual void Unselect(const wxDataViewItem
& item
); 
 986         This method only has effect if multiple selections are allowed. 
 988     virtual void UnselectAll(); 
 994     @class wxDataViewModelNotifier 
 996     A wxDataViewModelNotifier instance is owned by a wxDataViewModel and mirrors 
 997     its notification interface. 
 998     See the documentation of that class for further information. 
1003 class wxDataViewModelNotifier
 
1009     wxDataViewModelNotifier(); 
1014     virtual ~wxDataViewModelNotifier(); 
1017         Called by owning model. 
1019     virtual bool Cleared() = 0; 
1022         Get owning wxDataViewModel. 
1024     wxDataViewModel
* GetOwner() const; 
1027         Called by owning model. 
1029     virtual bool ItemAdded(const wxDataViewItem
& parent
, 
1030                            const wxDataViewItem
& item
) = 0; 
1033         Called by owning model. 
1035     virtual bool ItemChanged(const wxDataViewItem
& item
) = 0; 
1038         Called by owning model. 
1040     virtual bool ItemDeleted(const wxDataViewItem
& parent
, 
1041                              const wxDataViewItem
& item
) = 0; 
1044         Called by owning model. 
1046     virtual bool ItemsAdded(const wxDataViewItem
& parent
, 
1047                             const wxDataViewItemArray
& items
); 
1050         Called by owning model. 
1052     virtual bool ItemsChanged(const wxDataViewItemArray
& items
); 
1055         Called by owning model. 
1057     virtual bool ItemsDeleted(const wxDataViewItem
& parent
, 
1058                               const wxDataViewItemArray
& items
); 
1061         Called by owning model. 
1063     virtual void Resort() = 0; 
1066         Set owner of this notifier. Used internally. 
1068     void SetOwner(wxDataViewModel
* owner
); 
1071         Called by owning model. 
1073     virtual bool ValueChanged(const wxDataViewItem
& item
, unsigned int col
) = 0; 
1078     The mode of a data-view cell; see wxDataViewRenderer for more info. 
1080 enum wxDataViewCellMode
 
1082     wxDATAVIEW_CELL_INERT
, 
1085         Indicates that the user can double click the cell and something will 
1086         happen (e.g. a window for editing a date will pop up). 
1088     wxDATAVIEW_CELL_ACTIVATABLE
, 
1091         Indicates that the user can edit the data in-place, i.e. an control 
1092         will show up after a slow click on the cell. This behaviour is best 
1093         known from changing the filename in most file managers etc. 
1095     wxDATAVIEW_CELL_EDITABLE
 
1099     The values of this enum controls how a wxDataViewRenderer should display 
1100     its contents in a cell. 
1102 enum wxDataViewCellRenderState
 
1104     wxDATAVIEW_CELL_SELECTED    
= 1, 
1105     wxDATAVIEW_CELL_PRELIT      
= 2, 
1106     wxDATAVIEW_CELL_INSENSITIVE 
= 4, 
1107     wxDATAVIEW_CELL_FOCUSED     
= 8 
1111     @class wxDataViewRenderer 
1113     This class is used by wxDataViewCtrl to render the individual cells. 
1114     One instance of a renderer class is owned by a wxDataViewColumn. 
1115     There is a number of ready-to-use renderers provided: 
1116     - wxDataViewTextRenderer, 
1117     - wxDataViewTextRendererAttr, 
1118     - wxDataViewIconTextRenderer, 
1119     - wxDataViewToggleRenderer, 
1120     - wxDataViewProgressRenderer, 
1121     - wxDataViewBitmapRenderer, 
1122     - wxDataViewDateRenderer, 
1123     - wxDataViewSpinRenderer. 
1125     Additionally, the user can write own renderers by deriving from 
1126     wxDataViewCustomRenderer. 
1128     The ::wxDataViewCellMode and ::wxDataViewCellRenderState flags accepted 
1129     by the constructors respectively controls what actions the cell data allows 
1130     and how the renderer should display its contents in a cell. 
1135 class wxDataViewRenderer 
: public wxObject
 
1141     wxDataViewRenderer(const wxString
& varianttype
, 
1142                        wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1143                        int align 
= wxDVR_DEFAULT_ALIGNMENT 
); 
1146         Returns the alignment. See SetAlignment() 
1148     virtual int GetAlignment() const; 
1151         Returns the cell mode. 
1153     virtual wxDataViewCellMode 
GetMode() const; 
1156         Returns pointer to the owning wxDataViewColumn. 
1158     wxDataViewColumn
* GetOwner() const; 
1161         This methods retrieves the value from the renderer in order to 
1162         transfer the value back to the data model. 
1164         Returns @false on failure. 
1166     virtual bool GetValue(wxVariant
& value
) const = 0; 
1169         Returns a string with the type of the wxVariant supported by this renderer. 
1171     wxString 
GetVariantType() const; 
1174         Sets the alignment of the renderer's content. 
1175         The default value of @c wxDVR_DEFAULT_ALIGMENT indicates that the content 
1176         should have the same alignment as the column header. 
1178         The method is not implemented under OS X and the renderer always aligns 
1179         its contents as the column header on that platform. The other platforms 
1180         support both vertical and horizontal alignment. 
1182     virtual void SetAlignment( int align 
); 
1184         Sets the owning wxDataViewColumn. 
1185         This is usually called from within wxDataViewColumn. 
1187     void SetOwner(wxDataViewColumn
* owner
); 
1190         Set the value of the renderer (and thus its cell) to @a value. 
1191         The internal code will then render this cell with this data. 
1193     virtual bool SetValue(const wxVariant
& value
) = 0; 
1196         Before data is committed to the data model, it is passed to this 
1197         method where it can be checked for validity. This can also be 
1198         used for checking a valid range or limiting the user input in 
1199         a certain aspect (e.g. max number of characters or only alphanumeric 
1200         input, ASCII only etc.). Return @false if the value is not valid. 
1202         Please note that due to implementation limitations, this validation 
1203         is done after the editing control already is destroyed and the 
1204         editing process finished. 
1206     virtual bool Validate(wxVariant
& value
); 
1212     @class wxDataViewTextRenderer 
1214     wxDataViewTextRenderer is used for rendering text. 
1215     It supports in-place editing if desired. 
1220 class wxDataViewTextRenderer 
: public wxDataViewRenderer
 
1226     wxDataViewTextRenderer(const wxString
& varianttype 
= "string", 
1227                            wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1228                            int align 
= wxDVR_DEFAULT_ALIGNMENT 
); 
1234     @class wxDataViewIconTextRenderer 
1236     The wxDataViewIconTextRenderer class is used to display text with 
1237     a small icon next to it as it is typically done in a file manager. 
1239     This classes uses the wxDataViewIconText helper class to store its data. 
1240     wxDataViewIonText can be converted to and from a wxVariant using the left shift 
1246 class wxDataViewIconTextRenderer 
: public wxDataViewRenderer
 
1252     wxDataViewIconTextRenderer(const wxString
& varianttype 
= "wxDataViewIconText", 
1253                                wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1254                                int align 
= wxDVR_DEFAULT_ALIGNMENT 
); 
1260     @class wxDataViewProgressRenderer 
1262     This class is used by wxDataViewCtrl to render progress bars. 
1267 class wxDataViewProgressRenderer 
: public wxDataViewRenderer
 
1273     wxDataViewProgressRenderer(const wxString
& label 
= wxEmptyString
, 
1274                                const wxString
& varianttype 
= "long", 
1275                                wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1276                                int align 
= wxDVR_DEFAULT_ALIGNMENT 
); 
1282     @class wxDataViewSpinRenderer 
1284     This is a specialized renderer for rendering integer values. 
1285     It supports modifying the values in-place by using a wxSpinCtrl. 
1286     The renderer only support variants of type @e long. 
1291 class wxDataViewSpinRenderer 
: public wxDataViewCustomRenderer
 
1296         @a min and @a max indicate the minimum and maximum values for the wxSpinCtrl. 
1298     wxDataViewSpinRenderer(int min
, int max
, 
1299                            wxDataViewCellMode mode 
= wxDATAVIEW_CELL_EDITABLE
, 
1300                            int align 
= wxDVR_DEFAULT_ALIGNMENT
); 
1306     @class wxDataViewToggleRenderer 
1308     This class is used by wxDataViewCtrl to render toggle controls. 
1313 class wxDataViewToggleRenderer 
: public wxDataViewRenderer
 
1319     wxDataViewToggleRenderer(const wxString
& varianttype 
= "bool", 
1320                              wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1321                              int align 
= wxDVR_DEFAULT_ALIGNMENT
); 
1327     @class wxDataViewDateRenderer 
1329     This class is used by wxDataViewCtrl to render calendar controls. 
1334 class wxDataViewDateRenderer 
: public wxDataViewRenderer
 
1340     wxDataViewDateRenderer(const wxString
& varianttype 
= "datetime", 
1341                            wxDataViewCellMode mode 
= wxDATAVIEW_CELL_ACTIVATABLE
, 
1342                            int align 
= wxDVR_DEFAULT_ALIGNMENT
); 
1348     @class wxDataViewTextRendererAttr 
1350     The same as wxDataViewTextRenderer but with support for font attributes. 
1351     Font attributes are currently only supported under GTK+ and MSW. 
1353     @see wxDataViewModel::GetAttr and wxDataViewItemAttr. 
1358 class wxDataViewTextRendererAttr 
: public wxDataViewTextRenderer
 
1364     wxDataViewTextRendererAttr(const wxString
& varianttype 
= "string", 
1365                                wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1366                                int align 
= wxDVR_DEFAULT_ALIGNMENT
); 
1372     @class wxDataViewCustomRenderer 
1374     You need to derive a new class from wxDataViewCustomRenderer in 
1375     order to write a new renderer. 
1377     You need to override at least wxDataViewRenderer::SetValue, wxDataViewRenderer::GetValue, 
1378     wxDataViewCustomRenderer::GetSize and wxDataViewCustomRenderer::Render. 
1380     If you want your renderer to support in-place editing then you also need to override 
1381     wxDataViewCustomRenderer::HasEditorCtrl, wxDataViewCustomRenderer::CreateEditorCtrl 
1382     and wxDataViewCustomRenderer::GetValueFromEditorCtrl. 
1384     Note that a special event handler will be pushed onto that editor control 
1385     which handles @e \<ENTER\> and focus out events in order to end the editing. 
1390 class wxDataViewCustomRenderer 
: public wxDataViewRenderer
 
1396     wxDataViewCustomRenderer(const wxString
& varianttype 
= "string", 
1397                              wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1398                              int align 
= -1, bool no_init 
= false); 
1403     virtual ~wxDataViewCustomRenderer(); 
1406         Override this to react to double clicks or ENTER. 
1407         This method will only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. 
1409     virtual bool Activate( wxRect cell
, 
1410                            wxDataViewModel
* model
, 
1411                            const wxDataViewItem 
& item
, 
1415         Override this to create the actual editor control once editing 
1418         @a parent is the parent of the editor control, @a labelRect indicates the 
1419         position and size of the editor control and @a value is its initial value: 
1423             return new wxSpinCtrl( parent, wxID_ANY, wxEmptyString, 
1424                         labelRect.GetTopLeft(), labelRect.GetSize(), 0, 0, 100, l ); 
1428     virtual wxControl
* CreateEditorCtrl(wxWindow
* parent
, 
1430                                         const wxVariant
& value
); 
1433         Create DC on request. Internal. 
1435     virtual wxDC
* GetDC(); 
1438         Return size required to show content. 
1440     virtual wxSize 
GetSize() const = 0; 
1443         Overrride this so that the renderer can get the value from the editor 
1444         control (pointed to by @a editor): 
1447             wxSpinCtrl *sc = (wxSpinCtrl*) editor; 
1448             long l = sc->GetValue(); 
1454     virtual bool GetValueFromEditorCtrl(wxControl
* editor
, 
1458         Override this and make it return @true in order to 
1459         indicate that this renderer supports in-place editing. 
1461     virtual bool HasEditorCtrl(); 
1464         Overrride this to react to a left click. 
1465         This method will only be called in @c wxDATAVIEW_CELL_ACTIVATABLE mode. 
1467     virtual bool LeftClick( wxPoint cursor
, 
1469                             wxDataViewModel 
* model
, 
1470                             const wxDataViewItem 
& item
, 
1474         Override this to render the cell. 
1475         Before this is called, wxDataViewRenderer::SetValue was called 
1476         so that this instance knows what to render. 
1478     virtual bool Render(wxRect cell
, wxDC
* dc
, int state
) = 0; 
1481         This method should be called from within Render() whenever you need to 
1483         This will ensure that the correct colour, font and vertical alignment will 
1484         be chosen so the text will look the same as text drawn by native renderers. 
1486     void RenderText(const wxString
& text
, int xoffset
, wxRect cell
, 
1487                     wxDC
* dc
, int state
); 
1490         Overrride this to start a drag operation. Not yet supported. 
1492     virtual bool StartDrag(wxPoint cursor
, wxRect cell
, 
1493                            wxDataViewModel
* model
, 
1494                            const wxDataViewItem 
& item
, 
1501     @class wxDataViewBitmapRenderer 
1503     This class is used by wxDataViewCtrl to render bitmap controls. 
1508 class wxDataViewBitmapRenderer 
: public wxDataViewRenderer
 
1514     wxDataViewBitmapRenderer(const wxString
& varianttype 
= "wxBitmap", 
1515                              wxDataViewCellMode mode 
= wxDATAVIEW_CELL_INERT
, 
1516                              int align 
= wxDVR_DEFAULT_ALIGNMENT
, 
1521     The flags used by wxDataViewColumn. 
1523 enum wxDataViewColumnFlags
 
1525     wxDATAVIEW_COL_RESIZABLE     
= 1, 
1526     wxDATAVIEW_COL_SORTABLE      
= 2, 
1527     wxDATAVIEW_COL_REORDERABLE   
= 4, 
1528     wxDATAVIEW_COL_HIDDEN        
= 8 
1532     @class wxDataViewColumn 
1534     This class represents a column in a wxDataViewCtrl. 
1535     One wxDataViewColumn is bound to one column in the data model, to which the 
1536     wxDataViewCtrl has been associated. 
1538     An instance of wxDataViewRenderer is used by this class to render its data. 
1543 class wxDataViewColumn 
: public wxObject
 
1550     wxDataViewColumn(const wxString
& title
, 
1551                      wxDataViewRenderer
* renderer
, 
1552                      unsigned int model_column
, 
1553                      int width 
= wxDVC_DEFAULT_WIDTH
, 
1554                      wxAlignment align 
= wxALIGN_CENTRE
, 
1555                      int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
1556     wxDataViewColumn(const wxBitmap
& bitmap
, 
1557                      wxDataViewRenderer
* renderer
, 
1558                      unsigned int model_column
, 
1559                      int width 
= wxDVC_DEFAULT_WIDTH
, 
1560                      wxAlignment align 
= wxALIGN_CENTRE
, 
1561                      int flags 
= wxDATAVIEW_COL_RESIZABLE
); 
1567     virtual ~wxDataViewColumn(); 
1570         Returns the bitmap in the header of the column, if any. 
1572     const wxBitmap
& GetBitmap() const; 
1575         Returns the index of the column of the model, which this 
1576         wxDataViewColumn is displaying. 
1578     unsigned int GetModelColumn() const; 
1581         Returns the owning wxDataViewCtrl. 
1583     wxDataViewCtrl
* GetOwner() const; 
1586         Returns the renderer of this wxDataViewColumn. 
1588         @see wxDataViewRenderer. 
1590     wxDataViewRenderer
* GetRenderer() const; 
1593         Returns @true if the column is reorderable. 
1595     virtual bool IsReorderable() const; 
1598         Returns @true if the column is sortable. 
1602     virtual bool IsSortable() const; 
1605         Returns the width of the column. 
1607     virtual int GetWidth() const; 
1610         Returns @true, if the sort order is ascending. 
1614     virtual bool IsSortOrderAscending() const; 
1617         Set the alignment of the column header. 
1619     virtual void SetAlignment(wxAlignment align
); 
1622         Set the bitmap of the column header. 
1624     virtual void SetBitmap(const wxBitmap
& bitmap
); 
1627         Indicate wether the column can be reordered by the user using the mouse. 
1628         This is typically implemented visually by dragging the header button around. 
1630     virtual void SetReorderable(bool reorderable
); 
1633         Indicate the sort order if the implementation of the wxDataViewCtrl supports 
1634         it, most commonly by showing a little arrow. 
1636     virtual void SetSortOrder(bool ascending
); 
1639         Indicate that the column is sortable. 
1640         This does not show any sorting indicate yet, but it does make the column 
1641         header clickable. Call SetSortOrder() afterwards to actually make the sort 
1644         If @a sortable is @false, the column header is no longer clickable and 
1645         the sort indicator (little arrow) will disappear. 
1647     virtual void SetSortable(bool sortable
); 
1650         Set the title of the column header to @a title. 
1652     virtual void SetTitle(const wxString
& title
); 
1658     @class wxDataViewTreeCtrl 
1660     This class is a wxDataViewCtrl which internally uses a wxDataViewTreeStore 
1661     and forwards most of its API to that class. 
1662     Additionally, it uses a wxImageList to store a list of icons. 
1664     The main purpose of this class is to look like a wxTreeCtrl to make a transition 
1665     from it to the wxDataViewCtrl class simpler. 
1669     @appearance{dataviewtreectrl.png} 
1671 class wxDataViewTreeCtrl 
: public wxDataViewCtrl
 
1677     wxDataViewTreeCtrl(); 
1680         Constructor. Calls Create(). 
1682     wxDataViewTreeCtrl(wxWindow
* parent
, wxWindowID id
, 
1683                        const wxPoint
& pos 
= wxDefaultPosition
, 
1684                        const wxSize
& size 
= wxDefaultSize
, 
1685                        long style 
= wxDV_NO_HEADER
, 
1686                        const wxValidator
& validator 
= wxDefaultValidator
); 
1689         Destructor. Deletes the image list if any. 
1691     virtual ~wxDataViewTreeCtrl(); 
1696     wxDataViewItem 
AppendContainer(const wxDataViewItem
& parent
, 
1697                                    const wxString
& text
, 
1700                                    wxClientData
* data 
= NULL
); 
1705     wxDataViewItem 
AppendItem(const wxDataViewItem
& parent
, 
1706                               const wxString
& text
, 
1708                               wxClientData
* data 
= NULL
); 
1711         Creates the control and a wxDataViewTreeStore as its internal model. 
1713     bool Create(wxWindow
* parent
, wxWindowID id
, 
1714                 const wxPoint
& pos 
= wxDefaultPosition
, 
1715                 const wxSize
& size 
= wxDefaultSize
, 
1716                 long style 
= wxDV_NO_HEADER
, 
1717                 const wxValidator
& validator 
= wxDefaultValidator
); 
1720         Calls the identical method from wxDataViewTreeStore. 
1722     void DeleteAllItems(); 
1725         Calls the identical method from wxDataViewTreeStore. 
1727     void DeleteChildren(const wxDataViewItem
& item
); 
1730         Calls the identical method from wxDataViewTreeStore. 
1732     void DeleteItem(const wxDataViewItem
& item
); 
1735         Calls the identical method from wxDataViewTreeStore. 
1737     int GetChildCount(const wxDataViewItem
& parent
) const; 
1740         Returns the image list. 
1742     wxImageList
* GetImageList(); 
1745         Calls the identical method from wxDataViewTreeStore. 
1747     wxClientData
* GetItemData(const wxDataViewItem
& item
) const; 
1750         Calls the identical method from wxDataViewTreeStore. 
1752     const wxIcon
& GetItemExpandedIcon(const wxDataViewItem
& item
) const; 
1755         Calls the identical method from wxDataViewTreeStore. 
1757     const wxIcon
& GetItemIcon(const wxDataViewItem
& item
) const; 
1760         Calls the identical method from wxDataViewTreeStore. 
1762     wxString 
GetItemText(const wxDataViewItem
& item
) const; 
1765         Calls the identical method from wxDataViewTreeStore. 
1767     wxDataViewItem 
GetNthChild(const wxDataViewItem
& parent
, 
1768                                unsigned int pos
) const; 
1774     wxDataViewTreeStore
* GetStore() const; 
1775     const wxDataViewTreeStore
* GetStore() const; 
1779         Calls the same method from wxDataViewTreeStore but uses 
1780         an index position in the image list instead of a wxIcon. 
1782     wxDataViewItem 
InsertContainer(const wxDataViewItem
& parent
, 
1783                                    const wxDataViewItem
& previous
, 
1784                                    const wxString
& text
, 
1787                                    wxClientData
* data 
= NULL
); 
1790         Calls the same method from wxDataViewTreeStore but uses 
1791         an index position in the image list instead of a wxIcon. 
1793     wxDataViewItem 
InsertItem(const wxDataViewItem
& parent
, 
1794                               const wxDataViewItem
& previous
, 
1795                               const wxString
& text
, 
1797                               wxClientData
* data 
= NULL
); 
1800         Calls the same method from wxDataViewTreeStore but uses 
1801         an index position in the image list instead of a wxIcon. 
1803     wxDataViewItem 
PrependContainer(const wxDataViewItem
& parent
, 
1804                                     const wxString
& text
, 
1807                                     wxClientData
* data 
= NULL
); 
1810         Calls the same method from wxDataViewTreeStore but uses 
1811         an index position in the image list instead of a wxIcon. 
1813     wxDataViewItem 
PrependItem(const wxDataViewItem
& parent
, 
1814                                const wxString
& text
, 
1816                                wxClientData
* data 
= NULL
); 
1819         Sets the image list. 
1821     void SetImageList(wxImageList
* imagelist
); 
1824         Calls the identical method from wxDataViewTreeStore. 
1826     void SetItemData(const wxDataViewItem
& item
, wxClientData
* data
); 
1829         Calls the identical method from wxDataViewTreeStore. 
1831     void SetItemExpandedIcon(const wxDataViewItem
& item
, 
1832                              const wxIcon
& icon
); 
1835         Calls the identical method from wxDataViewTreeStore. 
1837     void SetItemIcon(const wxDataViewItem
& item
, const wxIcon
& icon
); 
1840         Calls the identical method from wxDataViewTreeStore. 
1842     void SetItemText(const wxDataViewItem
& item
, 
1843                      const wxString
& text
); 
1849     @class wxDataViewTreeStore 
1851     wxDataViewTreeStore is a specialised wxDataViewModel for displaying simple 
1852     trees very much like wxTreeCtrl does and it offers a similar API. 
1854     This class actually stores the entire tree (therefore its name) and implements 
1855     all virtual methods from the base class so it can be used directly without 
1856     having to derive any class from it. 
1857     This comes at the price of much reduced flexibility. 
1862 class wxDataViewTreeStore 
: public wxDataViewModel
 
1866         Constructor. Creates the invisible root node internally. 
1868     wxDataViewTreeStore(); 
1873     virtual ~wxDataViewTreeStore(); 
1878     wxDataViewItem 
AppendContainer(const wxDataViewItem
& parent
, 
1879                                    const wxString
& text
, 
1880                                    const wxIcon
& icon 
= wxNullIcon
, 
1881                                    const wxIcon
& expanded 
= wxNullIcon
, 
1882                                    wxClientData
* data 
= NULL
); 
1887     wxDataViewItem 
AppendItem(const wxDataViewItem
& parent
, 
1888                               const wxString
& text
, 
1889                               const wxIcon
& icon 
= wxNullIcon
, 
1890                               wxClientData
* data 
= NULL
); 
1893         Delete all item in the model. 
1895     void DeleteAllItems(); 
1898         Delete all children of the item, but not the item itself. 
1900     void DeleteChildren(const wxDataViewItem
& item
); 
1905     void DeleteItem(const wxDataViewItem
& item
); 
1908         Return the number of children of item. 
1910     int GetChildCount(const wxDataViewItem
& parent
) const; 
1913         Returns the client data asoociated with the item. 
1915     wxClientData
* GetItemData(const wxDataViewItem
& item
) const; 
1918         Returns the icon to display in expanded containers. 
1920     const wxIcon
& GetItemExpandedIcon(const wxDataViewItem
& item
) const; 
1923         Returns the icon of the item. 
1925     const wxIcon
& GetItemIcon(const wxDataViewItem
& item
) const; 
1928         Returns the text of the item. 
1930     wxString 
GetItemText(const wxDataViewItem
& item
) const; 
1933         Returns the nth child item of item. 
1935     wxDataViewItem 
GetNthChild(const wxDataViewItem
& parent
, 
1936                                unsigned int pos
) const; 
1939         Inserts a container after @a previous. 
1941     wxDataViewItem 
InsertContainer(const wxDataViewItem
& parent
, 
1942                                    const wxDataViewItem
& previous
, 
1943                                    const wxString
& text
, 
1944                                    const wxIcon
& icon 
= wxNullIcon
, 
1945                                    const wxIcon
& expanded 
= wxNullIcon
, 
1946                                    wxClientData
* data 
= NULL
); 
1949         Inserts an item after @a previous. 
1951     wxDataViewItem 
InsertItem(const wxDataViewItem
& parent
, 
1952                               const wxDataViewItem
& previous
, 
1953                               const wxString
& text
, 
1954                               const wxIcon
& icon 
= wxNullIcon
, 
1955                               wxClientData
* data 
= NULL
); 
1958         Inserts a container before the first child item or @a parent. 
1960     wxDataViewItem 
PrependContainer(const wxDataViewItem
& parent
, 
1961                                     const wxString
& text
, 
1962                                     const wxIcon
& icon 
= wxNullIcon
, 
1963                                     const wxIcon
& expanded 
= wxNullIcon
, 
1964                                     wxClientData
* data 
= NULL
); 
1967         Inserts an item before the first child item or @a parent. 
1969     wxDataViewItem 
PrependItem(const wxDataViewItem
& parent
, 
1970                                const wxString
& text
, 
1971                                const wxIcon
& icon 
= wxNullIcon
, 
1972                                wxClientData
* data 
= NULL
); 
1975         Sets the client data associated with the item. 
1977     void SetItemData(const wxDataViewItem
& item
, wxClientData
* data
); 
1980         Sets the expanded icon for the item. 
1982     void SetItemExpandedIcon(const wxDataViewItem
& item
, 
1983                              const wxIcon
& icon
); 
1986         Sets the icon for the item. 
1988     void SetItemIcon(const wxDataViewItem
& item
, const wxIcon
& icon
);