X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6feb95a79834836e88143b15d9f424ebe79621..49a63afbad7646668df343d29edd88458bc7e0a9:/include/wx/combobox.h diff --git a/include/wx/combobox.h b/include/wx/combobox.h index 6255f13225..a1a8a4386c 100644 --- a/include/wx/combobox.h +++ b/include/wx/combobox.h @@ -5,7 +5,7 @@ // Modified by: // Created: 24.12.00 // RCS-ID: $Id$ -// Copyright: (c) 1996-2000 wxWindows team +// Copyright: (c) 1996-2000 wxWidgets team // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -16,35 +16,50 @@ #if wxUSE_COMBOBOX -WXDLLEXPORT_DATA(extern const wxChar*) wxComboBoxNameStr; +extern WXDLLIMPEXP_DATA_CORE(const char) wxComboBoxNameStr[]; // ---------------------------------------------------------------------------- // wxComboBoxBase: this interface defines the methods wxComboBox must implement // ---------------------------------------------------------------------------- #include "wx/ctrlsub.h" +#include "wx/textentry.h" -class WXDLLEXPORT wxComboBoxBase : public wxItemContainer +class WXDLLIMPEXP_CORE wxComboBoxBase : public wxItemContainer, + public wxTextEntry { public: - // wxTextCtrl-like methods wxComboBox must implement - virtual wxString GetValue() const = 0; - virtual void SetValue(const wxString& value) = 0; + // override these methods to disambiguate between two base classes versions + virtual void Clear() + { + wxTextEntry::Clear(); + wxItemContainer::Clear(); + } - virtual void Copy() = 0; - virtual void Cut() = 0; - virtual void Paste() = 0; - virtual void SetInsertionPoint(long pos) = 0; - virtual long GetInsertionPoint() const = 0; - virtual long GetLastPosition() const = 0; - virtual void Replace(long from, long to, const wxString& value) = 0; - virtual void SetSelection(long from, long to) = 0; - virtual void SetEditable(bool editable) = 0; + // IsEmpty() is ambiguous because we inherit it from both wxItemContainer + // and wxTextEntry, and even if defined it here to help the compiler with + // choosing one of them, it would still be confusing for the human users of + // this class. So instead define the clearly named methods below and leave + // IsEmpty() ambiguous to trigger a compilation error if it's used. + bool IsListEmpty() const { return wxItemContainer::IsEmpty(); } + bool IsTextEmpty() const { return wxTextEntry::IsEmpty(); } - virtual void SetInsertionPointEnd() - { SetInsertionPoint(GetLastPosition()); } - virtual void Remove(long from, long to) - { Replace(from, to, wxEmptyString); } + // also bring in GetSelection() versions of both base classes in scope + // + // NB: GetSelection(from, to) could be already implemented in wxTextEntry + // but still make it pure virtual because for some platforms it's not + // implemented there and also because the derived class has to override + // it anyhow to avoid ambiguity with the other GetSelection() + virtual int GetSelection() const = 0; + virtual void GetSelection(long *from, long *to) const = 0; + + virtual void Popup() { wxFAIL_MSG( wxT("Not implemented") ); } + virtual void Dismiss() { wxFAIL_MSG( wxT("Not implemented") ); } + + // may return value different from GetSelection() when the combobox + // dropdown is shown and the user selected, but not yet accepted, a value + // different from the old one in it + virtual int GetCurrentSelection() const { return GetSelection(); } }; // ---------------------------------------------------------------------------- @@ -57,19 +72,18 @@ public: #include "wx/msw/combobox.h" #elif defined(__WXMOTIF__) #include "wx/motif/combobox.h" -#elif defined(__WXGTK__) +#elif defined(__WXGTK20__) #include "wx/gtk/combobox.h" -#elif defined(__WXQT__) - #include "wx/qt/combobox.h" +#elif defined(__WXGTK__) + #include "wx/gtk1/combobox.h" #elif defined(__WXMAC__) - #include "wx/mac/combobox.h" + #include "wx/osx/combobox.h" +#elif defined(__WXCOCOA__) + #include "wx/cocoa/combobox.h" #elif defined(__WXPM__) #include "wx/os2/combobox.h" -#elif defined(__WXSTUBS__) - #include "wx/stubs/combobox.h" #endif #endif // wxUSE_COMBOBOX -#endif - // _WX_COMBOBOX_H_BASE_ +#endif // _WX_COMBOBOX_H_BASE_