1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/generic/combo.h
3 // Purpose:     Generic wxComboCtrl
4 // Author:      Jaakko Salli
5 // Modified by:
6 // Created:     Apr-30-2006
7 // RCS-ID:      $Id: combo.h 61872 2009-09-09 22:37:05Z VZ $
8 // Copyright:   (c) Jaakko Salli
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_GENERIC_COMBOCTRL_H_
13 #define _WX_GENERIC_COMBOCTRL_H_
14 
15 #if wxUSE_COMBOCTRL
16 
17 // Only define generic if native doesn't have all the features
18 #if !defined(wxCOMBOCONTROL_FULLY_FEATURED)
19 
20 // ----------------------------------------------------------------------------
21 // Generic wxComboCtrl
22 // ----------------------------------------------------------------------------
23 
24 #if defined(__WXUNIVERSAL__)
25 
26 // all actions of single line text controls are supported
27 
28 // popup/dismiss the choice window
29 #define wxACTION_COMBOBOX_POPUP     wxT("popup")
30 #define wxACTION_COMBOBOX_DISMISS   wxT("dismiss")
31 
32 #endif
33 
34 extern WXDLLIMPEXP_DATA_CORE(const wxChar) wxComboBoxNameStr[];
35 
36 class WXDLLEXPORT wxGenericComboCtrl : public wxComboCtrlBase
37 {
38 public:
39     // ctors and such
wxGenericComboCtrl()40     wxGenericComboCtrl() : wxComboCtrlBase() { Init(); }
41 
42     wxGenericComboCtrl(wxWindow *parent,
43                        wxWindowID id = wxID_ANY,
44                        const wxString& value = wxEmptyString,
45                        const wxPoint& pos = wxDefaultPosition,
46                        const wxSize& size = wxDefaultSize,
47                        long style = 0,
48                        const wxValidator& validator = wxDefaultValidator,
49                        const wxString& name = wxComboBoxNameStr)
wxComboCtrlBase()50         : wxComboCtrlBase()
51     {
52         Init();
53 
54         (void)Create(parent, id, value, pos, size, style, validator, name);
55     }
56 
57     bool Create(wxWindow *parent,
58                 wxWindowID id = wxID_ANY,
59                 const wxString& value = wxEmptyString,
60                 const wxPoint& pos = wxDefaultPosition,
61                 const wxSize& size = wxDefaultSize,
62                 long style = 0,
63                 const wxValidator& validator = wxDefaultValidator,
64                 const wxString& name = wxComboBoxNameStr);
65 
66     virtual ~wxGenericComboCtrl();
67 
68     void SetCustomPaintWidth( int width );
69 
70     virtual bool IsKeyPopupToggle(const wxKeyEvent& event) const;
71 
GetFeatures()72     static int GetFeatures() { return wxComboCtrlFeatures::All; }
73 
74 #if defined(__WXUNIVERSAL__)
75     // we have our own input handler and our own actions
76     virtual bool PerformAction(const wxControlAction& action,
77                                long numArg = 0l,
78                                const wxString& strArg = wxEmptyString);
79 #endif
80 
81 protected:
82 
83     // Mandatory virtuals
84     virtual void OnResize();
85 
86     // Event handlers
87     void OnPaintEvent( wxPaintEvent& event );
88     void OnMouseEvent( wxMouseEvent& event );
89 
90 private:
91     void Init();
92 
93     DECLARE_EVENT_TABLE()
94 
95     DECLARE_DYNAMIC_CLASS(wxGenericComboCtrl)
96 };
97 
98 
99 #ifndef _WX_COMBOCONTROL_H_
100 
101 // If native wxComboCtrl was not defined, then prepare a simple
102 // front-end so that wxRTTI works as expected.
103 
104 class WXDLLEXPORT wxComboCtrl : public wxGenericComboCtrl
105 {
106 public:
wxComboCtrl()107     wxComboCtrl() : wxGenericComboCtrl() {}
108 
109     wxComboCtrl(wxWindow *parent,
110                 wxWindowID id = wxID_ANY,
111                 const wxString& value = wxEmptyString,
112                 const wxPoint& pos = wxDefaultPosition,
113                 const wxSize& size = wxDefaultSize,
114                 long style = 0,
115                 const wxValidator& validator = wxDefaultValidator,
116                 const wxString& name = wxComboBoxNameStr)
wxGenericComboCtrl()117         : wxGenericComboCtrl()
118     {
119         (void)Create(parent, id, value, pos, size, style, validator, name);
120     }
121 
~wxComboCtrl()122     virtual ~wxComboCtrl() {}
123 
124 protected:
125 
126 private:
127     DECLARE_DYNAMIC_CLASS(wxComboCtrl)
128 };
129 
130 #endif // _WX_COMBOCONTROL_H_
131 
132 #else
133 
134 #define wxGenericComboCtrl   wxComboCtrl
135 
136 #endif // !defined(wxCOMBOCONTROL_FULLY_FEATURED)
137 
138 #endif // wxUSE_COMBOCTRL
139 #endif
140     // _WX_GENERIC_COMBOCTRL_H_
141