1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        wx/gtk1/combobox.h 
   4 // Author:      Robert Roebling 
   7 // Copyright:   (c) 1998 Robert Roebling 
   8 // Licence:     wxWindows licence 
   9 ///////////////////////////////////////////////////////////////////////////// 
  11 #ifndef __GTKCOMBOBOXH__ 
  12 #define __GTKCOMBOBOXH__ 
  18 #include "wx/object.h" 
  20 //----------------------------------------------------------------------------- 
  22 //----------------------------------------------------------------------------- 
  24 class WXDLLIMPEXP_CORE wxComboBox
; 
  26 //----------------------------------------------------------------------------- 
  28 //----------------------------------------------------------------------------- 
  30 extern WXDLLEXPORT_DATA(const wxChar
) wxComboBoxNameStr
[]; 
  31 extern WXDLLIMPEXP_BASE 
const wxChar
* wxEmptyString
; 
  33 //----------------------------------------------------------------------------- 
  35 //----------------------------------------------------------------------------- 
  37 class WXDLLIMPEXP_CORE wxComboBox 
: public wxControl
, public wxComboBoxBase
 
  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
, 
  47            const wxValidator
& validator 
= wxDefaultValidator
, 
  48            const wxString
& name 
= wxComboBoxNameStr
) 
  50         Create(parent
, id
, value
, pos
, size
, n
, choices
, style
, validator
, name
); 
  52     inline wxComboBox(wxWindow 
*parent
, wxWindowID id
, 
  53            const wxString
& value
, 
  56            const wxArrayString
& choices
, 
  58            const wxValidator
& validator 
= wxDefaultValidator
, 
  59            const wxString
& name 
= wxComboBoxNameStr
) 
  61         Create(parent
, id
, value
, pos
, size
, choices
, style
, validator
, name
); 
  64     virtual ~wxComboBox(); 
  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
, 
  72            const wxValidator
& validator 
= wxDefaultValidator
, 
  73            const wxString
& name 
= wxComboBoxNameStr
); 
  74     bool Create(wxWindow 
*parent
, wxWindowID id
, 
  75            const wxString
& value
, 
  78            const wxArrayString
& choices
, 
  80            const wxValidator
& validator 
= wxDefaultValidator
, 
  81            const wxString
& name 
= wxComboBoxNameStr
); 
  84     void Delete(unsigned int n
); 
  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
); 
  95     wxString 
GetValue() const; 
  96     void SetValue(const wxString
& value
); 
 101     bool CanCopy() 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 
); 
 115     bool CanUndo() const; 
 116     bool CanRedo() const; 
 118     bool IsEditable() const ; 
 119     bool HasSelection() const ; 
 123     virtual void SetFocus(); 
 125     void OnSize( wxSizeEvent 
&event 
); 
 126     void OnChar( wxKeyEvent 
&event 
); 
 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
); 
 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
); 
 145     bool     m_ignoreNextUpdate
:1; 
 146     wxList   m_clientDataList
; 
 147     wxList   m_clientObjectList
; 
 150     void DisableEvents(); 
 152     GtkWidget
* GetConnectWidget(); 
 153     bool IsOwnGtkWindow( GdkWindow 
*window 
); 
 154     void DoApplyWidgetStyle(GtkRcStyle 
*style
); 
 156     wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
 
 158     static wxVisualAttributes
 
 159     GetClassDefaultAttributes(wxWindowVariant variant 
= wxWINDOW_VARIANT_NORMAL
); 
 162     virtual int DoAppend(const wxString
& item
); 
 163     virtual int DoInsert(const wxString
& item
, unsigned int pos
); 
 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; 
 170     virtual wxSize 
DoGetBestSize() const; 
 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; } 
 177     DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox
) 
 178     DECLARE_EVENT_TABLE()