home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / ctrlsub.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  5KB  |  162 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        wx/ctrlsub.h (read: "wxConTRoL with SUBitems")
  3. // Purpose:     wxControlWithItems interface
  4. // Author:      Vadim Zeitlin
  5. // Modified by:
  6. // Created:     22.10.99
  7. // RCS-ID:      $Id: ctrlsub.h,v 1.9 2002/08/31 11:29:09 GD Exp $
  8. // Copyright:   (c) wxWindows team
  9. // Licence:     wxWindows license
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef _WX_CTRLSUB_H_BASE_
  13. #define _WX_CTRLSUB_H_BASE_
  14.  
  15. #if defined(__GNUG__) && !defined(__APPLE__)
  16.     #pragma interface "controlwithitems.h"
  17. #endif
  18.  
  19. #if wxUSE_CONTROLS
  20.  
  21. #include "wx/control.h"      // base class
  22.  
  23. // ----------------------------------------------------------------------------
  24. // wxItemContainer defines an interface which is implemented by all controls
  25. // which have string subitems each of which may be selected.
  26. //
  27. // Examples: wxListBox, wxCheckListBox, wxChoice and wxComboBox (which
  28. // implements an extended interface deriving from this one)
  29. // ----------------------------------------------------------------------------
  30.  
  31. class WXDLLEXPORT wxItemContainer
  32. {
  33. public:
  34.     wxItemContainer() { m_clientDataItemsType = wxClientData_None; }
  35.     virtual ~wxItemContainer();
  36.  
  37.     // adding items
  38.     // ------------
  39.  
  40.     int Append(const wxString& item)
  41.         { return DoAppend(item); }
  42.     int Append(const wxString& item, void *clientData)
  43.         { int n = DoAppend(item); SetClientData(n, clientData); return n; }
  44.     int Append(const wxString& item, wxClientData *clientData)
  45.         { int n = DoAppend(item); SetClientObject(n, clientData); return n; }
  46.  
  47.     // append several items at once to the control
  48.     void Append(const wxArrayString& strings);
  49.  
  50.     // deleting items
  51.     // --------------
  52.  
  53.     virtual void Clear() = 0;
  54.     virtual void Delete(int n) = 0;
  55.  
  56.     // accessing strings
  57.     // -----------------
  58.  
  59.     virtual int GetCount() const = 0;
  60.     virtual wxString GetString(int n) const = 0;
  61.     virtual void SetString(int n, const wxString& s) = 0;
  62.     virtual int FindString(const wxString& s) const = 0;
  63.  
  64.     // selection
  65.     // ---------
  66.  
  67.     virtual void Select(int n) = 0;
  68.     virtual int GetSelection() const = 0;
  69.  
  70.     wxString GetStringSelection() const;
  71.  
  72.     // misc
  73.     // ----
  74.  
  75.     // client data stuff
  76.     void SetClientData(int n, void* clientData);
  77.     void* GetClientData(int n) const;
  78.  
  79.     void SetClientObject(int n, wxClientData* clientData);
  80.     wxClientData* GetClientObject(int n) const;
  81.  
  82.     bool HasClientObjectData() const
  83.         { return m_clientDataItemsType == wxClientData_Object; }
  84.     bool HasClientUntypedData() const
  85.         { return m_clientDataItemsType == wxClientData_Void; }
  86.  
  87. #if WXWIN_COMPATIBILITY_2_2
  88.     // compatibility - these functions are deprecated, use the new ones
  89.     // instead
  90.     int Number() const { return GetCount(); }
  91. #endif // WXWIN_COMPATIBILITY_2_2
  92.  
  93. protected:
  94.     virtual int DoAppend(const wxString& item) = 0;
  95.  
  96.     virtual void DoSetItemClientData(int n, void* clientData) = 0;
  97.     virtual void* DoGetItemClientData(int n) const = 0;
  98.     virtual void DoSetItemClientObject(int n, wxClientData* clientData) = 0;
  99.     virtual wxClientData* DoGetItemClientObject(int n) const = 0;
  100.  
  101.     // the type of the client data for the items
  102.     wxClientDataType m_clientDataItemsType;
  103. };
  104.  
  105. class WXDLLEXPORT wxControlWithItems : public wxControl, public wxItemContainer
  106. {
  107. public:
  108.     wxControlWithItems() { }
  109.     virtual ~wxControlWithItems();
  110.     
  111.     // we have to redefine these functions here to avoid ambiguities in classes
  112.     // deriving from us which would arise otherwise because both base classses
  113.     // have the methods with the same names - hopefully, a smart compiler can
  114.     // optimize away these simple inline wrappers so we don't suffer much from
  115.     // this
  116.  
  117.     void SetClientData(void *data)
  118.     {
  119.         wxControl::SetClientData(data);
  120.     }
  121.  
  122.     void *GetClientData() const
  123.     {
  124.         return wxControl::GetClientData();
  125.     }
  126.  
  127.     void SetClientObject(wxClientData *data)
  128.     {
  129.         wxControl::SetClientObject(data);
  130.     }
  131.  
  132.     wxClientData *GetClientObject() const
  133.     {
  134.         return wxControl::GetClientObject();
  135.     }
  136.  
  137.     void SetClientData(int n, void* clientData)
  138.     {
  139.         wxItemContainer::SetClientData(n, clientData);
  140.     }
  141.  
  142.     void* GetClientData(int n) const
  143.     {
  144.         return wxItemContainer::GetClientData(n);
  145.     }
  146.  
  147.     void SetClientObject(int n, wxClientData* clientData)
  148.     {
  149.         wxItemContainer::SetClientObject(n, clientData);
  150.     }
  151.  
  152.     wxClientData* GetClientObject(int n) const
  153.     {
  154.         return wxItemContainer::GetClientObject(n);
  155.     }
  156. };
  157.  
  158. #endif // wxUSE_CONTROLS
  159.  
  160. #endif // _WX_CTRLSUB_H_BASE_
  161.  
  162.