/
FXTextField.i
290 lines (240 loc) · 10.5 KB
/
FXTextField.i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
/***********************************************************************
* FXRuby -- the Ruby language bindings for the FOX GUI toolkit.
* Copyright (c) 2001-2009 by Lyle Johnson. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For further information please contact the author by e-mail
* at "lyle@lylejohnson.name".
***********************************************************************/
/// Textfield styles
enum {
TEXTFIELD_PASSWD = 0x00080000, /// Password mode
TEXTFIELD_INTEGER = 0x00100000, /// Integer mode
TEXTFIELD_REAL = 0x00200000, /// Real mode
TEXTFIELD_READONLY = 0x00400000, /// NOT editable
TEXTFIELD_ENTER_ONLY = 0x00800000, /// Only callback when enter hit
TEXTFIELD_LIMITED = 0x01000000, /// Limit entry to given number of columns
TEXTFIELD_OVERSTRIKE = 0x02000000, /// Overstrike mode
TEXTFIELD_AUTOGRAY = 0x04000000, /// Automatically gray out text field when not updated
TEXTFIELD_AUTOHIDE = 0x08000000, /// Automatically hide text field when not updated
TEXTFIELD_NORMAL = FRAME_SUNKEN|FRAME_THICK
};
%rename("overstrike=") FXTextField::setOverstrike(FXbool);
%rename("overstrike?") FXTextField::isOverstrike() const;
/**
* A Text field is a single-line text entry widget.
* The text field widget supports clipboard for cut-and-paste
* operations.
* The text field also sends SEL_COMMAND when the focus moves to another control.
* TEXTFIELD_ENTER_ONLY can be passed to suppress this feature. Typically, this
* flag is used in dialogs that close when ENTER is hit in a text field.
*/
class FXTextField : public FXFrame {
public:
long onPaint(FXObject*,FXSelector,void* PTR_EVENT);
long onUpdate(FXObject*,FXSelector,void* PTR_IGNORE);
long onKeyPress(FXObject*,FXSelector,void* PTR_EVENT);
long onKeyRelease(FXObject*,FXSelector,void* PTR_EVENT);
long onLeftBtnPress(FXObject*,FXSelector,void* PTR_EVENT);
long onLeftBtnRelease(FXObject*,FXSelector,void* PTR_EVENT);
long onMiddleBtnPress(FXObject*,FXSelector,void* PTR_EVENT);
long onMiddleBtnRelease(FXObject*,FXSelector,void* PTR_EVENT);
long onVerify(FXObject*,FXSelector,void* PTR_CSTRING);
long onMotion(FXObject*,FXSelector,void* PTR_EVENT);
long onSelectionLost(FXObject*,FXSelector,void* PTR_EVENT);
long onSelectionGained(FXObject*,FXSelector,void* PTR_EVENT);
long onSelectionRequest(FXObject*,FXSelector,void* ptr);
long onClipboardLost(FXObject*,FXSelector,void* PTR_EVENT);
long onClipboardGained(FXObject*,FXSelector,void* PTR_EVENT);
long onClipboardRequest(FXObject*,FXSelector,void* PTR_EVENT);
long onFocusSelf(FXObject*,FXSelector,void* PTR_EVENT);
long onFocusIn(FXObject*,FXSelector,void* PTR_EVENT);
long onFocusOut(FXObject*,FXSelector,void* PTR_EVENT);
long onBlink(FXObject*,FXSelector,void* PTR_IGNORE);
long onAutoScroll(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdSetValue(FXObject*,FXSelector,void* PTR_CSTRING);
long onCmdSetIntValue(FXObject*,FXSelector,void* PTR_PINT);
long onCmdSetRealValue(FXObject*,FXSelector,void* PTR_PDOUBLE);
long onCmdSetStringValue(FXObject*,FXSelector,void* PTR_STRING);
long onCmdGetIntValue(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdGetRealValue(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdGetStringValue(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdCursorHome(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCursorEnd(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCursorRight(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCursorLeft(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCursorWordLeft(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCursorWordRight(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCursorWordStart(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCursorWordEnd(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdMark(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdExtend(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdSelectAll(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdDeselectAll(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCutSel(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdCopySel(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdPasteSel(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdPasteMiddle(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdDeleteSel(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdDeleteAll(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdOverstString(FXObject*,FXSelector,void* PTR_CHAR);
long onCmdInsertString(FXObject*,FXSelector,void* PTR_CSTRING);
long onCmdBackspace(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdDelete(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdToggleEditable(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdToggleEditable(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdToggleOverstrike(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdToggleOverstrike(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdHaveSelection(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSelectAll(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdSetHelp(FXObject*,FXSelector,void* PTR_STRING);
long onCmdGetHelp(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSetTip(FXObject*,FXSelector,void* PTR_STRING);
long onCmdGetTip(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onQueryHelp(FXObject*,FXSelector,void* PTR_IGNORE);
long onQueryTip(FXObject*,FXSelector,void* PTR_IGNORE);
public:
/// Default text delimiters
static const FXchar textDelimiters[];
public:
enum{
ID_CURSOR_HOME=FXFrame::ID_LAST,
ID_CURSOR_END,
ID_CURSOR_RIGHT,
ID_CURSOR_LEFT,
ID_CURSOR_WORD_LEFT,
ID_CURSOR_WORD_RIGHT,
ID_CURSOR_WORD_START,
ID_CURSOR_WORD_END,
ID_MARK,
ID_EXTEND,
ID_SELECT_ALL,
ID_DESELECT_ALL,
ID_CUT_SEL,
ID_COPY_SEL,
ID_PASTE_SEL,
ID_DELETE_SEL,
ID_DELETE_ALL,
ID_OVERST_STRING,
ID_INSERT_STRING,
ID_BACKSPACE,
ID_DELETE,
ID_TOGGLE_EDITABLE,
ID_TOGGLE_OVERSTRIKE,
ID_BLINK,
ID_LAST
};
public:
/// Construct text field wide enough to display ncols columns
%extend {
FXTextField(FXComposite* p,FXint ncols,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=TEXTFIELD_NORMAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD){
return new FXRbTextField(p,ncols,tgt,sel,opts,x,y,w,h,pl,pr,pt,pb);
}
}
/// Change text field editability
void setEditable(FXbool edit=TRUE);
/// Return TRUE if text field may be edited
FXbool isEditable() const;
/// Set overstrike mode
void setOverstrike(FXbool over=TRUE);
/// Return TRUE if overstrike mode in effect
FXbool isOverstrike() const;
/// Set cursor position
void setCursorPos(FXint pos);
/// Return cursor position
FXint getCursorPos() const;
/// Change anchor position
void setAnchorPos(FXint pos);
/// Return anchor position
FXint getAnchorPos() const;
/// Set the text for this label
void setText(const FXString& text,FXbool notify=FALSE);
/// Get the text for this label
FXString getText() const;
/// Set the text font
void setFont(FXFont* fnt);
/// Get the text font
FXFont* getFont() const;
/// Change text color
void setTextColor(FXColor clr);
/// Return text color
FXColor getTextColor() const;
/// Change selected background color
void setSelBackColor(FXColor clr);
/// Return selected background color
FXColor getSelBackColor() const;
/// Change selected text color
void setSelTextColor(FXColor clr);
/// Return selected text color
FXColor getSelTextColor() const;
/// Changes the cursor color
void setCursorColor(FXColor clr);
/// Return the cursor color
FXColor getCursorColor() const;
/**
* Change the default width of the text field in terms of a number
* of columns times the width of the numeral '8'.
*/
void setNumColumns(FXint cols);
/// Return number of columns
FXint getNumColumns() const;
/**
* Change text justification mode. The justify mode is a combination of
* horizontal justification (JUSTIFY_LEFT, JUSTIFY_RIGHT, or JUSTIFY_CENTER_X),
* and vertical justification (JUSTIFY_TOP, JUSTIFY_BOTTOM, JUSTIFY_CENTER_Y).
* Note that JUSTIFY_CENTER_X can not be set from the constructor since by
* default text fields are left-justified.
*/
void setJustify(FXuint mode);
/// Return text justification mode
FXuint getJustify() const;
/// Change word delimiters
void setDelimiters(const FXchar* delims=textDelimiters);
/// Return word delimiters
const FXchar* getDelimiters() const;
/// Set the status line help text for this label
void setHelpText(const FXString& text);
/// Get the status line help text for this label
const FXString& getHelpText() const;
/// Set the tool tip message for this text field
void setTipText(const FXString& text);
/// Get the tool tip message for this text field
const FXString& getTipText() const;
/// Change text style
void setTextStyle(FXuint style);
/// Return text style
FXuint getTextStyle() const;
/// Select all text
FXbool selectAll();
/// Select len characters starting at given position pos
FXbool setSelection(FXint pos,FXint len);
/// Extend the selection from the anchor to the given position
FXbool extendSelection(FXint pos);
/// Unselect the text
FXbool killSelection();
/// Return TRUE if position pos is selected
FXbool isPosSelected(FXint pos) const;
/// Return TRUE if position is fully visible
FXbool isPosVisible(FXint pos) const;
/// Scroll text to make the given position visible
void makePositionVisible(FXint pos);
/// Destructor
virtual ~FXTextField();
};
DECLARE_FXOBJECT_VIRTUALS(FXTextField)
DECLARE_FXID_VIRTUALS(FXTextField)
DECLARE_FXDRAWABLE_VIRTUALS(FXTextField)
DECLARE_FXWINDOW_VIRTUALS(FXTextField)