]> git.saurik.com Git - wxWidgets.git/blob - include/wx/generic/srchctlg.h
use LLONG_MIN instead of -1 (which is a valid time value corresponding to 1ms before...
[wxWidgets.git] / include / wx / generic / srchctlg.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/generic/srchctlg.h
3 // Purpose: generic wxSearchCtrl class
4 // Author: Vince Harron
5 // Created: 2006-02-19
6 // RCS-ID: $Id$
7 // Copyright: Vince Harron
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10
11 #ifndef _WX_GENERIC_SEARCHCTRL_H_
12 #define _WX_GENERIC_SEARCHCTRL_H_
13
14 #if wxUSE_SEARCHCTRL
15
16 #include "wx/bitmap.h"
17
18 class WXDLLEXPORT wxSearchButton;
19 class WXDLLEXPORT wxSearchTextCtrl;
20
21 // ----------------------------------------------------------------------------
22 // wxSearchCtrl is a combination of wxTextCtrl and wxSearchButton
23 // ----------------------------------------------------------------------------
24
25 class WXDLLEXPORT wxSearchCtrl : public wxSearchCtrlBase
26 {
27 public:
28 // creation
29 // --------
30
31 wxSearchCtrl();
32 wxSearchCtrl(wxWindow *parent, wxWindowID id,
33 const wxString& value = wxEmptyString,
34 const wxPoint& pos = wxDefaultPosition,
35 const wxSize& size = wxDefaultSize,
36 long style = 0,
37 const wxValidator& validator = wxDefaultValidator,
38 const wxString& name = wxSearchCtrlNameStr);
39
40 virtual ~wxSearchCtrl();
41
42 bool Create(wxWindow *parent, wxWindowID id,
43 const wxString& value = wxEmptyString,
44 const wxPoint& pos = wxDefaultPosition,
45 const wxSize& size = wxDefaultSize,
46 long style = 0,
47 const wxValidator& validator = wxDefaultValidator,
48 const wxString& name = wxSearchCtrlNameStr);
49
50 // get/set search button menu
51 // --------------------------
52 virtual void SetMenu( wxMenu* menu );
53 virtual wxMenu* GetMenu();
54
55 // get/set search options
56 // ----------------------
57 virtual void ShowSearchButton( bool show );
58 virtual bool IsSearchButtonVisible() const;
59
60 virtual void ShowCancelButton( bool show );
61 virtual bool IsCancelButtonVisible() const;
62
63 #if wxABI_VERSION >= 20802
64 // TODO: In 2.9 these should probably be virtual, and declared in the base class...
65 void SetDescriptiveText(const wxString& text);
66 wxString GetDescriptiveText() const;
67 #endif
68
69 // accessors
70 // ---------
71
72 virtual wxString GetValue() const;
73 virtual void SetValue(const wxString& value);
74
75 virtual wxString GetRange(long from, long to) const;
76
77 virtual int GetLineLength(long lineNo) const;
78 virtual wxString GetLineText(long lineNo) const;
79 virtual int GetNumberOfLines() const;
80
81 virtual bool IsModified() const;
82 virtual bool IsEditable() const;
83
84 // more readable flag testing methods
85 virtual bool IsSingleLine() const;
86 virtual bool IsMultiLine() const;
87
88 // If the return values from and to are the same, there is no selection.
89 virtual void GetSelection(long* from, long* to) const;
90
91 virtual wxString GetStringSelection() const;
92
93 // operations
94 // ----------
95
96 // editing
97 virtual void Clear();
98 virtual void Replace(long from, long to, const wxString& value);
99 virtual void Remove(long from, long to);
100
101 // load/save the controls contents from/to the file
102 virtual bool LoadFile(const wxString& file);
103 virtual bool SaveFile(const wxString& file = wxEmptyString);
104
105 // sets/clears the dirty flag
106 virtual void MarkDirty();
107 virtual void DiscardEdits();
108
109 // set the max number of characters which may be entered in a single line
110 // text control
111 virtual void SetMaxLength(unsigned long WXUNUSED(len));
112
113 // writing text inserts it at the current position, appending always
114 // inserts it at the end
115 virtual void WriteText(const wxString& text);
116 virtual void AppendText(const wxString& text);
117
118 // insert the character which would have resulted from this key event,
119 // return true if anything has been inserted
120 virtual bool EmulateKeyPress(const wxKeyEvent& event);
121
122 // text control under some platforms supports the text styles: these
123 // methods allow to apply the given text style to the given selection or to
124 // set/get the style which will be used for all appended text
125 virtual bool SetStyle(long start, long end, const wxTextAttr& style);
126 virtual bool GetStyle(long position, wxTextAttr& style);
127 virtual bool SetDefaultStyle(const wxTextAttr& style);
128 virtual const wxTextAttr& GetDefaultStyle() const;
129
130 // translate between the position (which is just an index in the text ctrl
131 // considering all its contents as a single strings) and (x, y) coordinates
132 // which represent column and line.
133 virtual long XYToPosition(long x, long y) const;
134 virtual bool PositionToXY(long pos, long *x, long *y) const;
135
136 virtual void ShowPosition(long pos);
137
138 // find the character at position given in pixels
139 //
140 // NB: pt is in device coords (not adjusted for the client area origin nor
141 // scrolling)
142 virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt, long *pos) const;
143 virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt,
144 wxTextCoord *col,
145 wxTextCoord *row) const;
146
147 // Clipboard operations
148 virtual void Copy();
149 virtual void Cut();
150 virtual void Paste();
151
152 virtual bool CanCopy() const;
153 virtual bool CanCut() const;
154 virtual bool CanPaste() const;
155
156 // Undo/redo
157 virtual void Undo();
158 virtual void Redo();
159
160 virtual bool CanUndo() const;
161 virtual bool CanRedo() const;
162
163 // Insertion point
164 virtual void SetInsertionPoint(long pos);
165 virtual void SetInsertionPointEnd();
166 virtual long GetInsertionPoint() const;
167 virtual wxTextPos GetLastPosition() const;
168
169 virtual void SetSelection(long from, long to);
170 virtual void SelectAll();
171 virtual void SetEditable(bool editable);
172
173 #if 0
174
175 // override streambuf method
176 #if wxHAS_TEXT_WINDOW_STREAM
177 int overflow(int i);
178 #endif // wxHAS_TEXT_WINDOW_STREAM
179
180 // stream-like insertion operators: these are always available, whether we
181 // were, or not, compiled with streambuf support
182 wxTextCtrl& operator<<(const wxString& s);
183 wxTextCtrl& operator<<(int i);
184 wxTextCtrl& operator<<(long i);
185 wxTextCtrl& operator<<(float f);
186 wxTextCtrl& operator<<(double d);
187 wxTextCtrl& operator<<(const wxChar c);
188 #endif
189
190 // do the window-specific processing after processing the update event
191 virtual void DoUpdateWindowUI(wxUpdateUIEvent& event);
192
193 virtual bool ShouldInheritColours() const;
194
195 // wxWindow overrides
196 virtual bool SetFont(const wxFont& font);
197
198 // search control generic only
199 void SetSearchBitmap( const wxBitmap& bitmap );
200 void SetSearchMenuBitmap( const wxBitmap& bitmap );
201 void SetCancelBitmap( const wxBitmap& bitmap );
202
203 protected:
204 virtual void DoSetValue(const wxString& value, int flags = 0);
205
206 // override the base class virtuals involved into geometry calculations
207 virtual wxSize DoGetBestSize() const;
208 virtual void DoMoveWindow(int x, int y, int width, int height);
209 virtual void LayoutControls(int x, int y, int width, int height);
210
211 virtual void RecalcBitmaps();
212
213 void Init();
214
215 virtual wxBitmap RenderSearchBitmap( int x, int y, bool renderDrop );
216 virtual wxBitmap RenderCancelBitmap( int x, int y );
217
218 virtual void OnSearchButton( wxCommandEvent& event );
219
220 void OnSetFocus( wxFocusEvent& event );
221 void OnSize( wxSizeEvent& event );
222
223 private:
224 friend class wxSearchButton;
225
226 void PopupSearchMenu();
227
228 // the subcontrols
229 wxSearchTextCtrl *m_text;
230 wxSearchButton *m_searchButton;
231 wxSearchButton *m_cancelButton;
232 wxMenu *m_menu;
233
234 bool m_searchButtonVisible;
235 bool m_cancelButtonVisible;
236
237 bool m_searchBitmapUser;
238 bool m_searchMenuBitmapUser;
239 bool m_cancelBitmapUser;
240 wxBitmap m_searchBitmap;
241 wxBitmap m_searchMenuBitmap;
242 wxBitmap m_cancelBitmap;
243 private:
244 DECLARE_DYNAMIC_CLASS(wxSearchCtrl)
245
246 DECLARE_EVENT_TABLE()
247 };
248
249 #endif // wxUSE_SEARCHCTRL
250
251 #endif // _WX_GENERIC_SEARCHCTRL_H_
252