1/////////////////////////////////////////////////////////////////////////////// 2// Name: wx/univ/combobox.h 3// Purpose: the universal combobox 4// Author: Vadim Zeitlin 5// Modified by: 6// Created: 30.08.00 7// RCS-ID: $Id: combobox.h 61872 2009-09-09 22:37:05Z VZ $ 8// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) 9// Licence: wxWindows licence 10/////////////////////////////////////////////////////////////////////////////// 11 12 13#ifndef _WX_UNIV_COMBOBOX_H_ 14#define _WX_UNIV_COMBOBOX_H_ 15 16#include "wx/combo.h" 17 18class WXDLLEXPORT wxListBox; 19 20// ---------------------------------------------------------------------------- 21// NB: some actions supported by this control are in wx/generic/combo.h 22// ---------------------------------------------------------------------------- 23 24// choose the next/prev/specified (by numArg) item 25#define wxACTION_COMBOBOX_SELECT_NEXT wxT("next") 26#define wxACTION_COMBOBOX_SELECT_PREV wxT("prev") 27#define wxACTION_COMBOBOX_SELECT wxT("select") 28 29 30// ---------------------------------------------------------------------------- 31// wxComboBox: a combination of text control and a listbox 32// ---------------------------------------------------------------------------- 33 34class WXDLLEXPORT wxComboBox : public wxComboCtrl, public wxComboBoxBase 35{ 36public: 37 // ctors and such 38 wxComboBox() { Init(); } 39 40 wxComboBox(wxWindow *parent, 41 wxWindowID id, 42 const wxString& value = wxEmptyString, 43 const wxPoint& pos = wxDefaultPosition, 44 const wxSize& size = wxDefaultSize, 45 int n = 0, 46 const wxString choices[] = (const wxString *) NULL, 47 long style = 0, 48 const wxValidator& validator = wxDefaultValidator, 49 const wxString& name = wxComboBoxNameStr) 50 { 51 Init(); 52 53 (void)Create(parent, id, value, pos, size, n, choices, 54 style, validator, name); 55 } 56 wxComboBox(wxWindow *parent, 57 wxWindowID id, 58 const wxString& value, 59 const wxPoint& pos, 60 const wxSize& size, 61 const wxArrayString& choices, 62 long style = 0, 63 const wxValidator& validator = wxDefaultValidator, 64 const wxString& name = wxComboBoxNameStr); 65 66 bool Create(wxWindow *parent, 67 wxWindowID id, 68 const wxString& value = wxEmptyString, 69 const wxPoint& pos = wxDefaultPosition, 70 const wxSize& size = wxDefaultSize, 71 int n = 0, 72 const wxString choices[] = (const wxString *) NULL, 73 long style = 0, 74 const wxValidator& validator = wxDefaultValidator, 75 const wxString& name = wxComboBoxNameStr); 76 bool Create(wxWindow *parent, 77 wxWindowID id, 78 const wxString& value, 79 const wxPoint& pos, 80 const wxSize& size, 81 const wxArrayString& choices, 82 long style = 0, 83 const wxValidator& validator = wxDefaultValidator, 84 const wxString& name = wxComboBoxNameStr); 85 86 virtual ~wxComboBox(); 87 88 // the wxUniversal-specific methods 89 // -------------------------------- 90 91 // implement the combobox interface 92 93 // wxTextCtrl methods 94 virtual wxString GetValue() const; 95 virtual void SetValue(const wxString& value); 96 virtual void Copy(); 97 virtual void Cut(); 98 virtual void Paste(); 99 virtual void SetInsertionPoint(long pos); 100 virtual void SetInsertionPointEnd(); 101 virtual long GetInsertionPoint() const; 102 virtual wxTextPos GetLastPosition() const; 103 virtual void Replace(long from, long to, const wxString& value); 104 virtual void Remove(long from, long to); 105 virtual void SetSelection(long from, long to); 106 virtual void SetEditable(bool editable); 107 virtual bool IsEditable() const; 108 109 virtual void Undo(); 110 virtual void Redo(); 111 virtual void SelectAll(); 112 113 virtual bool CanCopy() const; 114 virtual bool CanCut() const; 115 virtual bool CanPaste() const; 116 virtual bool CanUndo() const; 117 virtual bool CanRedo() const; 118 119 // wxControlWithItems methods 120 virtual void Clear(); 121 virtual void Delete(unsigned int n); 122 virtual unsigned int GetCount() const; 123 virtual wxString GetString(unsigned int n) const; 124 virtual void SetString(unsigned int n, const wxString& s); 125 virtual int FindString(const wxString& s, bool bCase = false) const; 126 virtual void SetSelection(int n); 127 virtual int GetSelection() const; 128 129 wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST 130 131 // we have our own input handler and our own actions 132 // (but wxComboCtrl already handled Popup/Dismiss) 133 /* 134 virtual bool PerformAction(const wxControlAction& action, 135 long numArg = 0l, 136 const wxString& strArg = wxEmptyString); 137 */ 138 139 static wxInputHandler *GetStdInputHandler(wxInputHandler *handlerDef); 140 virtual wxInputHandler *DoGetStdInputHandler(wxInputHandler *handlerDef) 141 { 142 return GetStdInputHandler(handlerDef); 143 } 144 145protected: 146 virtual int DoAppend(const wxString& item); 147 virtual int DoInsert(const wxString& item, unsigned int pos); 148 virtual void DoSetItemClientData(unsigned int n, void* clientData); 149 virtual void* DoGetItemClientData(unsigned int n) const; 150 virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData); 151 virtual wxClientData* DoGetItemClientObject(unsigned int n) const; 152 153 // common part of all ctors 154 void Init(); 155 156 // get the associated listbox 157 wxListBox *GetLBox() const { return m_lbox; } 158 159private: 160 // the popup listbox 161 wxListBox *m_lbox; 162 163 //DECLARE_EVENT_TABLE() 164 DECLARE_DYNAMIC_CLASS(wxComboBox) 165}; 166 167#endif // _WX_UNIV_COMBOBOX_H_ 168