1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/gtk1/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 __GTKCOMBOBOXH__ 12#define __GTKCOMBOBOXH__ 13 14#include "wx/defs.h" 15 16#if wxUSE_COMBOBOX 17 18#include "wx/object.h" 19 20//----------------------------------------------------------------------------- 21// classes 22//----------------------------------------------------------------------------- 23 24class WXDLLIMPEXP_CORE wxComboBox; 25 26//----------------------------------------------------------------------------- 27// global data 28//----------------------------------------------------------------------------- 29 30extern WXDLLEXPORT_DATA(const wxChar) wxComboBoxNameStr[]; 31extern WXDLLIMPEXP_BASE const wxChar* wxEmptyString; 32 33//----------------------------------------------------------------------------- 34// wxComboBox 35//----------------------------------------------------------------------------- 36 37class WXDLLIMPEXP_CORE wxComboBox : public wxControl, public wxComboBoxBase 38{ 39public: 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 = 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 = 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 = 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 = wxComboBoxNameStr); 82 83 void Clear(); 84 void Delete(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 95 wxString GetValue() const; 96 void SetValue(const wxString& value); 97 98 void Copy(); 99 void Cut(); 100 void Paste(); 101 bool CanCopy() const; 102 bool CanCut() const; 103 bool CanPaste() const; 104 void SetInsertionPoint( long pos ); 105 void SetInsertionPointEnd() { SetInsertionPoint( -1 ); } 106 long GetInsertionPoint() const; 107 virtual wxTextPos GetLastPosition() const; 108 void Remove(long from, long to) { Replace(from, to, wxEmptyString); } 109 void Replace( long from, long to, const wxString& value ); 110 void SetSelection( long from, long to ); 111 void GetSelection( long* from, long* to ) const; 112 void SetEditable( bool editable ); 113 void Undo() ; 114 void Redo() ; 115 bool CanUndo() const; 116 bool CanRedo() const; 117 void SelectAll(); 118 bool IsEditable() const ; 119 bool HasSelection() const ; 120 121 // implementation 122 123 virtual void SetFocus(); 124 125 void OnSize( wxSizeEvent &event ); 126 void OnChar( wxKeyEvent &event ); 127 128 // Standard event handling 129 void OnCut(wxCommandEvent& event); 130 void OnCopy(wxCommandEvent& event); 131 void OnPaste(wxCommandEvent& event); 132 void OnUndo(wxCommandEvent& event); 133 void OnRedo(wxCommandEvent& event); 134 void OnDelete(wxCommandEvent& event); 135 void OnSelectAll(wxCommandEvent& event); 136 137 void OnUpdateCut(wxUpdateUIEvent& event); 138 void OnUpdateCopy(wxUpdateUIEvent& event); 139 void OnUpdatePaste(wxUpdateUIEvent& event); 140 void OnUpdateUndo(wxUpdateUIEvent& event); 141 void OnUpdateRedo(wxUpdateUIEvent& event); 142 void OnUpdateDelete(wxUpdateUIEvent& event); 143 void OnUpdateSelectAll(wxUpdateUIEvent& event); 144 145 bool m_ignoreNextUpdate:1; 146 wxList m_clientDataList; 147 wxList m_clientObjectList; 148 int m_prevSelection; 149 150 void DisableEvents(); 151 void EnableEvents(); 152 GtkWidget* GetConnectWidget(); 153 bool IsOwnGtkWindow( GdkWindow *window ); 154 void DoApplyWidgetStyle(GtkRcStyle *style); 155 156 wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST 157 158 static wxVisualAttributes 159 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); 160 161protected: 162 virtual int DoAppend(const wxString& item); 163 virtual int DoInsert(const wxString& item, unsigned int pos); 164 165 virtual void DoSetItemClientData(unsigned int n, void* clientData); 166 virtual void* DoGetItemClientData(unsigned int n) const; 167 virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData); 168 virtual wxClientData* DoGetItemClientObject(unsigned int n) const; 169 170 virtual wxSize DoGetBestSize() const; 171 172 // Widgets that use the style->base colour for the BG colour should 173 // override this and return true. 174 virtual bool UseGTKStyleBase() const { return true; } 175 176private: 177 DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox) 178 DECLARE_EVENT_TABLE() 179}; 180 181#endif 182 183#endif 184 185 // __GTKCOMBOBOXH__ 186