From 1ab4aff2738d8511da32e787796606646799f0ac Mon Sep 17 00:00:00 2001
From: Robert Roebling <robert@roebling.de>
Date: Mon, 20 Aug 2007 22:29:18 +0000
Subject: [PATCH] Updated docs

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/classes.tex                |   3 +-
 docs/latex/wx/dataviewctrl.tex           | 138 ++++++-----
 docs/latex/wx/dataviewindexlistmodel.tex | 105 ++++++++
 docs/latex/wx/dataviewmodel.tex          | 297 +++++++++--------------
 docs/latex/wx/dataviewmodelnotifier.tex  |  80 ++++++
 5 files changed, 378 insertions(+), 245 deletions(-)
 create mode 100644 docs/latex/wx/dataviewindexlistmodel.tex
 create mode 100644 docs/latex/wx/dataviewmodelnotifier.tex

diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex
index 189c681a9d..403e07a9ce 100644
--- a/docs/latex/wx/classes.tex
+++ b/docs/latex/wx/classes.tex
@@ -83,8 +83,9 @@
 \input dataviewcolumn.tex
 \input dataviewctrl.tex
 \input dataviewevent.tex
-\input dataviewlistmodelnotifier.tex
+\input dataviewmodelnotifier.tex
 \input dataviewmodel.tex
+\input dataviewindexlistmodel.tex
 \input dataviewrenderer.tex
 \input dobjcomp.tex
 \input dobjsmpl.tex
diff --git a/docs/latex/wx/dataviewctrl.tex b/docs/latex/wx/dataviewctrl.tex
index 1a573158b5..7f29939f65 100644
--- a/docs/latex/wx/dataviewctrl.tex
+++ b/docs/latex/wx/dataviewctrl.tex
@@ -1,17 +1,13 @@
 
 \section{\class{wxDataViewCtrl}}\label{wxdataviewctrl}
 
-This class and its documentation are work in progress and
-therefore subject to change.
-
-wxDataViewCtrl is planned to be a control to display data either
-in a tree like fashion or in a tabular form or both. So far,
-only the tabular form is implemented. 
+wxDataViewCtrl is a control to display data either
+in a tree like fashion or in a tabular form or both. 
 
 Unlike \helpref{wxListCtrl}{wxlistctrl} wxDataViewCtrl doesn't 
-get its data from the user through virtual functions or events,
-instead you need to write your own 
-\helpref{wxDataViewListModel}{wxdataviewlistmodel} and associate
+get its data from the user through virtual functions or by
+setting it directly. Instead you need to write your own 
+\helpref{wxDataViewModel}{wxdataviewmodel} and associate
 it with this control. Then you need to add a number of
 \helpref{wxDataViewColumn}{wxdataviewcolumn} to this control to
 define what each column shall display. Each wxDataViewColumn
@@ -29,12 +25,6 @@ be extended to support more data formats as necessary.
 Accordingly, all type information uses the strings returned
 from \helpref{wxVariant::GetType}{wxvariantgettype}.
 
-So far, this control has been implemented for GTK+ and there
-is an almost complete generic implementation including several
-additions for a native Windows look and feel (in particular
-concerning the header). It is planned to implement the control
-natively under OS X.
-
 \wxheading{Window styles}
 
 \twocolwidtha{5cm}
@@ -53,29 +43,11 @@ macros to direct input to member functions that take a
 \twocolwidtha{7cm}
 \begin{twocollist}\itemsep=0pt
 
-\twocolitem{{\bf EVT\_DATAVIEW\_ROW\_SELECTED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_ROW\_SELECTED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_ROW\_ACTIVATED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_ROW\_ACTIVATED event.}
+\twocolitem{{\bf EVT\_DATAVIEW\_ITEM\_SELECTED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_ITEM\_SELECTED event.}
+\twocolitem{{\bf EVT\_DATAVIEW\_ITEM\_ACTIVATED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_ITEM\_ACTIVATED event.}
 \twocolitem{{\bf EVT\_DATAVIEW\_COLUMN\_HEADER\_CLICK(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_COLUMN\_HEADER\_CLICKED event.}
 \twocolitem{{\bf EVT\_DATAVIEW\_COLUMN\_HEADER\_RIGHT\_CLICK(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_COLUMN\_HEADER\_RIGHT\_CLICKED event.}
-
-\end{twocollist}
-
-Additionally, you can get informed about changes to the
-\helpref{model}{wxdataviewlistmodel}, to which a wxDataViewCtrl
-has been associated. These events correspond to the interface
-offered by \helpref{wxDataViewListModelNotifier}{wxdataviewlistmodelnotifier}.
-
-\twocolwidtha{7cm}
-\begin{twocollist}\itemsep=0pt
-
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_ROW\_PREPENDED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_ROW\_PREPENDED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_ROW\_APPENDED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_ROW\_APPENDED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_ROW\_INSERTED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_ROW\_INSERTED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_ROW\_DELETED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_ROW\_DELETED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_ROW\_CHANGED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_ROW\_CHANGED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_VALUE\_CHANGED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_VALUE\_CHANGED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_ROWS\_REORDERED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_ROWS\_REORDERED event.}
-\twocolitem{{\bf EVT\_DATAVIEW\_MODEL\_CLEARED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_MODEL\_CLEARED event.}
+\twocolitem{{\bf EVT\_DATAVIEW\_COLUMN\_HEADER\_SORTED(id, func)}}{Processes a wxEVT\_COMMAND\_DATAVIEW\_COLUMN\_HEADER\_SORTED event.}
 
 \end{twocollist}
 
@@ -162,11 +134,10 @@ Appends a column for rendering a toggle.
 
 \membersection{wxDataViewCtrl::AssociateModel}\label{wxdataviewctrlassociatemodel}
 
-\func{virtual bool}{AssociateModel}{\param{wxDataViewListModel* }{model}}
+\func{virtual bool}{AssociateModel}{\param{wxDataViewModel* }{model}}
 
-Associates a \helpref{wxDataViewListModel}{wxdataviewlistmodel} with the
-control. In the future this should be changed to supporting any data
-model including a to-be-written wxDataViewTreeModel.
+Associates a \helpref{wxDataViewModel}{wxdataviewmodel} with the
+control. 
 
 \membersection{wxDataViewCtrl::Create}\label{wxdataviewctrlcreate}
 
@@ -200,7 +171,7 @@ Returns pointer to the column.
 
 \membersection{wxDataViewCtrl::GetModel}\label{wxdataviewctrlgetmodel}
 
-\func{virtual wxDataViewListModel*}{GetModel}{\void}
+\func{virtual wxDataViewModel*}{GetModel}{\void}
 
 Returns pointer to the data model associated with the
 control (if any).
@@ -211,48 +182,95 @@ control (if any).
 
 Returns the number of columns.
 
+\membersection{wxDataViewCtrl::EnsureVisible}\label{wxdataviewctrlensurevisible}
+
+\func{void}{EnsureVisible}{\param{const wxDataViewItem \& }{item}, \param{wxDataViewColumn* }{column = NULL}}
+
+Call this to ensure that the given item is visible.
+
+\membersection{wxDataViewCtrl::GetExpanderColumn}\label{wxdataviewctrlgetexpandercolumn}
+
+\constfunc{unsigned int}{GetExpanderColumn}{\void}
+
+Returns column containing the expanders.
+
+\membersection{wxDataViewCtrl::GetIndent}\label{wxdataviewctrlgetindent}
+
+\constfunc{int}{GetIndent}{\void}
+
+Returns indentation.
+
+\membersection{wxDataViewCtrl::GetItemRect}\label{wxdataviewctrlgetitemrect}
+
+\constfunc{wxRect}{GetItemRect}{\param{const wxDataViewItem\& }{item}, \param{unsigned int }{column}}
+
+Returns item rect.
+
 \membersection{wxDataViewCtrl::GetSelection}\label{wxdataviewctrlgetselection}
 
-\constfunc{virtual int}{GetSelection}{\void}
+\func{wxDataViewItem}{GetSelection}{\void}
 
-Returns the index of the currently selected row. It will 
-return -1 if no row is selected and the index of the first
-selected row if more than one row are selected.
+Returns first selected item or an invalid item if none is selected.
 
 \membersection{wxDataViewCtrl::GetSelections}\label{wxdataviewctrlgetselections}
 
-\constfunc{virtual int}{GetSelections}{\param{wxArrayInt\& }{aSelections}}
+\constfunc{int}{GetSelections}{\param{wxDataViewItemArray \& }{sel}}
 
-Returns the number of selected rows and fills an array of int
-with the indeces of the selected rows.
+Fills {\it sel} with currently selected items and returns
+their number.
+
+\membersection{wxDataViewCtrl::HitTest}\label{wxdataviewctrlhittest}
+
+\constfunc{void}{HitTest}{\param{const wxPoint\& }{point}, \param{wxDataViewItem\& }{item}, \param{unsigned int\& }{column}}
+
+Hittest.
 
 \membersection{wxDataViewCtrl::IsSelected}\label{wxdataviewctrlisselected}
 
-\constfunc{virtual bool}{IsSelected}{\param{unsigned int }{row}}
+\constfunc{bool}{IsSelected}{\param{const wxDataViewItem \& }{item}}
+
+Return true if the item is selected.
 
-Returns {\it true} if the row is selected, {\it false} otherwise.
+\membersection{wxDataViewCtrl::Select}\label{wxdataviewctrlselect}
 
-\membersection{wxDataViewCtrl::SetSelection}\label{wxdataviewctrlsetselection}
+\func{void}{Select}{\param{const wxDataViewItem \& }{item}}
 
-\func{virtual void}{SetSelection}{\param{int }{row}}
+Select the given item.
 
-Sets the selection. Use -1 to unselect all rows.
+\membersection{wxDataViewCtrl::SelectAll}\label{wxdataviewctrlselectall}
 
-\membersection{wxDataViewCtrl::SetSelectionRange}\label{wxdataviewctrlsetselectionrange}
+\func{void}{SelectAll}{\void}
 
-\func{virtual void}{SetSelectionRange}{\param{unsigned int }{from}, \param{unsigned int }{to}}
+Select all items.
 
-Set a range of selection.
+\membersection{wxDataViewCtrl::SetExpanderColumn}\label{wxdataviewctrlsetexpandercolumn}
+
+\func{void}{SetExpanderColumn}{\param{unsigned int }{col}}
+
+Set which column shall contain the tree-like expanders.
+
+\membersection{wxDataViewCtrl::SetIndent}\label{wxdataviewctrlsetindent}
+
+\func{void}{SetIndent}{\param{int }{indent}}
+
+Sets the indendation.
 
 \membersection{wxDataViewCtrl::SetSelections}\label{wxdataviewctrlsetselections}
 
-\func{virtual void}{SetSelections}{\param{const wxArrayInt\& }{aSelections}}
+\func{void}{SetSelections}{\param{const wxDataViewItemArray \& }{sel}}
 
-Set the selection to the array of int.
+Sets the selection to the array of wxDataViewItems.
 
 \membersection{wxDataViewCtrl::Unselect}\label{wxdataviewctrlunselect}
 
-\func{virtual void}{Unselect}{\param{unsigned int }{row}}
+\func{void}{Unselect}{\param{const wxDataViewItem \& }{item}}
+
+Unselect the given item.
+
+\membersection{wxDataViewCtrl::UnselectAll}\label{wxdataviewctrlunselectall}
+
+\func{void}{UnselectAll}{\void}
 
-Unselect a particular row.
+Unselect all item. This method only has effect if multiple
+selections are allowed.
 
diff --git a/docs/latex/wx/dataviewindexlistmodel.tex b/docs/latex/wx/dataviewindexlistmodel.tex
new file mode 100644
index 0000000000..74d35d2c52
--- /dev/null
+++ b/docs/latex/wx/dataviewindexlistmodel.tex
@@ -0,0 +1,105 @@
+
+\section{\class{wxDataViewIndexListModel}}\label{wxdataviewindexlistmodel}
+
+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 
+\helpref{Compare}{wxdataviewindexlistmodelcompare} method
+which sorts the model's data by the index.
+
+
+\wxheading{Derived from}
+
+\helpref{wxDataViewModel}{wxdataviewmodel}
+
+\wxheading{Include files}
+
+<dataview.h>
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxDataViewIndexListModel::wxDataViewIndexListModel}\label{wxdataviewindexlistmodelwxdataviewindexlistmodel}
+
+\func{}{wxDataViewIndexListModel}{\param{unsigned int }{initial\_size = 0}}
+
+Constructor.
+
+\membersection{wxDataViewIndexListModel::\destruct{wxDataViewIndexListModel}}\label{wxdataviewindexlistmodeldtor}
+
+\func{}{\destruct{wxDataViewIndexListModel}}{\void}
+
+Destructor.
+
+\membersection{wxDataViewIndexListModel::Compare}\label{wxdataviewindexlistmodelcompare}
+
+\func{int}{Compare}{\param{const wxDataViewItem\& }{item1}, \param{const wxDataViewItem\& }{item2}, \param{unsigned int }{column}, \param{bool }{ascending}}
+
+Compare method that sorts the items by their index.
+
+\membersection{wxDataViewIndexListModel::GetItem}\label{wxdataviewindexlistmodelgetitem}
+
+\constfunc{wxDataViewItem}{GetItem}{\param{unsigned int }{row}}
+
+Returns the wxDataViewItem at the given {\it row}.
+
+\membersection{wxDataViewIndexListModel::GetRow}\label{wxdataviewindexlistmodelgetrow}
+
+\constfunc{unsigned int}{GetRow}{\param{const wxDataViewItem\& }{item}}
+
+Returns the position of given {\it item}.
+
+\membersection{wxDataViewIndexListModel::GetRowCount}\label{wxdataviewindexlistmodelgetrowcount}
+
+\func{unsigned int}{GetRowCount}{\void}
+
+Override this to indicate the number of rows.
+
+\membersection{wxDataViewIndexListModel::GetValue}\label{wxdataviewindexlistmodelgetvalue}
+
+\constfunc{void}{GetValue}{\param{wxVariant\& }{variant}, \param{unsigned int }{row}, \param{unsigned int }{col}}
+
+Override this to allow getting values from the model.
+
+\membersection{wxDataViewIndexListModel::RowAppended}\label{wxdataviewindexlistmodelrowappended}
+
+\func{void}{RowAppended}{\void}
+
+Call this after a row has been appended to the model.
+
+\membersection{wxDataViewIndexListModel::RowChanged}\label{wxdataviewindexlistmodelrowchanged}
+
+\func{void}{RowChanged}{\param{unsigned int }{row}}
+
+Call this after a row has been changed.
+
+\membersection{wxDataViewIndexListModel::RowDeleted}\label{wxdataviewindexlistmodelrowdeleted}
+
+\func{void}{RowDeleted}{\param{unsigned int }{row}}
+
+Call this after a row has been deleted.
+
+\membersection{wxDataViewIndexListModel::RowInserted}\label{wxdataviewindexlistmodelrowinserted}
+
+\func{void}{RowInserted}{\param{unsigned int }{before}}
+
+Call this after a row has been inserted at the given position.
+
+\membersection{wxDataViewIndexListModel::RowPrepended}\label{wxdataviewindexlistmodelrowprepended}
+
+\func{void}{RowPrepended}{\void}
+
+Call this after a row has been prepended to the model.
+
+\membersection{wxDataViewIndexListModel::RowValueChanged}\label{wxdataviewindexlistmodelrowvaluechanged}
+
+\func{void}{RowValueChanged}{\param{unsigned int }{row}, \param{unsigned int }{col}}
+
+Call this after a value has been changed.
+
+\membersection{wxDataViewIndexListModel::SetValue}\label{wxdataviewindexlistmodelsetvalue}
+
+\func{bool}{SetValue}{\param{const wxVariant\& }{variant}, \param{unsigned int }{row}, \param{unsigned int }{col}}
+
+Called in order to set a value in the model.
\ No newline at end of file
diff --git a/docs/latex/wx/dataviewmodel.tex b/docs/latex/wx/dataviewmodel.tex
index 7ec14918d3..c5063807b1 100644
--- a/docs/latex/wx/dataviewmodel.tex
+++ b/docs/latex/wx/dataviewmodel.tex
@@ -3,271 +3,200 @@
 
 wxDataViewModel is the base class for all data model to be
 displayed by a \helpref{wxDataViewCtrl}{wxdataviewctrl}. 
-Currently, this class has no functionality at all and the
-only existing implementation of it is the 
-\helpref{wxDataViewListModel}{wxdataviewlistmodel}. The
-plan is to move all functionality of wxDataViewListModel
-and a to-be-written wxDataViewTreeModel into wxDataViewModel
-and make wxDataViewListModel and wxDataViewTreeModel subsets
-of the abstract wxDataViewModel.
-
-\wxheading{Derived from}
-
-\helpref{wxObjectRefData}{wxobjectrefdata}
-
-\wxheading{Include files}
-
-<wx/dataview.h>
-
-\wxheading{Library}
-
-\helpref{wxAdv}{librarieslist}
-
-\membersection{wxDataViewModel::wxDataViewModel}\label{wxdataviewmodelwxdataviewmodel}
-
-\func{}{wxDataViewModel}{\void}
-
-Constructor.
-
-\membersection{wxDataViewModel::\destruct{wxDataViewModel}}\label{wxdataviewmodeldtor}
-
-\func{}{\destruct{wxDataViewModel}}{\void}
-
-Destructor.
-
-\section{\class{wxDataViewListModel}}\label{wxdataviewlistmodel}
-
-wxDataViewListModel is currently the only existing variant
-of a \helpref{wxDataViewModel}{wxdataviewmodel}. It allows
-to define a table like data model to be displayed by a
-\helpref{wxDataViewCtrl}{wxdataviewctrl}. You need to derive
-from this class to define your own data model.
-
-You need to override \helpref{GetRowCount}{wxdataviewlistmodelgetrowcount},
-\helpref{GetColumnCount}{wxdataviewlistmodelgetcolumncount},
-\helpref{GetColumnType}{wxdataviewlistmodelgetcolumntype} and
-\helpref{GetValue}{wxdataviewlistmodelgetvalue} in order to
-define the data model (which acts as an interface between 
-your actual data and the wxDataViewCtrl). Since you will
+All other models derive from it and must implement its
+pure virtual functions in order to define a complete
+data model. In detail, you need to override 
+\helpref{IsContainer}{wxdataviewmodeliscontainer},
+\helpref{GetParent}{wxdataviewmodelgetparent},
+\helpref{GetColumnCount}{wxdataviewmodelgetcolumncount},
+\helpref{GetColumnType}{wxdataviewmodelgetcolumntype} and
+\helpref{GetValue}{wxdataviewmodelgetvalue} in order to
+define the data model which acts as an interface between 
+your actual data and the wxDataViewCtrl. Since you will
 usually also allow the wxDataViewCtrl to change your data
 through its graphical interface, you will also have to override
 \helpref{SetValue}{wxdataviewlistmodelsetvalue} which the
 wxDataViewCtrl will call when a change to some data has been
 commited.
 
-The data that is presented through this data model is expected
-to change at run-time. You need to inform the data model that
-a change happens. Depending on what happened you need to call
-one of the following methods: 
-\helpref{ValueChanged}{wxdataviewlistmodelvaluechanged},
-\helpref{RowChanged}{wxdataviewlistmodelrowchanged},
-\helpref{RowAppended}{wxdataviewlistmodelrowappended},
-\helpref{RowPrepended}{wxdataviewlistmodelrowprepended},
-\helpref{RowInserted}{wxdataviewlistmodelrowinserted},
-\helpref{RowDeleted}{wxdataviewlistmodelrowdeleted},
-\helpref{RowsReordered}{wxdataviewlistmodelrowsreordered} or
-\helpref{RowsCleared}{wxdataviewlistmodelcleared}.
-
-
-
-wxDataViewModel and this class (as indeed the entire wxDataViewCtrl
+wxDataViewModel (as indeed the entire wxDataViewCtrl
 code) is using \helpref{wxVariant}{wxvariant} to store data and
 its type in a generic way. wxVariant can be extended to contain
 almost any data without changes to the original class.
 
+The data that is presented through this data model is expected
+to change at run-time. You need to inform the data model when
+a change happened. Depending on what happened you need to call
+one of the following methods: 
+\helpref{ValueChanged}{wxdataviewmodelvaluechanged},
+\helpref{ItemAdded}{wxdataviewmodelitemadded},
+\helpref{ItemDeleted}{wxdataviewmodelitemdeleted},
+\helpref{ItemChanged}{wxdataviewmodelitemchanged},
+\helpref{Cleared}{wxdataviewmodelcleared}.
+
+Note that wxDataViewModel does not define the position or
+index of any item in the control since several control might
+display the data differently, but wxDataViewModel does
+provide a \helpref{Compare}{wxdataviewmodelcompare} method
+which the wxDataViewCtrl may use to sort the data.
+
 This class maintains a list of 
-\helpref{wxDataListViewListModelNotifier}{wxdataviewlistmodelnotifier}
+\helpref{wxDataViewModelNotifier}{wxdataviewmodelnotifier}
 which link this class to the specific implementations on the
 supported platforms so that e.g. calling 
-\helpref{ValueChanged}{wxdataviewlistmodelvaluechanged}
+\helpref{ValueChanged}{wxdataviewmodelvaluechanged}
 on this model will just call 
-\helpref{wxDataListViewListModelNotifier::ValueChanged}{wxdataviewlistmodelnotifiervaluechanged}
-for each notifier that has been added. This is used both for
-informing the native controls to redraw themselves and for informing
-e.g. the \helpref{wxDataViewSortedListModel}{wxdataviewsortedlistmodel}
-to resort itself. You can also add your own notifier in order
-to get informed about any changes to the data in the list model.
-
-Additionally, this class maintains a list of all 
-\helpref{wxDataViewColumns}{wxdataviewcolumn} which
-display a certain column of this list model. This is
-mostly used internally.
+\helpref{wxDataViewModelNotifier::ValueChanged}{wxdataviewmodelnotifiervaluechanged}
+for each notifier that has been added. You can also add 
+your own notifier in order to get informed about any changes 
+to the data in the list model.
+
+Currently wxWidgets provides the following models apart
+from the base model: 
+\helpref{wxDataViewIndexListModel}{wxdataviewindexlistmodel}. 
+It is planned to add helper classes for simple tree
+and list stores in the future.
 
 \wxheading{Derived from}
 
-\helpref{wxDataViewModel}{wxdataviewmodel}\\
 \helpref{wxObjectRefData}{wxobjectrefdata}
 
 \wxheading{Include files}
 
 <wx/dataview.h>
 
+\wxheading{Library}
 
-\membersection{wxDataViewListModel::wxDataViewListModel}\label{wxdataviewlistmodelwxdataviewlistmodel}
-
-\func{}{wxDataViewListModel}{\void}
-
-Constructor.
-
-\membersection{wxDataViewListModel::\destruct{wxDataViewListModel}}\label{wxdataviewlistmodeldtor}
-
-\func{}{\destruct{wxDataViewListModel}}{\void}
-
-Destructor.
-
-\membersection{wxDataViewListModel::AddNotifier}\label{wxdataviewlistmodeladdnotifier}
-
-\func{void}{AddNotifier}{\param{wxDataViewListModelNotifier* }{notifier}}
-
-Adds {\it notifier} to the internal list of notifers.
-
-See also \helpref{RemoveNotifier}{wxdataviewlistmodelremovenotifier}.
-
-\membersection{wxDataViewListModel::Cleared}\label{wxdataviewlistmodelcleared}
-
-\func{bool}{virtual Cleared}{\void}
-
-Call this if all data in your model has been cleared.
-
-\membersection{wxDataViewListModel::GetColumnCount}\label{wxdataviewlistmodelgetcolumncount}
-
-\func{virtual unsigned int}{GetColumnCount}{\void}
-
-Override this to indicate, how many columns the list
-model has.
-
-\membersection{wxDataViewListModel::GetColumnType}\label{wxdataviewlistmodelgetcolumntype}
-
-\func{virtual wxString}{GetColType}{\param{unsigned int }{col}}
+\helpref{wxAdv}{librarieslist}
 
-Override this to indicate what type of data is stored in the
-column specified by {\it col}. This should return a string
-indicating the type of data as reported by \helpref{wxVariant}{wxvariant}.
+\membersection{wxDataViewModel::wxDataViewModel}\label{wxdataviewmodelwxdataviewmodel}
 
-\membersection{wxDataViewListModel::GetRowCount}\label{wxdataviewlistmodelgetrowcount}
+\func{}{wxDataViewModel}{\void}
 
-\func{virtual unsigned int}{GetRowCount}{\void}
+Constructor.
 
-Override this to indicate, how many rows the list
-model has.
 
-\membersection{wxDataViewListModel::GetValue}\label{wxdataviewlistmodelgetvalue}
+\membersection{wxDataViewModel::\destruct{wxDataViewModel}}\label{wxdataviewmodeldtor}
 
-\func{virtual void}{GetValue}{\param{wxVariant\& }{variant}, \param{unsigned int }{col}, \param{unsigned int }{row}}
+\func{}{\destruct{wxDataViewModel}}{\void}
 
-Override this to indicate the value of a given value
-in the list model. A \helpref{wxVariant}{wxvariant}
-is used to store the data.
+Destructor. This should not be called directly. Use DecRef() instead.
 
-\membersection{wxDataViewListModel::RemoveNotifier}\label{wxdataviewlistmodelremovenotifier}
 
-\func{void}{RemoveNotifier}{\param{wxDataViewListModelNotifier* }{notifier}}
+\membersection{wxDataViewModel::AddNotifier}\label{wxdataviewmodeladdnotifier}
 
-Removes the notifier from the list of notifiers.
+\func{void}{AddNotifier}{\param{wxDataViewModelNotifier* }{notifier}}
 
-See also \helpref{AddNotifier}{wxdataviewlistmodeladdnotifier}.
+Adds a \helpref{wxDataViewModelNotifier}{wxdataviewlistmodelnotifier}
+to the model.
 
-\membersection{wxDataViewListModel::RowAppended}\label{wxdataviewlistmodelrowappended}
+\membersection{wxDataViewModel::Cleared}\label{wxdataviewmodelcleared}
 
-\func{virtual bool}{RowAppended}{\void}
+\func{bool}{Cleared}{\void}
 
-Call this if a row has been appended to the list model.
+Called to inform the model that all data has been deleted.
 
-\membersection{wxDataViewListModel::RowChanged}\label{wxdataviewlistmodelrowchanged}
+\membersection{wxDataViewModel::Compare}\label{wxdataviewmodelcompare}
 
-\func{virtual bool}{RowChanged}{\param{unsigned int }{row}}
+\func{int}{Compare}{\param{const wxDataViewItem\& }{item1}, \param{const wxDataViewItem\& }{item2}, \param{unsigned int }{column}, \param{bool }{ascending}}
 
-Call this if the values of this row have been changed.
+The compare function to be used by control. The default compare function
+sorts by container and other items separately and in ascending order.
+Override this for a different sorting behaviour.
 
-\membersection{wxDataViewListModel::RowDeleted}\label{wxdataviewlistmodelrowdeleted}
+\membersection{wxDataViewModel::GetColumnCount}\label{wxdataviewmodelgetcolumncount}
 
-\func{virtual bool}{RowDeleted}{\param{unsigned int }{row}}
+\constfunc{unsigned int}{GetColumnCount}{\void}
 
-Call this if this row has been deleted.
+Override this to indicate the number of columns in the model.
 
-\membersection{wxDataViewListModel::RowInserted}\label{wxdataviewlistmodelrowinserted}
+\membersection{wxDataViewModel::GetColumnType}\label{wxdataviewmodelgetcolumntype}
 
-\func{virtual bool}{RowInserted}{\param{unsigned int }{before}}
+\constfunc{wxString}{GetColumnType}{\param{unsigned int }{col}}
 
-Call this if a row has been inserted.
+Override this to indicate what type of data is stored in the
+column specified by {\it col}. This should return a string
+indicating the type of data as reported by \helpref{wxVariant}{wxvariant}.
 
-\membersection{wxDataViewListModel::RowPrepended}\label{wxdataviewlistmodelrowprepended}
+\membersection{wxDataViewModel::GetFirstChild}\label{wxdataviewmodelgetfirstchild}
 
-\func{virtual bool}{RowPrepended}{\void}
+\constfunc{wxDataViewItem}{GetFirstChild}{\param{const wxDataViewItem\& }{parent}}
 
-Call this if a row has been prepended.
+To be removed.
 
-\membersection{wxDataViewListModel::RowsReordered}\label{wxdataviewlistmodelrowsreordered}
+\membersection{wxDataViewModel::GetNextSibling}\label{wxdataviewmodelgetnextsibling}
 
-\func{virtual bool}{RowsReordered}{\param{unsigned int* }{new\_order}}
+\constfunc{wxDataViewItem}{GetNextSibling}{\param{const wxDataViewItem\& }{item}}
 
-Call this if the rows have been reorderd.
+To be removed.
 
-\membersection{wxDataViewListModel::SetValue}\label{wxdataviewlistmodelsetvalue}
+\membersection{wxDataViewModel::GetParent}\label{wxdataviewmodelgetparent}
 
-\func{virtual bool}{SetValue}{\param{const wxVariant\& }{variant}, \param{unsigned int }{col}, \param{unsigned int }{row}}
+\constfunc{wxDataViewItem}{GetParent}{\param{const wxDataViewItem\& }{item}}
 
-This method gets called by e.g. the wxDataViewCtrl class if a 
-value has been changed through its graphical interface. You
-need to override this method in order to update the data in
-the underlying data structur. Afterwards, 
-\helpref{ValueChanged}{wxdataviewlistmodelvaluechanged} is called.
+Override this to indicate which wxDataViewItem representing the parent
+of {\it item} or an invalid wxDataViewItem if {\it item} is the root item.
 
+\membersection{wxDataViewModel::GetValue}\label{wxdataviewmodelgetvalue}
 
-\membersection{wxDataViewListModel::ValueChanged}\label{wxdataviewlistmodelvaluechanged}
+\constfunc{void}{GetValue}{\param{wxVariant\& }{variant}, \param{const wxDataViewItem\& }{item}, \param{unsigned int }{col}}
 
-\func{virtual bool}{ValueChanged}{\param{unsigned int }{col}, \param{unsigned int }{row}}
+Override this to indicate the value of {\it item}
+A \helpref{wxVariant}{wxvariant} is used to store the data.
 
-Call this if a value in the model has been changed.
+\membersection{wxDataViewModel::IsContainer}\label{wxdataviewmodeliscontainer}
 
+\constfunc{bool}{IsContainer}{\param{const wxDataViewItem\& }{item}}
 
-\section{\class{wxDataViewSortedListModel}}\label{wxdataviewsortedlistmodel}
+Override this to indicate of {\it item} is a container, i.e. if
+it can have child items.
 
-This class is used for sorting data. It does not contain any
-data itself. Rather, it provides a sorted interface for 
-another list model.
+\membersection{wxDataViewModel::ItemAdded}\label{wxdataviewmodelitemadded}
 
-Currently, the sorting algorithm isn't thread safe. This needs
-to be fixed.
+\func{bool}{ItemAdded}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItem\& }{item}}
 
-\wxheading{Derived from}
+Call this to inform the model that an item has been added
+to the data.
 
-\helpref{wxDataViewListModel}{wxdataviewlistmodel}\\
-\helpref{wxDataViewModel}{wxdataviewmodel}\\
-\helpref{wxObjectRefData}{wxobjectrefdata}
+\membersection{wxDataViewModel::ItemChanged}\label{wxdataviewmodelitemchanged}
 
-\wxheading{Include files}
+\func{bool}{ItemChanged}{\param{const wxDataViewItem\& }{item}}
 
-<wx/dataview.h>
+Call this to inform the model that an item has changed.
 
-\membersection{wxDataViewSortedListModel::wxDataViewSortedListModel}\label{wxdataviewsortedlistmodelwxdataviewsortedlistmodel}
+\membersection{wxDataViewModel::ItemDeleted}\label{wxdataviewmodelitemdeleted}
 
-\func{}{wxDataViewSortedListModel}{\param{wxDataViewListModel* }{child}}
+\func{bool}{ItemDeleted}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItem\& }{item}}
 
-Constructor. {\it child} is the child data model the data of
-which this model is supposed to present in a sorted way.
+Call this to inform the model that an item has been deleted.
 
-\membersection{wxDataViewSortedListModel::\destruct{wxDataViewSortedListModel}}\label{wxdataviewsortedlistmodeldtor}
+\membersection{wxDataViewModel::RemoveNotifier}\label{wxdataviewmodelremovenotifier}
 
-\func{}{\destruct{wxDataViewSortedListModel}}{\void}
+\func{void}{RemoveNotifier}{\param{wxDataViewModelNotifier* }{notifier}}
 
-Destructor.
+Remove the {\it notifier} from the list of notifiers.
 
-\membersection{wxDataViewSortedListModel::GetAscending}\label{wxdataviewsortedlistmodelgetascending}
+\membersection{wxDataViewModel::Resort}\label{wxdataviewmodelresort}
 
-\func{bool}{GetAscending}{\void}
+\func{void}{Resort}{\void}
 
-Returns true if the data is sorted in ascending order.
+Call this to initiate a resort after the sort function has
+been changed.
 
-\membersection{wxDataViewSortedListModel::Resort}\label{wxdataviewsortedlistmodelresort}
+\membersection{wxDataViewModel::SetValue}\label{wxdataviewmodelsetvalue}
 
-\func{void}{Resort}{\void}
+\func{bool}{SetValue}{\param{const wxVariant\& }{variant}, \param{const wxDataViewItem\& }{item}, \param{unsigned int }{col}}
 
-Tell the model to resort its data.
+This gets called in order to set a value in the data model.
+The most common scenario is that the wxDataViewCtrl calls
+this method after the user changed some data in the view.
+Afterwards \helpref{ValueChanged}{wxdataviewmodelvaluechanged}
+has to be called!
 
-\membersection{wxDataViewSortedListModel::SetAscending}\label{wxdataviewsortedlistmodelsetascending}
+\membersection{wxDataViewModel::ValueChanged}\label{wxdataviewmodelvaluechanged}
 
-\func{void}{SetAscending}{\param{bool }{ascending}}
+\func{bool}{ValueChanged}{\param{const wxDataViewItem\& }{item}, \param{unsigned int }{col}}
 
-Set the sort order of the data.
+Call this to inform this model that a value in
+the model has been changed.
 
diff --git a/docs/latex/wx/dataviewmodelnotifier.tex b/docs/latex/wx/dataviewmodelnotifier.tex
new file mode 100644
index 0000000000..9e7708b60d
--- /dev/null
+++ b/docs/latex/wx/dataviewmodelnotifier.tex
@@ -0,0 +1,80 @@
+\section{\class{wxDataViewModelNotifier}}\label{wxdataviewmodelnotifier}
+
+A wxDataViewModelNotifier instance is owned by a
+\helpref{wxDataViewModel}{wxdataviewmodel}
+and mirrors its notification interface. See 
+the documentation of that class for further
+information.
+
+\wxheading{Derived from}
+
+No base class
+
+\wxheading{Include files}
+
+<dataview.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxDataViewModelNotifier::wxDataViewModelNotifier}\label{wxdataviewmodelnotifierwxdataviewmodelnotifier}
+
+\func{}{wxDataViewModelNotifier}{\void}
+
+Constructor.
+
+\membersection{wxDataViewModelNotifier::\destruct{wxDataViewModelNotifier}}\label{wxdataviewmodelnotifierdtor}
+
+\func{}{\destruct{wxDataViewModelNotifier}}{\void}
+
+Destructor.
+
+\membersection{wxDataViewModelNotifier::Cleared}\label{wxdataviewmodelnotifiercleared}
+
+\func{bool}{Cleared}{\void}
+
+Called by owning model.
+
+\membersection{wxDataViewModelNotifier::GetOwner}\label{wxdataviewmodelnotifiergetowner}
+
+\func{wxDataViewModel*}{GetOwner}{\void}
+
+Get owning wxDataViewModel.
+
+\membersection{wxDataViewModelNotifier::ItemAdded}\label{wxdataviewmodelnotifieritemadded}
+
+\func{bool}{ItemAdded}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItem\& }{item}}
+
+Called by owning model.
+
+\membersection{wxDataViewModelNotifier::ItemChanged}\label{wxdataviewmodelnotifieritemchanged}
+
+\func{bool}{ItemChanged}{\param{const wxDataViewItem\& }{item}}
+
+Called by owning model.
+
+\membersection{wxDataViewModelNotifier::ItemDeleted}\label{wxdataviewmodelnotifieritemdeleted}
+
+\func{bool}{ItemDeleted}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItem\& }{item}}
+
+Called by owning model.
+
+\membersection{wxDataViewModelNotifier::Resort}\label{wxdataviewmodelnotifierresort}
+
+\func{void}{Resort}{\void}
+
+Called by owning model.
+
+\membersection{wxDataViewModelNotifier::SetOwner}\label{wxdataviewmodelnotifiersetowner}
+
+\func{void}{SetOwner}{\param{wxDataViewModel* }{owner}}
+
+Set owner of this notifier. Used internally.
+
+\membersection{wxDataViewModelNotifier::ValueChanged}\label{wxdataviewmodelnotifiervaluechanged}
+
+\func{bool}{ValueChanged}{\param{const wxDataViewItem\& }{item}, \param{unsigned int }{col}}
+
+Called by owning model.
-- 
2.47.2

