1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/gtk/combobox.h 3// Purpose: 4// Author: Robert Roebling 5// Created: 01/02/97 6// Id: $Id: combobox.h 41020 2006-09-05 20:47:48Z VZ $ 7// Copyright: (c) 1998 Robert Roebling 8// Licence: wxWindows licence 9///////////////////////////////////////////////////////////////////////////// 10 11#ifndef _WX_GTK_COMBOBOX_H_ 12#define _WX_GTK_COMBOBOX_H_ 13 14//----------------------------------------------------------------------------- 15// wxComboBox 16//----------------------------------------------------------------------------- 17 18class WXDLLIMPEXP_CORE wxComboBox : public wxControl, public wxComboBoxBase 19{ 20public: 21 inline wxComboBox() {} 22 inline wxComboBox(wxWindow *parent, wxWindowID id, 23 const wxString& value = wxEmptyString, 24 const wxPoint& pos = wxDefaultPosition, 25 const wxSize& size = wxDefaultSize, 26 int n = 0, const wxString choices[] = (const wxString *) NULL, 27 long style = 0, 28 const wxValidator& validator = wxDefaultValidator, 29 const wxString& name = wxComboBoxNameStr) 30 { 31 Create(parent, id, value, pos, size, n, choices, style, validator, name); 32 } 33 inline wxComboBox(wxWindow *parent, wxWindowID id, 34 const wxString& value, 35 const wxPoint& pos, 36 const wxSize& size, 37 const wxArrayString& choices, 38 long style = 0, 39 const wxValidator& validator = wxDefaultValidator, 40 const wxString& name = wxComboBoxNameStr) 41 { 42 Create(parent, id, value, pos, size, choices, style, validator, name); 43 } 44 45 virtual ~wxComboBox(); 46 47 bool Create(wxWindow *parent, wxWindowID id, 48 const wxString& value = wxEmptyString, 49 const wxPoint& pos = wxDefaultPosition, 50 const wxSize& size = wxDefaultSize, 51 int n = 0, const wxString choices[] = (const wxString *) NULL, 52 long style = 0, 53 const wxValidator& validator = wxDefaultValidator, 54 const wxString& name = wxComboBoxNameStr); 55 bool Create(wxWindow *parent, wxWindowID id, 56 const wxString& value, 57 const wxPoint& pos, 58 const wxSize& size, 59 const wxArrayString& choices, 60 long style = 0, 61 const wxValidator& validator = wxDefaultValidator, 62 const wxString& name = wxComboBoxNameStr); 63 64 // From wxItemContainerImmutable: 65 virtual unsigned int GetCount() const; 66 virtual wxString GetString(unsigned int n) const; 67 virtual void SetString(unsigned int n, const wxString &text); 68 virtual int FindString(const wxString& s, bool bCase = false) const; 69 virtual void SetSelection(int n); 70 virtual int GetSelection() const; 71 wxString GetStringSelection() const; // not a virtual in parent class 72 73 // From wxItemContainer: 74 virtual void Clear(); 75 virtual void Delete(unsigned int n); 76 77 // From wxBomboBoxBase: 78 virtual wxString GetValue() const; 79 virtual void SetValue(const wxString& value); 80 virtual void Copy(); 81 virtual void Cut(); 82 virtual void Paste(); 83 virtual void SetInsertionPoint( long pos ); 84 virtual long GetInsertionPoint() const; 85 virtual wxTextPos GetLastPosition() const; 86 virtual void Replace( long from, long to, const wxString& value ); 87 virtual void SetSelection( long from, long to ); 88 virtual void SetEditable( bool editable ); 89 virtual void SetInsertionPointEnd() { SetInsertionPoint( -1 ); } 90 virtual void Remove(long from, long to) { Replace(from, to, wxEmptyString); } 91 virtual bool IsEditable() const; 92 virtual void Undo(); 93 virtual void Redo(); 94 virtual void SelectAll(); 95 virtual bool CanCopy() const; 96 virtual bool CanCut() const; 97 virtual bool CanPaste() const; 98 virtual bool CanUndo() const; 99 virtual bool CanRedo() const; 100 101 // implementation 102 bool HasSelection() const; 103 void GetSelection( long* from, long* to ) const; 104 int GetCurrentSelection() const; 105 106 virtual void SetFocus(); 107 108 void OnSize( wxSizeEvent &event ); 109 void OnChar( wxKeyEvent &event ); 110 111 // Standard event handling 112 void OnCut(wxCommandEvent& event); 113 void OnCopy(wxCommandEvent& event); 114 void OnPaste(wxCommandEvent& event); 115 void OnUndo(wxCommandEvent& event); 116 void OnRedo(wxCommandEvent& event); 117 void OnDelete(wxCommandEvent& event); 118 void OnSelectAll(wxCommandEvent& event); 119 120 void OnUpdateCut(wxUpdateUIEvent& event); 121 void OnUpdateCopy(wxUpdateUIEvent& event); 122 void OnUpdatePaste(wxUpdateUIEvent& event); 123 void OnUpdateUndo(wxUpdateUIEvent& event); 124 void OnUpdateRedo(wxUpdateUIEvent& event); 125 void OnUpdateDelete(wxUpdateUIEvent& event); 126 void OnUpdateSelectAll(wxUpdateUIEvent& event); 127 128 bool m_ignoreNextUpdate:1; 129 wxList m_clientDataList; 130 wxList m_clientObjectList; 131 int m_prevSelection; 132 133 void DisableEvents(); 134 void EnableEvents(); 135 GtkWidget* GetConnectWidget(); 136 137 wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST 138 139 static wxVisualAttributes 140 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); 141 142protected: 143 // From wxWindowGTK: 144 virtual void DoApplyWidgetStyle(GtkRcStyle *style); 145 virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const; 146 147 // From wxItemContainer: 148 virtual int DoAppend(const wxString& item); 149 virtual int DoInsert(const wxString& item, unsigned int pos); 150 151 virtual void DoSetItemClientData(unsigned int n, void* clientData); 152 virtual void* DoGetItemClientData(unsigned int n) const; 153 virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData); 154 virtual wxClientData* DoGetItemClientObject(unsigned int n) const; 155 156 // From wxControl: 157 virtual wxSize DoGetBestSize() const; 158 159 // Widgets that use the style->base colour for the BG colour should 160 // override this and return true. 161 virtual bool UseGTKStyleBase() const { return true; } 162 163private: 164 DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox) 165 DECLARE_EVENT_TABLE() 166}; 167 168#endif // _WX_GTK_COMBOBOX_H_ 169