00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef FXTEXTFIELD_H
00025
#define FXTEXTFIELD_H
00026
00027
#ifndef FXFRAME_H
00028
#include "FXFrame.h"
00029
#endif
00030
00031
namespace FX {
00032
00033
00034
00035
enum {
00036
TEXTFIELD_PASSWD = 0x00080000,
00037
TEXTFIELD_INTEGER = 0x00100000,
00038
TEXTFIELD_REAL = 0x00200000,
00039
TEXTFIELD_READONLY = 0x00400000,
00040
TEXTFIELD_ENTER_ONLY = 0x00800000,
00041
TEXTFIELD_LIMITED = 0x01000000,
00042
TEXTFIELD_OVERSTRIKE = 0x02000000,
00043
TEXTFIELD_AUTOGRAY = 0x04000000,
00044
TEXTFIELD_AUTOHIDE = 0x08000000,
00045 TEXTFIELD_NORMAL =
FRAME_SUNKEN|
FRAME_THICK
00046 };
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
class FXAPI FXTextField :
public FXFrame {
00067 FXDECLARE(FXTextField)
00068 protected:
00069 FXString contents;
00070 const FXchar *delimiters;
00071 FXFont *font;
00072 FXColor textColor;
00073 FXColor selbackColor;
00074 FXColor seltextColor;
00075 FXColor cursorColor;
00076 FXint cursor;
00077 FXint anchor;
00078 FXint columns;
00079 FXint shift;
00080
FXString clipped;
00081
FXString help;
00082
FXString tip;
00083 protected:
00084 FXTextField();
00085 FXint index(FXint x) const;
00086 FXint coord(FXint i) const;
00087
void drawCursor(FXuint state);
00088
void drawTextRange(
FXDCWindow& dc,FXint fm,FXint to);
00089
void drawTextFragment(
FXDCWindow& dc,FXint x,FXint y,FXint fm,FXint to);
00090
void drawPWDTextFragment(
FXDCWindow& dc,FXint x,FXint y,FXint fm,FXint to);
00091 FXint rightWord(FXint pos) const;
00092 FXint leftWord(FXint pos) const;
00093 FXint wordStart(FXint pos) const;
00094 FXint wordEnd(FXint pos) const;
00095 private:
00096 FXTextField(const FXTextField&);
00097 FXTextField& operator=(const FXTextField&);
00098 public:
00099
long onPaint(
FXObject*,FXSelector,
void*);
00100
long onUpdate(FXObject*,FXSelector,
void*);
00101
long onKeyPress(FXObject*,FXSelector,
void*);
00102
long onKeyRelease(FXObject*,FXSelector,
void*);
00103
long onLeftBtnPress(FXObject*,FXSelector,
void*);
00104
long onLeftBtnRelease(FXObject*,FXSelector,
void*);
00105
long onMiddleBtnPress(FXObject*,FXSelector,
void*);
00106
long onMiddleBtnRelease(FXObject*,FXSelector,
void*);
00107
long onVerify(FXObject*,FXSelector,
void*);
00108
long onMotion(FXObject*,FXSelector,
void*);
00109
long onSelectionLost(FXObject*,FXSelector,
void*);
00110
long onSelectionGained(FXObject*,FXSelector,
void*);
00111
long onSelectionRequest(FXObject*,FXSelector,
void* ptr);
00112
long onClipboardLost(FXObject*,FXSelector,
void*);
00113
long onClipboardGained(FXObject*,FXSelector,
void*);
00114
long onClipboardRequest(FXObject*,FXSelector,
void*);
00115
long onFocusSelf(FXObject*,FXSelector,
void*);
00116
long onFocusIn(FXObject*,FXSelector,
void*);
00117
long onFocusOut(FXObject*,FXSelector,
void*);
00118
long onBlink(FXObject*,FXSelector,
void*);
00119
long onAutoScroll(FXObject*,FXSelector,
void*);
00120
long onCmdSetValue(FXObject*,FXSelector,
void*);
00121
long onCmdSetIntValue(FXObject*,FXSelector,
void*);
00122
long onCmdSetRealValue(FXObject*,FXSelector,
void*);
00123
long onCmdSetStringValue(FXObject*,FXSelector,
void*);
00124
long onCmdGetIntValue(FXObject*,FXSelector,
void*);
00125
long onCmdGetRealValue(FXObject*,FXSelector,
void*);
00126
long onCmdGetStringValue(FXObject*,FXSelector,
void*);
00127
long onCmdCursorHome(FXObject*,FXSelector,
void*);
00128
long onCmdCursorEnd(FXObject*,FXSelector,
void*);
00129
long onCmdCursorRight(FXObject*,FXSelector,
void*);
00130
long onCmdCursorLeft(FXObject*,FXSelector,
void*);
00131
long onCmdCursorWordLeft(FXObject*,FXSelector,
void*);
00132
long onCmdCursorWordRight(FXObject*,FXSelector,
void*);
00133
long onCmdCursorWordStart(FXObject*,FXSelector,
void*);
00134
long onCmdCursorWordEnd(FXObject*,FXSelector,
void*);
00135
long onCmdMark(FXObject*,FXSelector,
void*);
00136
long onCmdExtend(FXObject*,FXSelector,
void*);
00137
long onCmdSelectAll(FXObject*,FXSelector,
void*);
00138
long onCmdDeselectAll(FXObject*,FXSelector,
void*);
00139
long onCmdCutSel(FXObject*,FXSelector,
void*);
00140 long onCmdCopySel(FXObject*,FXSelector,
void*);
00141
long onCmdPasteSel(FXObject*,FXSelector,
void*);
00142
long onCmdDeleteSel(FXObject*,FXSelector,
void*);
00143
long onCmdDeleteAll(FXObject*,FXSelector,
void*);
00144
long onCmdOverstString(FXObject*,FXSelector,
void*);
00145
long onCmdInsertString(FXObject*,FXSelector,
void*);
00146
long onCmdBackspace(FXObject*,FXSelector,
void*);
00147
long onCmdDelete(FXObject*,FXSelector,
void*);
00148
long onCmdToggleEditable(FXObject*,FXSelector,
void*);
00149
long onUpdToggleEditable(FXObject*,FXSelector,
void*);
00150
long onCmdToggleOverstrike(FXObject*,FXSelector,
void*);
00151
long onUpdToggleOverstrike(FXObject*,FXSelector,
void*);
00152
long onUpdHaveSelection(FXObject*,FXSelector,
void*);
00153
long onUpdSelectAll(FXObject*,FXSelector,
void*);
00154
long onCmdSetHelp(FXObject*,FXSelector,
void*);
00155
long onCmdGetHelp(FXObject*,FXSelector,
void*);
00156
long onCmdSetTip(FXObject*,FXSelector,
void*);
00157
long onCmdGetTip(FXObject*,FXSelector,
void*);
00158
long onQueryHelp(FXObject*,FXSelector,
void*);
00159
long onQueryTip(FXObject*,FXSelector,
void*);
00160 public:
00161
00162
00163 static const FXchar textDelimiters[];
00164
00165 public:
00166
00167 enum{
00168 ID_CURSOR_HOME=FXFrame::ID_LAST,
00169 ID_CURSOR_END,
00170 ID_CURSOR_RIGHT,
00171 ID_CURSOR_LEFT,
00172 ID_CURSOR_WORD_LEFT,
00173 ID_CURSOR_WORD_RIGHT,
00174 ID_CURSOR_WORD_START,
00175 ID_CURSOR_WORD_END,
00176 ID_MARK,
00177 ID_EXTEND,
00178 ID_SELECT_ALL,
00179 ID_DESELECT_ALL,
00180 ID_CUT_SEL,
00181 ID_COPY_SEL,
00182 ID_PASTE_SEL,
00183 ID_DELETE_SEL,
00184 ID_DELETE_ALL,
00185 ID_OVERST_STRING,
00186 ID_INSERT_STRING,
00187 ID_BACKSPACE,
00188 ID_DELETE,
00189 ID_TOGGLE_EDITABLE,
00190 ID_TOGGLE_OVERSTRIKE,
00191 ID_BLINK,
00192 ID_LAST
00193 };
00194
00195
public:
00196
00197
00198 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);
00199
00200
00201
virtual void create();
00202
00203
00204
virtual void layout();
00205
00206
00207
virtual void enable();
00208
00209
00210
virtual void disable();
00211
00212
00213
virtual FXint getDefaultWidth();
00214
00215
00216
virtual FXint getDefaultHeight();
00217
00218
00219
virtual FXbool canFocus() const;
00220
00221
00222 virtual
void setFocus();
00223
00224
00225 virtual
void killFocus();
00226
00227
00228 FXbool isEditable() const;
00229
00230
00231
void setEditable(FXbool edit=TRUE);
00232
00233
00234
void setCursorPos(FXint pos);
00235
00236
00237 FXint getCursorPos()
const {
return cursor; }
00238
00239
00240
void setAnchorPos(FXint pos);
00241
00242
00243 FXint getAnchorPos()
const {
return anchor; }
00244
00245
00246
void setText(
const FXString& text);
00247
00248
00249
FXString getText()
const {
return contents; }
00250
00251
00252
void setFont(
FXFont* fnt);
00253
00254
00255
FXFont* getFont()
const {
return font; }
00256
00257
00258
void setTextColor(FXColor clr);
00259
00260
00261 FXColor getTextColor()
const {
return textColor; }
00262
00263
00264
void setSelBackColor(FXColor clr);
00265
00266
00267 FXColor getSelBackColor()
const {
return selbackColor; }
00268
00269
00270
void setSelTextColor(FXColor clr);
00271
00272
00273 FXColor getSelTextColor()
const {
return seltextColor; }
00274
00275
00276
void setCursorColor(FXColor clr);
00277
00278
00279 FXColor getCursorColor()
const {
return cursorColor; }
00280
00281
00282
00283
00284
00285
void setNumColumns(FXint cols);
00286
00287
00288 FXint getNumColumns()
const {
return columns; }
00289
00290
00291
00292
00293
00294
00295
00296
00297
void setJustify(FXuint mode);
00298
00299
00300 FXuint getJustify() const;
00301
00302
00303
void setDelimiters(const FXchar* delims=textDelimiters){ delimiters=delims; }
00304
00305
00306
const FXchar* getDelimiters()
const {
return delimiters; }
00307
00308
00309
void setHelpText(
const FXString& text){ help=text; }
00310
00311
00312
const FXString& getHelpText()
const {
return help; }
00313
00314
00315
void setTipText(
const FXString& text){ tip=text; }
00316
00317
00318
const FXString& getTipText()
const {
return tip; }
00319
00320
00321
void setTextStyle(FXuint style);
00322
00323
00324 FXuint getTextStyle() const;
00325
00326
00327 FXbool selectAll();
00328
00329
00330 FXbool setSelection(FXint pos,FXint len);
00331
00332
00333 FXbool extendSelection(FXint pos);
00334
00335
00336 FXbool killSelection();
00337
00338
00339 FXbool isPosSelected(FXint pos) const;
00340
00341
00342 FXbool isPosVisible(FXint pos) const;
00343
00344
00345
void makePositionVisible(FXint pos);
00346
00347
00348 virtual
void save(FXStream& store) const;
00349
00350
00351 virtual
void load(FXStream& store);
00352
00353
00354 virtual ~FXTextField();
00355 };
00356
00357 }
00358
00359 #endif