00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef FXTEXTFIELD_H
00022 #define FXTEXTFIELD_H
00023
00024 #ifndef FXFRAME_H
00025 #include "FXFrame.h"
00026 #endif
00027
00028 namespace FX {
00029
00030
00032 enum {
00033 TEXTFIELD_PASSWD = 0x00080000,
00034 TEXTFIELD_INTEGER = 0x00100000,
00035 TEXTFIELD_REAL = 0x00200000,
00036 TEXTFIELD_READONLY = 0x00400000,
00037 TEXTFIELD_ENTER_ONLY = 0x00800000,
00038 TEXTFIELD_LIMITED = 0x01000000,
00039 TEXTFIELD_OVERSTRIKE = 0x02000000,
00040 TEXTFIELD_AUTOGRAY = 0x04000000,
00041 TEXTFIELD_AUTOHIDE = 0x08000000,
00042 TEXTFIELD_NORMAL = FRAME_SUNKEN|FRAME_THICK
00043 };
00044
00045
00063 class FXAPI FXTextField : public FXFrame {
00064 FXDECLARE(FXTextField)
00065 protected:
00066 FXString contents;
00067 const FXchar *delimiters;
00068 FXFont *font;
00069 FXColor textColor;
00070 FXColor selbackColor;
00071 FXColor seltextColor;
00072 FXColor cursorColor;
00073 FXint cursor;
00074 FXint anchor;
00075 FXint columns;
00076 FXint shift;
00077 FXString clipped;
00078 FXString help;
00079 FXString tip;
00080 protected:
00081 FXTextField();
00082 FXint index(FXint x) const;
00083 FXint coord(FXint i) const;
00084 FXint leftWord(FXint pos) const;
00085 FXint rightWord(FXint pos) const;
00086 FXint wordStart(FXint pos) const;
00087 FXint wordEnd(FXint pos) const;
00088 void drawCursor(FXuint state);
00089 void paintCursor(FXDCWindow& dc) const;
00090 void eraseCursor(FXDCWindow& dc) const;
00091 void drawTextRange(FXDCWindow& dc,FXint fm,FXint to) const;
00092 void drawTextFragment(FXDCWindow& dc,FXint x,FXint y,FXint fm,FXint to) const;
00093 void drawPWDTextFragment(FXDCWindow& dc,FXint x,FXint y,FXint fm,FXint to) const;
00094 void moveCursor(FXint pos);
00095 void moveCursorAndSelect(FXint pos);
00096 void enterText(const FXString& text,FXbool notify);
00097 FXbool deletePendingSelection(FXbool notify);
00098 private:
00099 FXTextField(const FXTextField&);
00100 FXTextField& operator=(const FXTextField&);
00101 public:
00102 long onPaint(FXObject*,FXSelector,void*);
00103 long onUpdate(FXObject*,FXSelector,void*);
00104 long onBlink(FXObject*,FXSelector,void*);
00105 long onFocusIn(FXObject*,FXSelector,void*);
00106 long onFocusOut(FXObject*,FXSelector,void*);
00107 long onFocusSelf(FXObject*,FXSelector,void*);
00108 long onMotion(FXObject*,FXSelector,void*);
00109 long onAutoScroll(FXObject*,FXSelector,void*);
00110 long onLeftBtnPress(FXObject*,FXSelector,void*);
00111 long onLeftBtnRelease(FXObject*,FXSelector,void*);
00112 long onMiddleBtnPress(FXObject*,FXSelector,void*);
00113 long onMiddleBtnRelease(FXObject*,FXSelector,void*);
00114 long onKeyPress(FXObject*,FXSelector,void*);
00115 long onKeyRelease(FXObject*,FXSelector,void*);
00116 long onVerify(FXObject*,FXSelector,void*);
00117 long onSelectionLost(FXObject*,FXSelector,void*);
00118 long onSelectionGained(FXObject*,FXSelector,void*);
00119 long onSelectionRequest(FXObject*,FXSelector,void* ptr);
00120 long onClipboardLost(FXObject*,FXSelector,void*);
00121 long onClipboardGained(FXObject*,FXSelector,void*);
00122 long onClipboardRequest(FXObject*,FXSelector,void*);
00123 long onCmdSetTip(FXObject*,FXSelector,void*);
00124 long onCmdGetTip(FXObject*,FXSelector,void*);
00125 long onCmdSetHelp(FXObject*,FXSelector,void*);
00126 long onCmdGetHelp(FXObject*,FXSelector,void*);
00127 long onQueryTip(FXObject*,FXSelector,void*);
00128 long onQueryHelp(FXObject*,FXSelector,void*);
00129 long onUpdIsEditable(FXObject*,FXSelector,void*);
00130 long onUpdHaveSelection(FXObject*,FXSelector,void*);
00131 long onUpdHaveEditableSelection(FXObject*,FXSelector,void*);
00132
00133
00134 long onCmdSetValue(FXObject*,FXSelector,void*);
00135 long onCmdSetIntValue(FXObject*,FXSelector,void*);
00136 long onCmdSetLongValue(FXObject*,FXSelector,void*);
00137 long onCmdSetRealValue(FXObject*,FXSelector,void*);
00138 long onCmdSetStringValue(FXObject*,FXSelector,void*);
00139 long onCmdGetIntValue(FXObject*,FXSelector,void*);
00140 long onCmdGetLongValue(FXObject*,FXSelector,void*);
00141 long onCmdGetRealValue(FXObject*,FXSelector,void*);
00142 long onCmdGetStringValue(FXObject*,FXSelector,void*);
00143
00144
00145 long onCmdCursorHome(FXObject*,FXSelector,void*);
00146 long onCmdCursorEnd(FXObject*,FXSelector,void*);
00147 long onCmdCursorRight(FXObject*,FXSelector,void*);
00148 long onCmdCursorLeft(FXObject*,FXSelector,void*);
00149 long onCmdCursorWordLeft(FXObject*,FXSelector,void*);
00150 long onCmdCursorWordRight(FXObject*,FXSelector,void*);
00151
00152
00153 long onCmdCursorShiftHome(FXObject*,FXSelector,void*);
00154 long onCmdCursorShiftEnd(FXObject*,FXSelector,void*);
00155 long onCmdCursorShiftRight(FXObject*,FXSelector,void*);
00156 long onCmdCursorShiftLeft(FXObject*,FXSelector,void*);
00157 long onCmdCursorShiftWordLeft(FXObject*,FXSelector,void*);
00158 long onCmdCursorShiftWordRight(FXObject*,FXSelector,void*);
00159
00160
00161 long onCmdInsertString(FXObject*,FXSelector,void*);
00162 long onIMEStart(FXObject*,FXSelector,void*);
00163
00164
00165 long onCmdCutSel(FXObject*,FXSelector,void*);
00166 long onCmdCopySel(FXObject*,FXSelector,void*);
00167 long onCmdPasteSel(FXObject*,FXSelector,void*);
00168 long onCmdDeleteSel(FXObject*,FXSelector,void*);
00169 long onCmdReplaceSel(FXObject*,FXSelector,void*);
00170 long onCmdPasteMiddle(FXObject*,FXSelector,void*);
00171 long onCmdSelectAll(FXObject*,FXSelector,void*);
00172 long onCmdDeselectAll(FXObject*,FXSelector,void*);
00173
00174
00175 long onCmdBackspace(FXObject*,FXSelector,void*);
00176 long onCmdBackspaceWord(FXObject*,FXSelector,void*);
00177 long onCmdBackspaceBol(FXObject*,FXSelector,void*);
00178 long onCmdDeleteChar(FXObject*,FXSelector,void*);
00179 long onCmdDeleteWord(FXObject*,FXSelector,void*);
00180 long onCmdDeleteEol(FXObject*,FXSelector,void*);
00181 long onCmdDeleteAll(FXObject*,FXSelector,void*);
00182
00183
00184 long onCmdToggleEditable(FXObject*,FXSelector,void*);
00185 long onUpdToggleEditable(FXObject*,FXSelector,void*);
00186 long onCmdToggleOverstrike(FXObject*,FXSelector,void*);
00187 long onUpdToggleOverstrike(FXObject*,FXSelector,void*);
00188 public:
00189
00191 static const FXchar textDelimiters[];
00192
00193 public:
00194
00195 enum{
00196 ID_CURSOR_HOME=FXFrame::ID_LAST,
00197 ID_CURSOR_END,
00198 ID_CURSOR_RIGHT,
00199 ID_CURSOR_LEFT,
00200 ID_CURSOR_WORD_LEFT,
00201 ID_CURSOR_WORD_RIGHT,
00202 ID_CURSOR_SHIFT_HOME,
00203 ID_CURSOR_SHIFT_END,
00204 ID_CURSOR_SHIFT_LEFT,
00205 ID_CURSOR_SHIFT_RIGHT,
00206 ID_CURSOR_SHIFT_WORD_LEFT,
00207 ID_CURSOR_SHIFT_WORD_RIGHT,
00208 ID_SELECT_ALL,
00209 ID_DESELECT_ALL,
00210 ID_CUT_SEL,
00211 ID_COPY_SEL,
00212 ID_DELETE_SEL,
00213 ID_REPLACE_SEL,
00214 ID_PASTE_SEL,
00215 ID_PASTE_MIDDLE,
00216 ID_INSERT_STRING,
00217 ID_BACKSPACE,
00218 ID_BACKSPACE_WORD,
00219 ID_BACKSPACE_BOL,
00220 ID_DELETE_CHAR,
00221 ID_DELETE_WORD,
00222 ID_DELETE_EOL,
00223 ID_DELETE_ALL,
00224 ID_TOGGLE_EDITABLE,
00225 ID_TOGGLE_OVERSTRIKE,
00226 ID_BLINK,
00227 ID_AUTOSCROLL,
00228 ID_LAST
00229 };
00230
00231 public:
00232
00234 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);
00235
00237 virtual void create();
00238
00240 virtual void layout();
00241
00243 virtual void enable();
00244
00246 virtual void disable();
00247
00249 virtual FXint getDefaultWidth();
00250
00252 virtual FXint getDefaultHeight();
00253
00255 virtual FXbool canFocus() const;
00256
00258 virtual void setFocus();
00259
00261 virtual void killFocus();
00262
00264 void setNumColumns(FXint cols);
00265
00267 FXint getNumColumns() const { return columns; }
00268
00270 FXString getText() const { return contents; }
00271
00273 FXString getSelectedText() const;
00274
00276 void setText(const FXString& text,FXbool notify=false);
00277
00279 void replaceText(FXint pos,FXint m,const FXString& text,FXbool notify=false);
00280
00282 void appendText(const FXString& text,FXbool notify=false);
00283
00285 void insertText(FXint pos,const FXString& text,FXbool notify=false);
00286
00288 void removeText(FXint pos,FXint m,FXbool notify=false);
00289
00291 FXbool selectAll();
00292
00294 FXbool setSelection(FXint pos,FXint len);
00295
00297 FXbool extendSelection(FXint pos);
00298
00300 FXbool copySelection();
00301
00303 FXbool cutSelection(FXbool notify=false);
00304
00306 FXbool deleteSelection(FXbool notify=false);
00307
00309 FXbool replaceSelection(const FXString& text,FXbool notify=false);
00310
00312 FXbool pasteSelection(FXbool notify=false);
00313
00315 FXbool pasteClipboard(FXbool notify=false);
00316
00318 FXbool killSelection();
00319
00321 FXbool isPosSelected(FXint pos) const;
00322
00324 FXbool isPosVisible(FXint pos) const;
00325
00327 void makePositionVisible(FXint pos);
00328
00330 void setCursorPos(FXint pos);
00331
00333 FXint getCursorPos() const { return cursor; }
00334
00336 void setAnchorPos(FXint pos);
00337
00339 FXint getAnchorPos() const { return anchor; }
00340
00342 void setEditable(FXbool edit=true);
00343
00345 FXbool isEditable() const;
00346
00348 void setOverstrike(FXbool over=true);
00349
00351 FXbool isOverstrike() const;
00352
00360 void setJustify(FXuint mode);
00361
00363 FXuint getJustify() const;
00364
00366 void setDelimiters(const FXchar* delims=textDelimiters){ delimiters=delims; }
00367
00369 const FXchar* getDelimiters() const { return delimiters; }
00370
00372 void setTextStyle(FXuint style);
00373
00375 FXuint getTextStyle() const;
00376
00378 void setFont(FXFont* fnt);
00379
00381 FXFont* getFont() const { return font; }
00382
00384 void setTextColor(FXColor clr);
00385
00387 FXColor getTextColor() const { return textColor; }
00388
00390 void setSelBackColor(FXColor clr);
00391
00393 FXColor getSelBackColor() const { return selbackColor; }
00394
00396 void setSelTextColor(FXColor clr);
00397
00399 FXColor getSelTextColor() const { return seltextColor; }
00400
00402 void setCursorColor(FXColor clr);
00403
00405 FXColor getCursorColor() const { return cursorColor; }
00406
00408 void setHelpText(const FXString& text){ help=text; }
00409
00411 const FXString& getHelpText() const { return help; }
00412
00414 void setTipText(const FXString& text){ tip=text; }
00415
00417 const FXString& getTipText() const { return tip; }
00418
00420 virtual void save(FXStream& store) const;
00421
00423 virtual void load(FXStream& store);
00424
00426 virtual ~FXTextField();
00427 };
00428
00429 }
00430
00431 #endif