1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/gtk1/combobox.h 3 // Purpose: 4 // Author: Robert Roebling 5 // Created: 01/02/97 6 // Copyright: (c) 1998 Robert Roebling 7 // Licence: wxWindows licence 8 ///////////////////////////////////////////////////////////////////////////// 9 10 #ifndef __GTKCOMBOBOXH__ 11 #define __GTKCOMBOBOXH__ 12 13 #include "wx/defs.h" 14 15 #if wxUSE_COMBOBOX 16 17 #include "wx/object.h" 18 19 //----------------------------------------------------------------------------- 20 // classes 21 //----------------------------------------------------------------------------- 22 23 class WXDLLIMPEXP_FWD_CORE wxComboBox; 24 25 //----------------------------------------------------------------------------- 26 // global data 27 //----------------------------------------------------------------------------- 28 29 extern WXDLLIMPEXP_DATA_CORE(const char) wxComboBoxNameStr[]; 30 extern WXDLLIMPEXP_BASE const wxChar* wxEmptyString; 31 32 //----------------------------------------------------------------------------- 33 // wxComboBox 34 //----------------------------------------------------------------------------- 35 36 class WXDLLIMPEXP_CORE wxComboBox : 37 public wxWindowWithItems<wxControl, wxComboBoxBase> 38 { 39 public: wxComboBox()40 inline wxComboBox() {} 41 inline wxComboBox(wxWindow *parent, wxWindowID id, 42 const wxString& value = wxEmptyString, 43 const wxPoint& pos = wxDefaultPosition, 44 const wxSize& size = wxDefaultSize, 45 int n = 0, const wxString choices[] = (const wxString *) NULL, 46 long style = 0, 47 const wxValidator& validator = wxDefaultValidator, 48 const wxString& name = wxASCII_STR(wxComboBoxNameStr)) 49 { 50 Create(parent, id, value, pos, size, n, choices, style, validator, name); 51 } 52 inline wxComboBox(wxWindow *parent, wxWindowID id, 53 const wxString& value, 54 const wxPoint& pos, 55 const wxSize& size, 56 const wxArrayString& choices, 57 long style = 0, 58 const wxValidator& validator = wxDefaultValidator, 59 const wxString& name = wxASCII_STR(wxComboBoxNameStr)) 60 { 61 Create(parent, id, value, pos, size, choices, style, validator, name); 62 } 63 64 virtual ~wxComboBox(); 65 66 bool Create(wxWindow *parent, wxWindowID id, 67 const wxString& value = wxEmptyString, 68 const wxPoint& pos = wxDefaultPosition, 69 const wxSize& size = wxDefaultSize, 70 int n = 0, const wxString choices[] = (const wxString *) NULL, 71 long style = 0, 72 const wxValidator& validator = wxDefaultValidator, 73 const wxString& name = wxASCII_STR(wxComboBoxNameStr)); 74 bool Create(wxWindow *parent, wxWindowID id, 75 const wxString& value, 76 const wxPoint& pos, 77 const wxSize& size, 78 const wxArrayString& choices, 79 long style = 0, 80 const wxValidator& validator = wxDefaultValidator, 81 const wxString& name = wxASCII_STR(wxComboBoxNameStr)); 82 83 void DoClear(); 84 void DoDeleteOneItem(unsigned int n); 85 86 virtual int FindString(const wxString& s, bool bCase = false) const; 87 int GetSelection() const; 88 int GetCurrentSelection() const; 89 virtual wxString GetString(unsigned int n) const; 90 wxString GetStringSelection() const; 91 virtual unsigned int GetCount() const; 92 virtual void SetSelection(int n); 93 virtual void SetString(unsigned int n, const wxString &text); 94 GetValue()95 wxString GetValue() const { return DoGetValue(); } 96 void SetValue(const wxString& value); 97 void WriteText(const wxString& value); 98 99 void Copy(); 100 void Cut(); 101 void Paste(); 102 bool CanCopy() const; 103 bool CanCut() const; 104 bool CanPaste() const; 105 void SetInsertionPoint( long pos ); SetInsertionPointEnd()106 void SetInsertionPointEnd() { SetInsertionPoint( -1 ); } 107 long GetInsertionPoint() const; 108 virtual wxTextPos GetLastPosition() const; Remove(long from,long to)109 void Remove(long from, long to) { Replace(from, to, wxEmptyString); } 110 void Replace( long from, long to, const wxString& value ); 111 void SetSelection( long from, long to ); 112 void GetSelection( long* from, long* to ) const; 113 void SetEditable( bool editable ); 114 void Undo() ; 115 void Redo() ; 116 bool CanUndo() const; 117 bool CanRedo() const; 118 void SelectAll(); 119 bool IsEditable() const ; 120 bool HasSelection() const ; 121 122 // implementation 123 124 virtual void SetFocus(); 125 126 void OnSize( wxSizeEvent &event ); 127 void OnChar( wxKeyEvent &event ); 128 129 // Standard event handling 130 void OnCut(wxCommandEvent& event); 131 void OnCopy(wxCommandEvent& event); 132 void OnPaste(wxCommandEvent& event); 133 void OnUndo(wxCommandEvent& event); 134 void OnRedo(wxCommandEvent& event); 135 void OnDelete(wxCommandEvent& event); 136 void OnSelectAll(wxCommandEvent& event); 137 138 void OnUpdateCut(wxUpdateUIEvent& event); 139 void OnUpdateCopy(wxUpdateUIEvent& event); 140 void OnUpdatePaste(wxUpdateUIEvent& event); 141 void OnUpdateUndo(wxUpdateUIEvent& event); 142 void OnUpdateRedo(wxUpdateUIEvent& event); 143 void OnUpdateDelete(wxUpdateUIEvent& event); 144 void OnUpdateSelectAll(wxUpdateUIEvent& event); 145 146 bool m_ignoreNextUpdate:1; 147 wxList m_clientDataList; 148 wxList m_clientObjectList; 149 int m_prevSelection; 150 151 void DisableEvents(); 152 void EnableEvents(); 153 GtkWidget* GetConnectWidget(); 154 bool IsOwnGtkWindow( GdkWindow *window ); 155 void DoApplyWidgetStyle(GtkRcStyle *style); 156 157 static wxVisualAttributes 158 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); 159 WXGetTextEntry()160 virtual const wxTextEntry* WXGetTextEntry() const { return this; } 161 162 protected: 163 virtual int DoInsertItems(const wxArrayStringsAdapter& items, 164 unsigned int pos, 165 void **clientData, wxClientDataType type); 166 167 virtual void DoSetItemClientData(unsigned int n, void* clientData); 168 virtual void* DoGetItemClientData(unsigned int n) const; 169 170 virtual wxSize DoGetBestSize() const; 171 172 // implement wxTextEntry pure virtual methods 173 virtual wxString DoGetValue() const; GetEditableWindow()174 virtual wxWindow *GetEditableWindow() { return this; } 175 176 // Widgets that use the style->base colour for the BG colour should 177 // override this and return true. UseGTKStyleBase()178 virtual bool UseGTKStyleBase() const { return true; } 179 180 private: 181 wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox); 182 wxDECLARE_EVENT_TABLE(); 183 }; 184 185 #endif 186 187 #endif 188 189 // __GTKCOMBOBOXH__ 190