-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: ctrlsub.tex
%% Purpose: wxControlWithItems documentation
%% Author: Vadim Zeitlin
%% RCS-ID: $Id$
%% Copyright: (c) 2003 Vadim Zeitlin
%% License: wxWindows license
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxControlWithItems}}\label{wxcontrolwithitems}
-This class is an abstract base class for some wxWindows controls which contain
-several items, such as \helpref{wxListBox}{wxlistbox} and
-\helpref{wxCheckListBox}{wxchecklistbox} derived from it,
+This class is an abstract base class for some wxWidgets controls which contain
+several items, such as \helpref{wxListBox}{wxlistbox} and
+\helpref{wxCheckListBox}{wxchecklistbox} derived from it,
\helpref{wxChoice}{wxchoice} and \helpref{wxComboBox}{wxcombobox}.
It defines the methods for accessing the controls items and although each of
the derived classes implements them differently, they still all conform to the
same interface.
-The items in a wxControlWithItems have (non empty) string labels and,
+The items in a wxControlWithItems have (non-empty) string labels and,
optionally, client data associated with them. Client data may be of two
different kinds: either simple untyped ({\tt void *}) pointers which are simply
stored by the control but not used in any way by it, or typed pointers
({\tt wxClientData *}) which are owned by the control meaning that the typed
-client data (and only it) will be deleted when an item is
-\helpref{deleted}{wxcontrolwithitemsdelete} or the entire control is
+client data (and only it) will be deleted when an item is
+\helpref{deleted}{wxcontrolwithitemsdelete} or the entire control is
\helpref{cleared}{wxcontrolwithitemsclear} (which also happens when it is
destroyed). Finally note that in the same control all items must have client
data of the same type (typed or untyped), if any. This type is determined by
\membersection{wxControlWithItems::Delete}\label{wxcontrolwithitemsdelete}
-\func{void}{Delete}{\param{int}{ n}}
+\func{void}{Delete}{\param{unsigned int}{ n}}
Deletes an item from the control. The client data associated with the item
will be also deleted if it is owned by the control.
\membersection{wxControlWithItems::FindString}\label{wxcontrolwithitemsfindstring}
-\func{int}{FindString}{\param{const wxString\& }{string}}
+\func{int}{FindString}{\param{const wxString\& }{string}, \param{bool}{ caseSensitive = false}}
Finds an item whose label matches the given string.
\docparam{string}{String to find.}
+\docparam{caseSensitive}{Whether search is case sensitive (default is not).}
+
\wxheading{Return value}
The zero-based position of the item, or {\tt wxNOT\_FOUND} if the string was
\membersection{wxControlWithItems::GetClientData}\label{wxcontrolwithitemsgetclientdata}
-\constfunc{void *}{GetClientData}{\param{int}{ n}}
+\constfunc{void *}{GetClientData}{\param{unsigned int}{ n}}
Returns a pointer to the client data associated with the given item (if any).
It is an error to call this function for a control which doesn't have untyped
\membersection{wxControlWithItems::GetClientObject}\label{wxcontrolwithitemsgetclientobject}
-\constfunc{wxClientData *}{GetClientObject}{\param{int}{ n}}
+\constfunc{wxClientData *}{GetClientObject}{\param{unsigned int}{ n}}
Returns a pointer to the client data associated with the given item (if any).
It is an error to call this function for a control which doesn't have typed
\membersection{wxControlWithItems::GetCount}\label{wxcontrolwithitemsgetcount}
-\constfunc{int}{GetCount}{\void}
+\constfunc{unsigned int}{GetCount}{\void}
Returns the number of items in the control.
\wxheading{Remarks}
-This method can be used with single selection list boxes only, you should use
+This method can be used with single selection list boxes only, you should use
\helpref{wxListBox::GetSelections}{wxlistboxgetselections} for the list boxes
with {\tt wxLB\_MULTIPLE} style.
\membersection{wxControlWithItems::GetString}\label{wxcontrolwithitemsgetstring}
-\constfunc{wxString}{GetString}{\param{int}{ n}}
+\constfunc{wxString}{GetString}{\param{unsigned int}{ n}}
Returns the label of the item with the given index.
\helpref{GetSelection}{wxcontrolwithitemsgetselection}
+\membersection{wxControlWithItems::Insert}\label{wxcontrolwithitemsinsert}
+
+\func{int}{Insert}{\param{const wxString\& }{ item}, \param{unsigned int }{pos}}
+
+Inserts the item into the list before pos.
+Not valid for {\tt wxLB\_SORT} or {\tt wxCB\_SORT} styles, use Append instead.
+
+\func{int}{Insert}{\param{const wxString\& }{ item}, \param{unsigned int }{pos}, \param{void *}{clientData}}
+
+\func{int}{Insert}{\param{const wxString\& }{ item}, \param{unsigned int }{pos}, \param{wxClientData *}{clientData}}
+
+Inserts the item into the list before pos, associating the given, typed or
+untyped, client data pointer with the item.
+Not valid for {\tt wxLB\_SORT} or {\tt wxCB\_SORT} styles, use Append instead.
+
+\wxheading{Parameters}
+
+\docparam{item}{String to add.}
+
+\docparam{pos}{Position to insert item before, zero based.}
+
+\docparam{clientData}{Client data to associate with the item.}
+
+\wxheading{Return value}
+
+The return value is the index of the newly inserted item. If the insertion failed
+for some reason, -1 is returned.
+
+
\membersection{wxControlWithItems::IsEmpty}\label{wxcontrolwithitemsisempty}
\constfunc{bool}{IsEmpty}{\void}
{\bf Obsolescence note:} This method is obsolete and was replaced with
\helpref{GetCount}{wxcontrolwithitemsgetcount}, please use the new method in
-the new code. This method is only available if wxWindows was compiled with
+the new code. This method is only available if wxWidgets was compiled with
{\tt WXWIN\_COMPATIBILITY\_2\_2} defined and will disappear completely in
future versions.
+\membersection{wxControlWithItems::Select}\label{wxcontrolwithitemsselect}
+
+\func{void}{Select}{\param{int}{ n}}
+
+This is the same as \helpref{SetSelection}{wxcontrolwithitemssetselection} and
+exists only because it is slightly more natural for controls which support
+multiple selection.
+
+
\membersection{wxControlWithItems::SetClientData}\label{wxcontrolwithitemssetclientdata}
-\func{void}{SetClientData}{\param{int}{ n}, \param{void *}{data}}
+\func{void}{SetClientData}{\param{unsigned int}{ n}, \param{void *}{data}}
Associates the given untyped client data pointer with the given item. Note that
it is an error to call this function if any typed client data pointers had been
\membersection{wxControlWithItems::SetClientObject}\label{wxcontrolwithitemssetclientobject}
-\func{void}{SetClientObject}{\param{int}{ n}, \param{wxClientData *}{data}}
+\func{void}{SetClientObject}{\param{unsigned int}{ n}, \param{wxClientData *}{data}}
-Associates the given typed client data pointer with the given item: the
+Associates the given typed client data pointer with the given item: the
{\it data} object will be deleted when the item is deleted (either explicitly
by using \helpref{Deletes}{wxcontrolwithitemsdelete} or implicitly when the
control itself is destroyed).
\func{void}{SetSelection}{\param{int}{ n}}
-Sets the choice by passing the desired string position. This does not cause
-any command events to get emitted.
+Sets the selection to the given item \arg{n} or removes the selection entirely
+if \arg{n} $==$ {\tt wxNOT\_FOUND}.
+
+Note that this does not cause any command events to be emitted nor does it
+deselect any other items in the controls which support multiple selections.
\wxheading{Parameters}
\membersection{wxControlWithItems::SetString}\label{wxcontrolwithitemssetstring}
-\func{void}{SetString}{\param{int}{ n}, \param{const wxString\& }{ string}}
+\func{void}{SetString}{\param{unsigned int}{ n}, \param{const wxString\& }{ string}}
Sets the label for the given item.
\membersection{wxControlWithItems::SetStringSelection}\label{wxcontrolwithitemssetstringselection}
-\func{void}{SetStringSelection}{\param{const wxString\& }{ string}}
+\func{bool}{SetStringSelection}{\param{const wxString\& }{ string}}
Selects the item with the specified string in the control. This doesn't cause
any command events being emitted.
\docparam{string}{The string to select.}
-\wxheading{See also}
+\wxheading{Return value}
-\helpref{SetSelection}{wxcontrolwithitemssetselection}
+\true if the specified string has been selected, \false if it wasn't found in
+the control.
+\wxheading{See also}
+\helpref{SetSelection}{wxcontrolwithitemssetselection}