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:
@@ -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;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user