don't duplicate wxItemContainer methods in wxRadioBoxBase, instead extract the common intersection to a new wxItemContainerImmutable class and derive wxRadioBoxBase from it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32008 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
e9923becbe
commit
8ba7c77150
@ -24,11 +24,50 @@
|
||||
// wxItemContainer defines an interface which is implemented by all controls
|
||||
// which have string subitems each of which may be selected.
|
||||
//
|
||||
// It is decomposed in wxItemContainerImmutable which omits all methods
|
||||
// adding/removing items and is used by wxRadioBox and wxItemContainer itself.
|
||||
//
|
||||
// Examples: wxListBox, wxCheckListBox, wxChoice and wxComboBox (which
|
||||
// implements an extended interface deriving from this one)
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxItemContainer
|
||||
class WXDLLEXPORT wxItemContainerImmutable
|
||||
{
|
||||
public:
|
||||
wxItemContainerImmutable() { }
|
||||
virtual ~wxItemContainerImmutable();
|
||||
|
||||
// accessing strings
|
||||
// -----------------
|
||||
|
||||
virtual int GetCount() const = 0;
|
||||
bool IsEmpty() const { return GetCount() == 0; }
|
||||
|
||||
virtual wxString GetString(int n) const = 0;
|
||||
wxArrayString GetStrings() const;
|
||||
virtual void SetString(int n, const wxString& s) = 0;
|
||||
virtual int FindString(const wxString& s) const = 0;
|
||||
|
||||
|
||||
// selection
|
||||
// ---------
|
||||
|
||||
virtual void SetSelection(int n) = 0;
|
||||
virtual int GetSelection() const = 0;
|
||||
|
||||
// set selection to the specified string, return false if not found
|
||||
bool SetStringSelection(const wxString& s);
|
||||
|
||||
// return the selected string or empty string if none
|
||||
wxString GetStringSelection() const;
|
||||
|
||||
// this is the same as SetSelection( for single-selection controls but
|
||||
// reads better for multi-selection ones
|
||||
void Select(int n) { SetSelection(n); }
|
||||
|
||||
};
|
||||
|
||||
class WXDLLEXPORT wxItemContainer : public wxItemContainerImmutable
|
||||
{
|
||||
public:
|
||||
wxItemContainer() { m_clientDataItemsType = wxClientData_None; }
|
||||
@ -62,33 +101,6 @@ public:
|
||||
virtual void Clear() = 0;
|
||||
virtual void Delete(int n) = 0;
|
||||
|
||||
// accessing strings
|
||||
// -----------------
|
||||
|
||||
virtual int GetCount() const = 0;
|
||||
bool IsEmpty() const { return GetCount() == 0; }
|
||||
|
||||
virtual wxString GetString(int n) const = 0;
|
||||
wxArrayString GetStrings() const;
|
||||
virtual void SetString(int n, const wxString& s) = 0;
|
||||
virtual int FindString(const wxString& s) const = 0;
|
||||
|
||||
// selection
|
||||
// ---------
|
||||
|
||||
virtual void SetSelection(int n) = 0;
|
||||
virtual int GetSelection() const = 0;
|
||||
|
||||
// set selection to the specified string, return false if not found
|
||||
bool SetStringSelection(const wxString& s);
|
||||
|
||||
// return the selected string or empty string if none
|
||||
wxString GetStringSelection() const;
|
||||
|
||||
// this is the same as SetSelection( for single-selection controls but
|
||||
// reads better for multi-selection ones
|
||||
void Select(int n) { SetSelection(n); }
|
||||
|
||||
// misc
|
||||
// ----
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#if wxUSE_RADIOBOX
|
||||
|
||||
#include "wx/control.h"
|
||||
#include "wx/ctrlsub.h"
|
||||
|
||||
extern WXDLLEXPORT_DATA(const wxChar*) wxRadioBoxNameStr;
|
||||
|
||||
@ -28,53 +28,9 @@ extern WXDLLEXPORT_DATA(const wxChar*) wxRadioBoxNameStr;
|
||||
// example, it is a wxStaticBox in wxUniv and wxMSW but not in other ports
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxRadioBoxBase
|
||||
class WXDLLEXPORT wxRadioBoxBase : public wxItemContainerImmutable
|
||||
{
|
||||
public:
|
||||
// selection
|
||||
virtual void SetSelection(int n) = 0;
|
||||
virtual int GetSelection() const = 0;
|
||||
|
||||
virtual wxString GetStringSelection() const
|
||||
{
|
||||
wxString s;
|
||||
int sel = GetSelection();
|
||||
if ( sel != wxNOT_FOUND )
|
||||
s = GetString(sel);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
virtual bool SetStringSelection(const wxString& s)
|
||||
{
|
||||
int sel = FindString(s);
|
||||
if ( sel != wxNOT_FOUND )
|
||||
{
|
||||
SetSelection(sel);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// string access
|
||||
virtual int GetCount() const = 0;
|
||||
virtual int FindString(const wxString& s) const
|
||||
{
|
||||
int count = GetCount();
|
||||
for ( int n = 0; n < count; n++ )
|
||||
{
|
||||
if ( GetString(n) == s )
|
||||
return n;
|
||||
}
|
||||
|
||||
return wxNOT_FOUND;
|
||||
}
|
||||
|
||||
virtual wxString GetString(int n) const = 0;
|
||||
virtual void SetString(int n, const wxString& label) = 0;
|
||||
|
||||
// change the individual radio button state
|
||||
virtual void Enable(int n, bool enable = true) = 0;
|
||||
virtual void Show(int n, bool show = true) = 0;
|
||||
@ -87,6 +43,9 @@ public:
|
||||
int GetNextItem(int item, wxDirection dir, long style) const;
|
||||
|
||||
|
||||
// implement some of wxItemContainerImmutable functions
|
||||
virtual int FindString(const wxString& s) const;
|
||||
|
||||
// deprecated functions
|
||||
// --------------------
|
||||
|
||||
|
@ -36,10 +36,10 @@
|
||||
#endif
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
// wxItemContainerImmutable implementation
|
||||
// ============================================================================
|
||||
|
||||
wxItemContainer::~wxItemContainer()
|
||||
wxItemContainerImmutable::~wxItemContainerImmutable()
|
||||
{
|
||||
// this destructor is required for Darwin
|
||||
}
|
||||
@ -48,7 +48,7 @@ wxItemContainer::~wxItemContainer()
|
||||
// selection
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxString wxItemContainer::GetStringSelection() const
|
||||
wxString wxItemContainerImmutable::GetStringSelection() const
|
||||
{
|
||||
wxString s;
|
||||
int sel = GetSelection();
|
||||
@ -58,7 +58,7 @@ wxString wxItemContainer::GetStringSelection() const
|
||||
return s;
|
||||
}
|
||||
|
||||
bool wxItemContainer::SetStringSelection(const wxString& s)
|
||||
bool wxItemContainerImmutable::SetStringSelection(const wxString& s)
|
||||
{
|
||||
const int sel = FindString(s);
|
||||
if ( sel == wxNOT_FOUND )
|
||||
@ -69,13 +69,25 @@ bool wxItemContainer::SetStringSelection(const wxString& s)
|
||||
return true;
|
||||
}
|
||||
|
||||
wxArrayString wxItemContainer::GetStrings() const
|
||||
wxArrayString wxItemContainerImmutable::GetStrings() const
|
||||
{
|
||||
wxArrayString result ;
|
||||
size_t count = GetCount() ;
|
||||
for ( size_t n = 0 ; n < count ; n++ )
|
||||
wxArrayString result;
|
||||
|
||||
const size_t count = GetCount();
|
||||
result.Alloc(count);
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
result.Add(GetString(n));
|
||||
return result ;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// wxItemContainer implementation
|
||||
// ============================================================================
|
||||
|
||||
wxItemContainer::~wxItemContainer()
|
||||
{
|
||||
// this destructor is required for Darwin
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -38,6 +38,18 @@
|
||||
// implementation
|
||||
// ============================================================================
|
||||
|
||||
int wxRadioBoxBase::FindString(const wxString& s) const
|
||||
{
|
||||
int count = GetCount();
|
||||
for ( int n = 0; n < count; n++ )
|
||||
{
|
||||
if ( GetString(n) == s )
|
||||
return n;
|
||||
}
|
||||
|
||||
return wxNOT_FOUND;
|
||||
}
|
||||
|
||||
int wxRadioBoxBase::GetNextItem(int item, wxDirection dir, long style) const
|
||||
{
|
||||
int count = GetCount(),
|
||||
|
Loading…
Reference in New Issue
Block a user