1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: SWIG interface defs for wxTextCtrl and related classes
7 // Created: 10-June-1998
9 // Copyright: (c) 2003 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
16 //---------------------------------------------------------------------------
18 MAKE_CONST_WXSTRING(TextCtrlNameStr);
20 //---------------------------------------------------------------------------
38 // this style means to use RICHEDIT control and does something only under
39 // wxMSW and Win32 and is silently ignored under all other platforms
45 // automatically detect the URLs and generate the events when mouse is
46 // moved/clicked over an URL
48 // this is for Win32 richedit controls only so far
51 // by default, the Windows text control doesn't show the selection when it
52 // doesn't have focus - use this style to force it to always show it
55 // use wxHSCROLL (wxTE_DONTWRAP) to not wrap text at all, wxTE_CHARWRAP to
56 // wrap it at any position and wxTE_WORDWRAP to wrap at words boundary
58 // if no wrapping style is given at all, the control wraps at word boundary
64 // force using RichEdit version 2.0 or 3.0 instead of 1.0 (default) for
65 // wxTE_RICH controls - can be used together with or instead of wxTE_RICH
71 %pythoncode { TE_LINEWRAP = TE_CHARWRAP }
75 enum wxTextAttrAlignment
77 wxTEXT_ALIGNMENT_DEFAULT,
78 wxTEXT_ALIGNMENT_LEFT,
79 wxTEXT_ALIGNMENT_CENTRE,
80 wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
81 wxTEXT_ALIGNMENT_RIGHT,
82 wxTEXT_ALIGNMENT_JUSTIFIED
86 // Flags to indicate which attributes are being applied
87 wxTEXT_ATTR_TEXT_COLOUR,
88 wxTEXT_ATTR_BACKGROUND_COLOUR,
89 wxTEXT_ATTR_FONT_FACE,
90 wxTEXT_ATTR_FONT_SIZE,
91 wxTEXT_ATTR_FONT_WEIGHT,
92 wxTEXT_ATTR_FONT_ITALIC,
93 wxTEXT_ATTR_FONT_UNDERLINE,
95 wxTEXT_ATTR_ALIGNMENT,
96 wxTEXT_ATTR_LEFT_INDENT,
97 wxTEXT_ATTR_RIGHT_INDENT,
101 enum wxTextCtrlHitTestResult
103 wxTE_HT_UNKNOWN = -2, // this means HitTest() is simply not implemented
104 wxTE_HT_BEFORE, // either to the left or upper
105 wxTE_HT_ON_TEXT, // directly on
106 wxTE_HT_BELOW, // below [the last line]
107 wxTE_HT_BEYOND // after [the end of line]
112 wxOutOfRangeTextCoord,
116 //---------------------------------------------------------------------------
118 // wxTextAttr: a structure containing the visual attributes of a text
122 wxTextAttr(const wxColour& colText = wxNullColour,
123 const wxColour& colBack = wxNullColour,
124 const wxFont& font = wxNullFont,
125 wxTextAttrAlignment alignment = wxTEXT_ALIGNMENT_DEFAULT);
131 // merges the attributes of the base and the overlay objects and returns
132 // the result; the parameter attributes take precedence
134 // WARNING: the order of arguments is the opposite of Combine()
135 static wxTextAttr Merge(const wxTextAttr& base, const wxTextAttr& overlay);
137 // // merges the attributes of this object and overlay
138 // void Merge(const wxTextAttr& overlay);
142 void SetTextColour(const wxColour& colText);
143 void SetBackgroundColour(const wxColour& colBack);
144 void SetFont(const wxFont& font, long flags = wxTEXT_ATTR_FONT);
145 void SetAlignment(wxTextAttrAlignment alignment);
146 void SetTabs(const wxArrayInt& tabs);
147 void SetLeftIndent(int indent, int subIndent=0);
148 void SetRightIndent(int indent);
149 void SetFlags(long flags);
152 bool HasTextColour() const;
153 bool HasBackgroundColour() const;
154 bool HasFont() const;
155 bool HasAlignment() const;
156 bool HasTabs() const;
157 bool HasLeftIndent() const;
158 bool HasRightIndent() const;
159 bool HasFlag(long flag) const;
161 const wxColour& GetTextColour() const;
162 const wxColour& GetBackgroundColour() const;
163 const wxFont& GetFont() const;
164 wxTextAttrAlignment GetAlignment() const;
165 const wxArrayInt& GetTabs() const;
166 long GetLeftIndent() const;
167 long GetLeftSubIndent() const;
168 long GetRightIndent() const;
169 long GetFlags() const;
171 // returns False if we have any attributes set, True otherwise
172 bool IsDefault() const;
174 // return the attribute having the valid font and colours: it uses the
175 // attributes set in attr and falls back first to attrDefault and then to
176 // the text control font/colours for those attributes which are not set
177 static wxTextAttr Combine(const wxTextAttr& attr,
178 const wxTextAttr& attrDef,
179 const wxTextCtrl *text);
182 //---------------------------------------------------------------------------
184 // wxTextCtrl: a single or multiple line text zone where user can enter and
186 MustHaveApp(wxTextCtrl);
187 class wxTextCtrl : public wxControl
190 %pythonAppend wxTextCtrl "self._setOORInfo(self)"
191 %pythonAppend wxTextCtrl() ""
192 %typemap(out) wxTextCtrl*; // turn off this typemap
194 wxTextCtrl(wxWindow* parent, wxWindowID id=-1,
195 const wxString& value = wxPyEmptyString,
196 const wxPoint& pos = wxDefaultPosition,
197 const wxSize& size = wxDefaultSize,
199 const wxValidator& validator = wxDefaultValidator,
200 const wxString& name = wxPyTextCtrlNameStr);
201 %RenameCtor(PreTextCtrl, wxTextCtrl());
203 // Turn it back on again
204 %typemap(out) wxTextCtrl* { $result = wxPyMake_wxObject($1, $owner); }
206 bool Create(wxWindow* parent, wxWindowID id=-1,
207 const wxString& value = wxPyEmptyString,
208 const wxPoint& pos = wxDefaultPosition,
209 const wxSize& size = wxDefaultSize,
211 const wxValidator& validator = wxDefaultValidator,
212 const wxString& name = wxPyTextCtrlNameStr);
215 virtual wxString GetValue() const;
216 virtual void SetValue(const wxString& value);
218 virtual wxString GetRange(long from, long to) const;
220 virtual int GetLineLength(long lineNo) const;
221 virtual wxString GetLineText(long lineNo) const;
222 virtual int GetNumberOfLines() const;
224 virtual bool IsModified() const;
225 virtual bool IsEditable() const;
227 // more readable flag testing methods
228 bool IsSingleLine() const;
229 bool IsMultiLine() const;
233 virtual void, GetSelection(long* OUTPUT, long* OUTPUT) const,
234 "GetSelection() -> (from, to)",
235 "If the return values from and to are the same, there is no selection.", "");
237 virtual wxString GetStringSelection() const;
241 virtual void Clear();
242 virtual void Replace(long from, long to, const wxString& value);
243 virtual void Remove(long from, long to);
245 // load/save the controls contents from/to the file
246 virtual bool LoadFile(const wxString& file);
247 virtual bool SaveFile(const wxString& file = wxPyEmptyString);
249 // sets/clears the dirty flag
250 virtual void MarkDirty();
251 virtual void DiscardEdits();
252 void SetModified(bool modified);
254 // set the max number of characters which may be entered in a single line
256 virtual void SetMaxLength(unsigned long len);
258 // writing text inserts it at the current position, appending always
259 // inserts it at the end
260 virtual void WriteText(const wxString& text);
261 virtual void AppendText(const wxString& text);
263 // insert the character which would have resulted from this key event,
264 // return True if anything has been inserted
265 virtual bool EmulateKeyPress(const wxKeyEvent& event);
267 // text control under some platforms supports the text styles: these
268 // methods allow to apply the given text style to the given selection or to
269 // set/get the style which will be used for all appended text
270 virtual bool SetStyle(long start, long end, const wxTextAttr& style);
271 virtual bool GetStyle(long position, wxTextAttr& style);
272 virtual bool SetDefaultStyle(const wxTextAttr& style);
273 virtual const wxTextAttr& GetDefaultStyle() const;
275 // translate between the position (which is just an index in the text ctrl
276 // considering all its contents as a single strings) and (x, y) coordinates
277 // which represent column and line.
278 virtual long XYToPosition(long x, long y) const;
280 virtual /*bool*/ void, PositionToXY(long pos, long *OUTPUT, long *OUTPUT) const,
281 "PositionToXY(long pos) -> (x, y)");
283 virtual void ShowPosition(long pos);
287 virtual wxTextCtrlHitTestResult, HitTest(const wxPoint& pt,
288 long* OUTPUT, long* OUTPUT) const,
289 "HitTest(Point pt) -> (result, col, row)",
290 "Find the row, col coresponding to the character at the point given in
291 pixels. NB: pt is in device coords but is not adjusted for the client
292 area origin nor scrolling.", "");
296 virtual wxTextCtrlHitTestResult , HitTest(const wxPoint& pt, long *OUTPUT) const,
297 "HitTestPos(Point pt) -> (result, position)",
298 "Find the character position in the text coresponding to the point
299 given in pixels. NB: pt is in device coords but is not adjusted for
300 the client area origin nor scrolling. ", "",
305 // Clipboard operations
308 virtual void Paste();
310 virtual bool CanCopy() const;
311 virtual bool CanCut() const;
312 virtual bool CanPaste() const;
318 virtual bool CanUndo() const;
319 virtual bool CanRedo() const;
322 virtual void SetInsertionPoint(long pos);
323 virtual void SetInsertionPointEnd();
324 virtual long GetInsertionPoint() const;
325 virtual long GetLastPosition() const;
327 virtual void SetSelection(long from, long to);
328 virtual void SelectAll();
329 virtual void SetEditable(bool editable);
332 // Caret handling (Windows only)
333 bool ShowNativeCaret(bool show = true);
334 bool HideNativeCaret();
338 // TODO: Add more file-like methods
339 void write(const wxString& text) {
340 self->AppendText(text);
344 // TODO: replace this when the method is really added to wxTextCtrl
346 wxString GetString(long from, long to) {
347 return self->GetValue().Mid(from, to - from);
351 static wxVisualAttributes
352 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
355 //---------------------------------------------------------------------------
358 %constant wxEventType wxEVT_COMMAND_TEXT_UPDATED;
359 %constant wxEventType wxEVT_COMMAND_TEXT_ENTER;
360 %constant wxEventType wxEVT_COMMAND_TEXT_URL;
361 %constant wxEventType wxEVT_COMMAND_TEXT_MAXLEN;
364 class wxTextUrlEvent : public wxCommandEvent
367 wxTextUrlEvent(int winid, const wxMouseEvent& evtMouse,
368 long start, long end);
370 // get the mouse event which happend over the URL
371 const wxMouseEvent& GetMouseEvent();
373 // get the start of the URL
374 long GetURLStart() const;
376 // get the end of the URL
377 long GetURLEnd() const;
382 EVT_TEXT = wx.PyEventBinder( wxEVT_COMMAND_TEXT_UPDATED, 1)
383 EVT_TEXT_ENTER = wx.PyEventBinder( wxEVT_COMMAND_TEXT_ENTER, 1)
384 EVT_TEXT_URL = wx.PyEventBinder( wxEVT_COMMAND_TEXT_URL, 1)
385 EVT_TEXT_MAXLEN = wx.PyEventBinder( wxEVT_COMMAND_TEXT_MAXLEN, 1)
391 //---------------------------------------------------------------------------