/////////////////////////////////////////////////////////////////////////////// // Name: wx/univ/combobox.h // Purpose: the universal combobox // Author: Vadim Zeitlin // Modified by: // Created: 30.08.00 // RCS-ID: $Id$ // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_UNIV_COMBOBOX_H_ #define _WX_UNIV_COMBOBOX_H_ #include "wx/combo.h" class WXDLLEXPORT wxListBox; // ---------------------------------------------------------------------------- // NB: some actions supported by this control are in wx/generic/combo.h // ---------------------------------------------------------------------------- // choose the next/prev/specified (by numArg) item #define wxACTION_COMBOBOX_SELECT_NEXT _T("next") #define wxACTION_COMBOBOX_SELECT_PREV _T("prev") #define wxACTION_COMBOBOX_SELECT _T("select") // ---------------------------------------------------------------------------- // wxComboBox: a combination of text control and a listbox // ---------------------------------------------------------------------------- class WXDLLEXPORT wxComboBox : public wxComboControl, public wxComboBoxBase { public: // ctors and such wxComboBox() { Init(); } wxComboBox(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, int n = 0, const wxString choices[] = (const wxString *) NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr) { Init(); (void)Create(parent, id, value, pos, size, n, choices, style, validator, name); } wxComboBox(wxWindow *parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, const wxArrayString& choices, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr); bool Create(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, int n = 0, const wxString choices[] = (const wxString *) NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr); bool Create(wxWindow *parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, const wxArrayString& choices, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr); virtual ~wxComboBox(); // the wxUniversal-specific methods // -------------------------------- // implement the combobox interface // wxTextCtrl methods virtual wxString GetValue() const; virtual void SetValue(const wxString& value); virtual void Copy(); virtual void Cut(); virtual void Paste(); virtual void SetInsertionPoint(long pos); virtual void SetInsertionPointEnd(); virtual long GetInsertionPoint() const; virtual wxTextPos GetLastPosition() const; virtual void Replace(long from, long to, const wxString& value); virtual void Remove(long from, long to); virtual void SetSelection(long from, long to); virtual void SetEditable(bool editable); virtual bool IsEditable() const; virtual void Undo(); virtual void Redo(); virtual void SelectAll(); virtual bool CanCopy() const; virtual bool CanCut() const; virtual bool CanPaste() const; virtual bool CanUndo() const; virtual bool CanRedo() const; // wxControlWithItems methods virtual void Clear(); virtual void Delete(unsigned int n); virtual unsigned int GetCount() const; virtual wxString GetString(unsigned int n) const; virtual void SetString(unsigned int n, const wxString& s); virtual int FindString(const wxString& s, bool bCase = false) const; virtual void SetSelection(int n); virtual int GetSelection() const; wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST // we have our own input handler and our own actions // (but wxComboControl already handled Popup/Dismiss) /* virtual bool PerformAction(const wxControlAction& action, long numArg = 0l, const wxString& strArg = wxEmptyString); */ protected: virtual int DoAppend(const wxString& item); virtual int DoInsert(const wxString& item, unsigned int pos); virtual void DoSetItemClientData(unsigned int n, void* clientData); virtual void* DoGetItemClientData(unsigned int n) const; virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData); virtual wxClientData* DoGetItemClientObject(unsigned int n) const; // common part of all ctors void Init(); // get the associated listbox wxListBox *GetLBox() const { return m_lbox; } private: // the popup listbox wxListBox *m_lbox; //DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxComboBox) }; // ---------------------------------------------------------------------------- // wxStdComboBoxInputHandler: allows the user to open/close the combo from kbd // ---------------------------------------------------------------------------- class WXDLLEXPORT wxStdComboBoxInputHandler : public wxStdInputHandler { public: wxStdComboBoxInputHandler(wxInputHandler *inphand); virtual bool HandleKey(wxInputConsumer *consumer, const wxKeyEvent& event, bool pressed); }; #endif // _WX_UNIV_COMBOBOX_H_