1. sorted wxListBox and wxComboBox seem to work under wxGTK

2. to support this, new class wxControlWithItems added (ctrlsub.h/cpp) and the
   controls sample modified to test it


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4141 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-10-22 18:00:39 +00:00
parent 2ee3ee1bc8
commit 6c8a980fc4
28 changed files with 657 additions and 495 deletions

View File

@@ -20,7 +20,7 @@
#pragma interface "choicebase.h"
#endif
#include "wx/control.h" // the base class
#include "wx/ctrlsub.h" // the base class
// ----------------------------------------------------------------------------
// global data
@@ -32,88 +32,26 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxChoiceNameStr;
// wxChoice allows to select one of a non-modifiable list of strings
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxChoiceBase : public wxControl
class WXDLLEXPORT wxChoiceBase : public wxControlWithItems
{
public:
// ctor
wxChoiceBase() { m_clientDataItemsType = ClientData_None; }
// all generic methods are in wxControlWithItems
// add a new item to the list
// no client data
void Append(const wxString& item) { DoAppend(item); }
// with client data which belongs to the caller
void Append(const wxString &item, void* clientData)
{ int n = DoAppend(item); SetClientData(n, clientData); }
// with client data which will be deleted by the control
void Append(const wxString &item, wxClientData* clientData)
{ int n = DoAppend(item); SetClientObject(n, clientData); }
// delete items from the list
// one item
virtual void Delete(int n) = 0;
// all of them
virtual void Clear() = 0;
// selection (at most one item may be selected in wxChoice)
// get the index of currently selected item or -1
virtual int GetSelection() const = 0;
// get the text of the currently selected item or empty string
virtual wxString GetStringSelection() const;
// set selectionto current item
// single selection logic
virtual void SetSelection(int n) = 0;
// set selection to the current item, returns TRUE if ok
virtual bool SetStringSelection(const wxString& sel);
virtual bool SetStringSelection(const wxString& s);
// accessors to the list of strings
// get the number of items in the list of strings
virtual int GetCount() const = 0;
// find string in the list, return wxNOT_FOUND if not found
virtual int FindString(const wxString& s) const = 0;
// get the string with the specified index
virtual wxString GetString(int n) const = 0;
// don't override this
virtual void Select(int n) { SetSelection(n); }
// set/get the number of columns in the control (as they're not supporte on
// most platforms, they do nothing by default)
virtual void SetColumns(int WXUNUSED(n) = 1 ) { }
virtual int GetColumns() const { return 1 ; }
// client data
// untyped (isn't deleted by the control)
void SetClientData( int n, void* clientData );
void* GetClientData( int n ) const;
// typed (is owned and deleted by the control)
void SetClientObject( int n, wxClientData* clientData );
wxClientData* GetClientObject( int n ) const;
// emulate selecting the item event.GetInt()
void Command(wxCommandEvent& event);
// emulate selecting the item event.GetInt() from the control
virtual void Command(wxCommandEvent &event);
// deprecated functions, heer for backwards compatibility only
int Number() const { return GetCount(); }
protected:
// pure virtuals to implement in the derived classes
virtual int DoAppend(const wxString& item) = 0;
virtual void DoSetClientData( int n, void* clientData ) = 0;
virtual void* DoGetClientData( int n ) const = 0;
virtual void DoSetClientObject( int n, wxClientData* clientData ) = 0;
virtual wxClientData* DoGetClientObject( int n ) const = 0;
// the above pure virtuals hide these virtuals in wxWindowBase
virtual void DoSetClientData(void* clientData )
{ wxWindowBase::DoSetClientData(clientData); };
virtual void* DoGetClientData() const
{ return(wxWindowBase::DoGetClientData()); };
virtual void DoSetClientObject( wxClientData* clientData )
{ wxWindowBase::DoSetClientObject(clientData); };
virtual wxClientData* DoGetClientObject() const
{ return(wxWindowBase::DoGetClientObject()); };
// the type of the client data for the items
wxClientDataType m_clientDataItemsType;
};
// ----------------------------------------------------------------------------