]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/ctrlsub.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxControlWithItems 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  11     @class wxItemContainerImmutable 
  13     wxItemContainer defines an interface which is implemented by all controls 
  14     which have string subitems each of which may be selected. 
  16     It is decomposed in wxItemContainerImmutable which omits all methods 
  17     adding/removing items and is used by wxRadioBox and wxItemContainer itself. 
  19     Note that this is not a control, it's a mixin interface that classes 
  20     have to derive from in addition to wxControl or wxWindow. 
  22     Examples: wxListBox, wxCheckListBox, wxChoice and wxComboBox (which 
  23     implements an extended interface deriving from this one) 
  28     @see wxControlWithItems, wxItemContainer 
  30 class wxItemContainerImmutable
 
  34     wxItemContainerImmutable(); 
  39         Returns the number of items in the control. 
  43     virtual unsigned int GetCount() const; 
  46         Returns @true if the control is empty or @false if it has some items. 
  53         Returns the label of the item with the given index. 
  58         @return The label of the item or an empty string if the position was 
  61     virtual wxString 
GetString(unsigned int n
) const; 
  64         Returns the array of the labels of all items in the control. 
  66     wxArrayString 
GetStrings() const; 
  69         Sets the label for the given item. 
  72             The zero-based item index. 
  76     virtual void SetString(unsigned int n
, const wxString
& string
); 
  79         Finds an item whose label matches the given string. 
  84             Whether search is case sensitive (default is not). 
  86         @return The zero-based position of the item, or wxNOT_FOUND if the 
  89     virtual int FindString(const wxString
& string
, bool caseSensitive 
= false) const; 
  97         Sets the selection to the given item @a n or removes the selection 
  98         entirely if @a n == @c wxNOT_FOUND. 
 100         Note that this does not cause any command events to be emitted nor does 
 101         it deselect any other items in the controls which support multiple 
 105             The string position to select, starting from zero. 
 107         @see SetString(), SetStringSelection() 
 109     virtual void SetSelection(int n
); 
 112         Returns the index of the selected item or @c wxNOT_FOUND if no item is 
 115         @return The position of the current selection. 
 117         @remarks This method can be used with single selection list boxes only, 
 118                  you should use wxListBox::GetSelections() for the list 
 119                  boxes with wxLB_MULTIPLE style. 
 121         @see SetSelection(), GetStringSelection() 
 123     virtual int GetSelection() const; 
 126         Selects the item with the specified string in the control. This doesn't 
 127         cause any command events to be emitted. 
 130             The string to select. 
 132         @return @true if the specified string has been selected, @false if it 
 133                 wasn't found in the control. 
 135     bool SetStringSelection(const wxString
& string
); 
 138         Returns the label of the selected item or an empty string if no item is 
 143     virtual wxString 
GetStringSelection() const; 
 146         This is the same as SetSelection() and exists only because it is 
 147         slightly more natural for controls which support multiple selection. 
 156     @class wxItemContainer 
 158     This class is an abstract base class for some wxWidgets controls which 
 159     contain several items such as wxListBox, wxCheckListBox, wxComboBox or 
 160     wxChoice. It defines an interface which is implemented by all controls 
 161     which have string subitems each of which may be selected. 
 163     wxItemContainer extends wxItemContainerImmutable interface with methods 
 164     for adding/removing items. 
 166     It defines the methods for accessing the controls items and although each 
 167     of the derived classes implements them differently, they still all conform 
 168     to the same interface. 
 170     The items in a wxItemContainer have (non-empty) string labels and, 
 171     optionally, client data associated with them. Client data may be of two 
 172     different kinds: either simple untyped (@c void *) pointers which are 
 173     simply stored by the control but not used in any way by it, or typed 
 174     pointers (wxClientData*) which are owned by the control meaning that the 
 175     typed client data (and only it) will be deleted when an item is deleted 
 176     using Delete() or the entire control is cleared using Clear(), which also 
 177     happens when it is destroyed. 
 179     Finally note that in the same control all items must have client data of 
 180     the same type (typed or untyped), if any. This type is determined by the 
 181     first call to Append() (the version with client data pointer) or 
 184     Note that this is not a control, it's a mixin interface that classes 
 185     have to derive from in addition to wxControl or wxWindow. Convenience 
 186     class wxControlWithItems is provided for this purpose. 
 191     @see wxControlWithItems, wxItemContainerImmutable 
 193 class wxItemContainer 
: public wxItemContainerImmutable
 
 199         Appends item into the control. 
 204         @return The return value is the index of the newly inserted item. 
 205                 Note that this may be different from the last one if the 
 206                 control is sorted (e.g. has @c wxLB_SORT or @c wxCB_SORT 
 209     int Append(const wxString
& item
); 
 212         Appends item into the control. 
 217             Pointer to client data to associate with the new item. 
 219         @return The return value is the index of the newly inserted item. 
 220                 Note that this may be different from the last one if the 
 221                 control is sorted (e.g. has @c wxLB_SORT or @c wxCB_SORT 
 224     int Append(const wxString
& item
, void* clientData
); 
 227         Appends item into the control. 
 232             Pointer to client data to associate with the new item. 
 234         @return The return value is the index of the newly inserted item. 
 235                 Note that this may be different from the last one if the 
 236                 control is sorted (e.g. has @c wxLB_SORT or @c wxCB_SORT 
 239     int Append(const wxString
& item
, wxClientData
* clientData
); 
 242         Appends several items at once into the control. 
 244         Notice that calling this method is usually much faster than appending 
 245         them one by one if you need to add a lot of items. 
 248             Array of strings to insert. 
 250     void Append(const wxArrayString
& items
); 
 253         Appends several items at once into the control. 
 255         Notice that calling this method is usually much faster than appending 
 256         them one by one if you need to add a lot of items. 
 259             Array of strings to insert. 
 261             Array of client data pointers of the same size as @a items to 
 262             associate with the new items. 
 264     void Append(const wxArrayString
& items
, void **clientData
); 
 267         Appends several items at once into the control. 
 269         Notice that calling this method is usually much faster than appending 
 270         them one by one if you need to add a lot of items. 
 273             Array of strings to insert. 
 275             Array of client data pointers of the same size as @a items to 
 276             associate with the new items. 
 278     void Append(const wxArrayString
& items
, wxClientData 
**clientData
); 
 281         Appends several items at once into the control. 
 283         Notice that calling this method is usually much faster than appending 
 284         them one by one if you need to add a lot of items. 
 287             Number of items in the @a items array. 
 289             Array of strings of size @a n. 
 291     void Append(unsigned int n
, const wxString
* items
); 
 294         Appends several items at once into the control. 
 296         Notice that calling this method is usually much faster than appending 
 297         them one by one if you need to add a lot of items. 
 300             Number of items in the @a items array. 
 302             Array of strings of size @a n. 
 304             Array of client data pointers of size @a n to associate with the 
 307     void Append(unsigned int n
, const wxString
* items
, 
 311         Appends several items at once into the control. 
 313         Notice that calling this method is usually much faster than appending 
 314         them one by one if you need to add a lot of items. 
 317             Number of items in the @a items array. 
 319             Array of strings of size @a n. 
 321             Array of client data pointers of size @a n to associate with the 
 324     void Append(unsigned int n
, const wxString
* items
, 
 325                 wxClientData
** clientData
); 
 329         Removes all items from the control. 
 330         Clear() also deletes the client data of the existing items if it is 
 331         owned by the control. 
 336         Deletes an item from the control. 
 338         The client data associated with the item will be also deleted if it is 
 339         owned by the control.  Note that it is an error (signalled by an assert 
 340         failure in debug builds) to remove an item with the index negative or 
 341         greater or equal than the number of items in the control. 
 344             The zero-based item index. 
 348     void Delete(unsigned int n
); 
 353         Returns a pointer to the client data associated with the given item (if 
 354         any).  It is an error to call this function for a control which doesn't 
 355         have untyped client data at all although it is OK to call it even if 
 356         the given item doesn't have any client data associated with it (but 
 360             The zero-based position of the item. 
 362         @return A pointer to the client data, or @NULL if not present. 
 364     void* GetClientData(unsigned int n
) const; 
 367         Returns a pointer to the client data associated with the given item (if 
 368         any).  It is an error to call this function for a control which doesn't 
 369         have typed client data at all although it is OK to call it even if the 
 370         given item doesn't have any client data associated with it (but other 
 374             The zero-based position of the item. 
 376         @return A pointer to the client data, or @NULL if not present. 
 378     wxClientData
* GetClientObject(unsigned int n
) const; 
 381         Associates the given untyped client data pointer with the given item. 
 382         Note that it is an error to call this function if any typed client data 
 383         pointers had been associated with the control items before. 
 386             The zero-based item index. 
 388             The client data to associate with the item. 
 390     void SetClientData(unsigned int n
, void* data
); 
 393         Associates the given typed client data pointer with the given item: the 
 394         @a data object will be deleted when the item is deleted (either 
 395         explicitly by using Delete() or implicitly when the control itself is 
 396         destroyed).  Note that it is an error to call this function if any 
 397         untyped client data pointers had been associated with the control items 
 401             The zero-based item index. 
 403             The client data to associate with the item. 
 405     void SetClientObject(unsigned int n
, wxClientData
* data
); 
 412         Inserts item into the control. 
 417             Position to insert item before, zero based. 
 419         @return The return value is the index of the newly inserted item. 
 420                 If the insertion failed for some reason, -1 is returned. 
 422     int Insert(const wxString
& item
, unsigned int pos
); 
 425         Inserts item into the control. 
 430             Position to insert item before, zero based. 
 432             Pointer to client data to associate with the new item. 
 434         @return The return value is the index of the newly inserted item. 
 435                 If the insertion failed for some reason, -1 is returned. 
 437     int Insert(const wxString
& item
, unsigned int pos
, void* clientData
); 
 440         Inserts item into the control. 
 445             Position to insert item before, zero based. 
 447             Pointer to client data to associate with the new item. 
 449         @return The return value is the index of the newly inserted item. 
 450                 If the insertion failed for some reason, -1 is returned. 
 452     int Insert(const wxString
& item
, unsigned int pos
, 
 453                wxClientData
* clientData
); 
 456         Inserts several items at once into the control. 
 458         Notice that calling this method is usually much faster than inserting 
 459         them one by one if you need to insert a lot of items. 
 462             Array of strings to insert. 
 464             Position to insert the items before, zero based. 
 466     void Insert(const wxArrayString
& items
, unsigned int pos
); 
 469         Inserts several items at once into the control. 
 471         Notice that calling this method is usually much faster than inserting 
 472         them one by one if you need to insert a lot of items. 
 475             Array of strings to insert. 
 477             Position to insert the items before, zero based. 
 479             Array of client data pointers of the same size as @a items to 
 480             associate with the new items. 
 482     void Insert(const wxArrayString
& items
, unsigned int pos
, 
 486         Inserts several items at once into the control. 
 488         Notice that calling this method is usually much faster than inserting 
 489         them one by one if you need to insert a lot of items. 
 492             Array of strings to insert. 
 494             Position to insert the items before, zero based. 
 496             Array of client data pointers of the same size as @a items to 
 497             associate with the new items. 
 499     void Insert(const wxArrayString
& items
, unsigned int pos
, 
 500                 wxClientData 
**clientData
); 
 503         Inserts several items at once into the control. 
 505         Notice that calling this method is usually much faster than inserting 
 506         them one by one if you need to insert a lot of items. 
 509             Number of items in the @a items array. 
 511             Array of strings of size @a n. 
 513             Position to insert the items before, zero based. 
 515     void Insert(unsigned int n
, const wxString
* items
, 
 519         Inserts several items at once into the control. 
 521         Notice that calling this method is usually much faster than inserting 
 522         them one by one if you need to insert a lot of items. 
 525             Number of items in the @a items array. 
 527             Array of strings of size @a n. 
 529             Position to insert the new items before, zero based. 
 531             Array of client data pointers of size @a n to associate with the 
 534     void Insert(unsigned int n
, const wxString
* items
, 
 539         Inserts several items at once into the control. 
 541         Notice that calling this method is usually much faster than inserting 
 542         them one by one if you need to insert a lot of items. 
 545             Number of items in the @a items array. 
 547             Array of strings of size @a n. 
 549             Position to insert the new items before, zero based. 
 551             Array of client data pointers of size @a n to associate with the 
 554     void Insert(unsigned int n
, const wxString
* items
, 
 556                 wxClientData
** clientData
); 
 561         Replaces the current control contents with the given items. 
 563         Notice that calling this method is usually much faster than appending 
 564         them one by one if you need to add a lot of items. 
 567             Array of strings to insert. 
 569     void Set(const wxArrayString
& items
); 
 572         Replaces the current control contents with the given items. 
 574         Notice that calling this method is usually much faster than appending 
 575         them one by one if you need to add a lot of items. 
 578             Array of strings to insert. 
 580             Array of client data pointers of the same size as @a items to 
 581             associate with the new items. 
 583     void Set(const wxArrayString
& items
, void **clientData
); 
 586         Replaces the current control contents with the given items. 
 588         Notice that calling this method is usually much faster than appending 
 589         them one by one if you need to add a lot of items. 
 592             Array of strings to insert. 
 594             Array of client data pointers of the same size as @a items to 
 595             associate with the new items. 
 597     void Set(const wxArrayString
& items
, wxClientData 
**clientData
); 
 600         Replaces the current control contents with the given items. 
 602         Notice that calling this method is usually much faster than appending 
 603         them one by one if you need to add a lot of items. 
 606             Number of items in the @a items array. 
 608             Array of strings of size @a n. 
 610     void Set(unsigned int n
, const wxString
* items
); 
 613         Replaces the current control contents with the given items. 
 615         Notice that calling this method is usually much faster than appending 
 616         them one by one if you need to add a lot of items. 
 619             Number of items in the @a items array. 
 621             Array of strings of size @a n. 
 623             Array of client data pointers of size @a n to associate with the 
 626     void Set(unsigned int n
, const wxString
* items
, void** clientData
); 
 629         Replaces the current control contents with the given items. 
 631         Notice that calling this method is usually much faster than appending 
 632         them one by one if you need to add a lot of items. 
 635             Number of items in the @a items array. 
 637             Array of strings of size @a n. 
 639             Array of client data pointers of size @a n to associate with the 
 642     void Set(unsigned int n
, const wxString
* items
, wxClientData
** clientData
); 
 648     @class wxControlWithItems 
 650     This is convenience class that derives from both wxControl and 
 651     wxItemContainer. It is used as basis for some wxWidgets controls 
 652     (wxChoice and wxListBox). 
 657     @see wxItemContainer, wxItemContainerImmutable 
 659 class wxControlWithItems 
: public wxControl
, public wxItemContainer