Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members

/home/jeroen/FOX/fox/fox-1.7.33/include/FXTextField.h
00001 /********************************************************************************
00002 *                                                                               *
00003 *                         T e x t   F i e l d   W i d g e t                     *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 1997,2012 by Jeroen van der Zijp.   All Rights Reserved.        *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or modify          *
00009 * it under the terms of the GNU Lesser General Public License as published by   *
00010 * the Free Software Foundation; either version 3 of the License, or             *
00011 * (at your option) any later version.                                           *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                 *
00016 * GNU Lesser General Public License for more details.                           *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public License      *
00019 * along with this program.  If not, see <http://www.gnu.org/licenses/>          *
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;       // Edited text
00067   const FXchar *delimiters;     // Set of delimiters
00068   FXFont       *font;           // Text font
00069   FXColor       textColor;      // Text color
00070   FXColor       selbackColor;   // Selected background color
00071   FXColor       seltextColor;   // Selected text color
00072   FXColor       cursorColor;    // Color of the Cursor
00073   FXint         cursor;         // Cursor position
00074   FXint         anchor;         // Anchor position
00075   FXint         columns;        // Number of columns visible
00076   FXint         shift;          // Shift amount
00077   FXString      clipped;        // Clipped text
00078   FXString      help;           // Help string
00079   FXString      tip;            // Tooltip
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   // Value access
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   // Cursor movement
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   // Cursor drag movement
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   // Inserting
00161   long onCmdInsertString(FXObject*,FXSelector,void*);
00162   long onIMEStart(FXObject*,FXSelector,void*);
00163 
00164   // Manipulation Selection
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   // Deletion
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   // Control commands
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

Copyright © 1997-2011 Jeroen van der Zijp