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
|
// wxItemContainer defines an interface which is implemented by all controls
|
||||||
// which have string subitems each of which may be selected.
|
// 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
|
// Examples: wxListBox, wxCheckListBox, wxChoice and wxComboBox (which
|
||||||
// implements an extended interface deriving from this one)
|
// 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:
|
public:
|
||||||
wxItemContainer() { m_clientDataItemsType = wxClientData_None; }
|
wxItemContainer() { m_clientDataItemsType = wxClientData_None; }
|
||||||
@ -62,33 +101,6 @@ public:
|
|||||||
virtual void Clear() = 0;
|
virtual void Clear() = 0;
|
||||||
virtual void Delete(int n) = 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
|
// misc
|
||||||
// ----
|
// ----
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#if wxUSE_RADIOBOX
|
#if wxUSE_RADIOBOX
|
||||||
|
|
||||||
#include "wx/control.h"
|
#include "wx/ctrlsub.h"
|
||||||
|
|
||||||
extern WXDLLEXPORT_DATA(const wxChar*) wxRadioBoxNameStr;
|
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
|
// example, it is a wxStaticBox in wxUniv and wxMSW but not in other ports
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxRadioBoxBase
|
class WXDLLEXPORT wxRadioBoxBase : public wxItemContainerImmutable
|
||||||
{
|
{
|
||||||
public:
|
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
|
// change the individual radio button state
|
||||||
virtual void Enable(int n, bool enable = true) = 0;
|
virtual void Enable(int n, bool enable = true) = 0;
|
||||||
virtual void Show(int n, bool show = 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;
|
int GetNextItem(int item, wxDirection dir, long style) const;
|
||||||
|
|
||||||
|
|
||||||
|
// implement some of wxItemContainerImmutable functions
|
||||||
|
virtual int FindString(const wxString& s) const;
|
||||||
|
|
||||||
// deprecated functions
|
// deprecated functions
|
||||||
// --------------------
|
// --------------------
|
||||||
|
|
||||||
|
@ -36,10 +36,10 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// implementation
|
// wxItemContainerImmutable implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
wxItemContainer::~wxItemContainer()
|
wxItemContainerImmutable::~wxItemContainerImmutable()
|
||||||
{
|
{
|
||||||
// this destructor is required for Darwin
|
// this destructor is required for Darwin
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ wxItemContainer::~wxItemContainer()
|
|||||||
// selection
|
// selection
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
wxString wxItemContainer::GetStringSelection() const
|
wxString wxItemContainerImmutable::GetStringSelection() const
|
||||||
{
|
{
|
||||||
wxString s;
|
wxString s;
|
||||||
int sel = GetSelection();
|
int sel = GetSelection();
|
||||||
@ -58,7 +58,7 @@ wxString wxItemContainer::GetStringSelection() const
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxItemContainer::SetStringSelection(const wxString& s)
|
bool wxItemContainerImmutable::SetStringSelection(const wxString& s)
|
||||||
{
|
{
|
||||||
const int sel = FindString(s);
|
const int sel = FindString(s);
|
||||||
if ( sel == wxNOT_FOUND )
|
if ( sel == wxNOT_FOUND )
|
||||||
@ -69,13 +69,25 @@ bool wxItemContainer::SetStringSelection(const wxString& s)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxArrayString wxItemContainer::GetStrings() const
|
wxArrayString wxItemContainerImmutable::GetStrings() const
|
||||||
{
|
{
|
||||||
wxArrayString result ;
|
wxArrayString result;
|
||||||
size_t count = GetCount() ;
|
|
||||||
for ( size_t n = 0 ; n < count ; n++ )
|
const size_t count = GetCount();
|
||||||
|
result.Alloc(count);
|
||||||
|
for ( size_t n = 0; n < count; n++ )
|
||||||
result.Add(GetString(n));
|
result.Add(GetString(n));
|
||||||
return result ;
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// wxItemContainer implementation
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
wxItemContainer::~wxItemContainer()
|
||||||
|
{
|
||||||
|
// this destructor is required for Darwin
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@ -38,6 +38,18 @@
|
|||||||
// implementation
|
// 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 wxRadioBoxBase::GetNextItem(int item, wxDirection dir, long style) const
|
||||||
{
|
{
|
||||||
int count = GetCount(),
|
int count = GetCount(),
|
||||||
|
Loading…
Reference in New Issue
Block a user