1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/motif/combobox.h
3// Purpose:     wxComboBox class
4// Author:      Julian Smart
5// Modified by:
6// Created:     17/09/98
7// RCS-ID:      $Id: combobox.h 41020 2006-09-05 20:47:48Z VZ $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_COMBOBOX_H_
13#define _WX_COMBOBOX_H_
14
15#include "wx/choice.h"
16
17// Combobox item
18class WXDLLEXPORT wxComboBox: public wxChoice
19{
20    DECLARE_DYNAMIC_CLASS(wxComboBox)
21
22public:
23    wxComboBox() { m_inSetSelection = false; }
24    virtual ~wxComboBox();
25
26    inline wxComboBox(wxWindow *parent, wxWindowID id,
27        const wxString& value = wxEmptyString,
28        const wxPoint& pos = wxDefaultPosition,
29        const wxSize& size = wxDefaultSize,
30        int n = 0, const wxString choices[] = NULL,
31        long style = 0,
32        const wxValidator& validator = wxDefaultValidator,
33        const wxString& name = wxComboBoxNameStr)
34    {
35        m_inSetSelection = false;
36        Create(parent, id, value, pos, size, n, choices,
37               style, validator, name);
38    }
39
40    inline wxComboBox(wxWindow *parent, wxWindowID id,
41        const wxString& value,
42        const wxPoint& pos,
43        const wxSize& size,
44        const wxArrayString& choices,
45        long style = 0,
46        const wxValidator& validator = wxDefaultValidator,
47        const wxString& name = wxComboBoxNameStr)
48    {
49        m_inSetSelection = false;
50        Create(parent, id, value, pos, size, choices,
51               style, validator, name);
52    }
53
54    bool Create(wxWindow *parent, wxWindowID id,
55        const wxString& value = wxEmptyString,
56        const wxPoint& pos = wxDefaultPosition,
57        const wxSize& size = wxDefaultSize,
58        int n = 0, const wxString choices[] = NULL,
59        long style = 0,
60        const wxValidator& validator = wxDefaultValidator,
61        const wxString& name = wxComboBoxNameStr);
62
63    bool Create(wxWindow *parent, wxWindowID id,
64        const wxString& value,
65        const wxPoint& pos,
66        const wxSize& size,
67        const wxArrayString& choices,
68        long style = 0,
69        const wxValidator& validator = wxDefaultValidator,
70        const wxString& name = wxComboBoxNameStr);
71
72    // implementation of wxControlWithItems
73    virtual int DoAppend(const wxString& item);
74    virtual int DoInsert(const wxString& item, unsigned int pos);
75    virtual void Delete(unsigned int n);
76    virtual void Clear();
77    virtual int GetSelection() const ;
78    virtual void SetSelection(int n);
79    virtual int FindString(const wxString& s, bool bCase = false) const;
80    virtual wxString GetString(unsigned int n) const ;
81    virtual void SetString(unsigned int n, const wxString& s);
82
83    // Text field functions
84    virtual wxString GetValue() const ;
85    virtual void SetValue(const wxString& value);
86
87    // Clipboard operations
88    virtual void Copy();
89    virtual void Cut();
90    virtual void Paste();
91    virtual void SetInsertionPoint(long pos);
92    virtual void SetInsertionPointEnd();
93    virtual long GetInsertionPoint() const ;
94    virtual wxTextPos GetLastPosition() const ;
95    virtual void Replace(long from, long to, const wxString& value);
96    virtual void Remove(long from, long to);
97    virtual void SetSelection(long from, long to);
98    virtual void SetEditable(bool editable);
99
100    // Implementation
101    virtual void ChangeFont(bool keepOriginalSize = true);
102    virtual void ChangeBackgroundColour();
103    virtual void ChangeForegroundColour();
104    WXWidget GetTopWidget() const { return m_mainWidget; }
105    WXWidget GetMainWidget() const { return m_mainWidget; }
106
107    virtual wxSize DoGetBestSize() const;
108protected:
109    virtual void DoSetSize(int x, int y,
110        int width, int height,
111        int sizeFlags = wxSIZE_AUTO);
112private:
113    // only implemented for native combo box
114    void AdjustDropDownListSize();
115
116    // implementation detail, should really be private
117public:
118    bool m_inSetSelection;
119};
120
121#endif
122// _WX_COMBOBOX_H_
123