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

/home/jeroen/FOX/fox/fox-1.7.33/include/FXText.h
00001 /********************************************************************************
00002 *                                                                               *
00003 *                    M u l t i - L i ne   T e x t   W i d g e t                 *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 1998,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 FXTEXT_H
00022 #define FXTEXT_H
00023 
00024 #ifndef FXSCROLLAREA_H
00025 #include "FXScrollArea.h"
00026 #endif
00027 
00028 namespace FX {
00029 
00030 
00032 enum {
00033   TEXT_READONLY      = 0x00100000,      
00034   TEXT_WORDWRAP      = 0x00200000,      
00035   TEXT_OVERSTRIKE    = 0x00400000,      
00036   TEXT_FIXEDWRAP     = 0x00800000,      
00037   TEXT_NO_TABS       = 0x01000000,      
00038   TEXT_AUTOINDENT    = 0x02000000,      
00039   TEXT_SHOWACTIVE    = 0x04000000       
00040   };
00041 
00042 
00044 struct FXHiliteStyle {
00045   FXColor normalForeColor;            
00046   FXColor normalBackColor;            
00047   FXColor selectForeColor;            
00048   FXColor selectBackColor;            
00049   FXColor hiliteForeColor;            
00050   FXColor hiliteBackColor;            
00051   FXColor activeBackColor;            
00052   FXuint  style;                      
00053   };
00054 
00055 
00062 struct FXTextChange {
00063   FXint   pos;          
00064   FXint   ndel;         
00065   FXint   nins;         
00066   FXchar *ins;          
00067   FXchar *del;          
00068   };
00069 
00070 
00138 class FXAPI FXText : public FXScrollArea {
00139   FXDECLARE(FXText)
00140 protected:
00141   FXchar        *buffer;              // Text buffer being edited
00142   FXchar        *sbuffer;             // Text style buffer
00143   FXint         *visrows;             // Starts of rows in buffer
00144   FXint          length;              // Length of the actual text in the buffer
00145   FXint          nvisrows;            // Number of visible rows
00146   FXint          nrows;               // Total number of rows
00147   FXint          gapstart;            // Start of the insertion point (the gap)
00148   FXint          gapend;              // End of the insertion point+1
00149   FXint          toppos;              // Start position of first visible row
00150   FXint          keeppos;             // Position to keep on top visible row
00151   FXint          toprow;              // Row number of first visible row
00152   FXint          selstartpos;         // Start of selection
00153   FXint          selendpos;           // End of selection
00154   FXint          hilitestartpos;      // Hightlight start position
00155   FXint          hiliteendpos;        // Hightlight end position
00156   FXint          anchorpos;           // Anchor position
00157   FXint          cursorpos;           // Cursor position
00158   FXint          cursorstart;         // Cursor row start pos
00159   FXint          cursorend;           // Cursor row end pos
00160   FXint          cursorrow;           // Cursor row
00161   FXint          cursorcol;           // Cursor column indent (not character offset!)
00162   FXint          prefcol;             // Preferred cursor column
00163   FXint          margintop;           // Margins top
00164   FXint          marginbottom;        // Margin bottom
00165   FXint          marginleft;          // Margin left
00166   FXint          marginright;         // Margin right
00167   FXint          wrapwidth;           // Wrap width in pixels
00168   FXint          wrapcolumns;         // Wrap columns
00169   FXint          tabwidth;            // Tab width in pixels
00170   FXint          tabcolumns;          // Tab columns
00171   FXint          barwidth;            // Line number width
00172   FXint          barcolumns;          // Line number columns
00173   FXFont        *font;                // Text font
00174   FXColor        textColor;           // Normal text color
00175   FXColor        selbackColor;        // Select background color
00176   FXColor        seltextColor;        // Select text color
00177   FXColor        hilitebackColor;     // Highlight background color
00178   FXColor        hilitetextColor;     // Highlight text color
00179   FXColor        activebackColor;     // Background color for active line
00180   FXColor        numberColor;         // Line number color
00181   FXColor        cursorColor;         // Cursor color
00182   FXColor        barColor;            // Bar background color
00183   FXint          textWidth;           // Total width of all text
00184   FXint          textHeight;          // Total height of all text
00185   FXString       searchstring;        // String of last search
00186   FXuint         searchflags;         // Flags of last search
00187   const FXchar  *delimiters;          // Delimiters
00188   FXString       clipped;             // Clipped text
00189   FXint          vrows;               // Default visible rows
00190   FXint          vcols;               // Default visible columns
00191   FXString       help;                // Status line help
00192   FXString       tip;                 // Tooltip
00193   FXHiliteStyle *hilitestyles;        // Style definitions
00194   FXTime         matchtime;           // Match time (ns)
00195   FXint          grabx;               // Grab point x
00196   FXint          graby;               // Grab point y
00197   FXuchar        mode;                // Mode widget is in
00198   FXbool         modified;            // User has modified text
00199 protected:
00200   FXText();
00201   void calcVisRows(FXint s,FXint e);
00202   void drawCursor(FXuint state);
00203   virtual void paintCursor(FXDCWindow& dc) const;
00204   virtual void eraseCursor(FXDCWindow& dc) const;
00205   virtual void eraseCursorOverhang();
00206   virtual FXuint styleOf(FXint beg,FXint end,FXint row,FXint col,FXint pos) const;
00207   virtual void drawBufferText(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXint pos,FXint n,FXuint style) const;
00208   virtual void fillBufferRect(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXuint style) const;
00209   virtual void drawTextRow(FXDCWindow& dc,FXint row) const;
00210   virtual void drawContents(FXDCWindow& dc) const;
00211   virtual void drawNumbers(FXDCWindow& dc) const;
00212   FXint posToLine(FXint pos,FXint ln) const;
00213   void updateRange(FXint beg,FXint end) const;
00214   void movegap(FXint pos);
00215   void sizegap(FXint sz);
00216   void squeezegap();
00217   FXint charWidth(FXwchar ch,FXint indent) const;
00218   FXint wrap(FXint start) const;
00219   FXint measureText(FXint start,FXint end,FXint& wmax,FXint& hmax) const;
00220   FXint lineWidth(FXint pos,FXint n) const;
00221   FXint changeBeg(FXint pos) const;
00222   FXint changeEnd(FXint pos) const;
00223   FXint indentFromPos(FXint start,FXint pos) const;
00224   FXint posFromIndent(FXint start,FXint indent) const;
00225   void mutation(FXint pos,FXint ncins,FXint ncdel,FXint nrins,FXint nrdel);
00226   virtual void replace(FXint pos,FXint m,const FXchar *text,FXint n,FXint style);
00227   void recompute();
00228   FXint matchForward(FXint pos,FXint end,FXwchar l,FXwchar r,FXint level) const;
00229   FXint matchBackward(FXint pos,FXint beg,FXwchar l,FXwchar r,FXint level) const;
00230   FXint findMatching(FXint pos,FXint beg,FXint end,FXwchar ch,FXint level) const;
00231   void flashMatching();
00232   void moveContents(FXint x,FXint y);
00233   void moveCursor(FXint pos,FXbool notify=false);
00234   void moveCursorAndSelect(FXint pos,FXuint select,FXbool notify=false);
00235   FXint overstruck(FXint start,FXint end,const FXchar *text,FXint n);
00236   void enterText(const FXchar *text,FXint n,FXbool notify);
00237   void enterText(const FXString& text,FXbool notify);
00238   FXbool deletePendingSelection(FXbool notify);
00239 protected:
00240   enum {
00241     MOUSE_NONE,                 // No mouse operation
00242     MOUSE_CHARS,                // Selecting characters
00243     MOUSE_WORDS,                // Selecting words
00244     MOUSE_LINES,                // Selecting lines
00245     MOUSE_SCROLL,               // Scrolling
00246     MOUSE_DRAG,                 // Dragging text
00247     MOUSE_TRYDRAG               // Tentative drag
00248     };
00249 protected:
00250   enum {
00251     STYLE_MASK      = 0x00FF,   // Mask color table
00252     STYLE_TEXT      = 0x0100,   // Draw some content
00253     STYLE_SELECTED  = 0x0200,   // Selected
00254     STYLE_CONTROL   = 0x0400,   // Control character
00255     STYLE_HILITE    = 0x0800,   // Highlighted
00256     STYLE_ACTIVE    = 0x1000    // Active
00257     };
00258 public:
00259   enum {
00260     STYLE_UNDERLINE = 0x0001,   
00261     STYLE_STRIKEOUT = 0x0002,   
00262     STYLE_BOLD      = 0x0004    
00263     };
00264 private:
00265   FXText(const FXText&);
00266   FXText& operator=(const FXText&);
00267 public:
00268   long onPaint(FXObject*,FXSelector,void*);
00269   long onBlink(FXObject*,FXSelector,void*);
00270   long onFlash(FXObject*,FXSelector,void*);
00271   long onFocusIn(FXObject*,FXSelector,void*);
00272   long onFocusOut(FXObject*,FXSelector,void*);
00273   long onMotion(FXObject*,FXSelector,void*);
00274   long onAutoScroll(FXObject*,FXSelector,void*);
00275   long onLeftBtnPress(FXObject*,FXSelector,void*);
00276   long onLeftBtnRelease(FXObject*,FXSelector,void*);
00277   long onMiddleBtnPress(FXObject*,FXSelector,void*);
00278   long onMiddleBtnRelease(FXObject*,FXSelector,void*);
00279   long onRightBtnPress(FXObject*,FXSelector,void*);
00280   long onRightBtnRelease(FXObject*,FXSelector,void*);
00281   long onKeyPress(FXObject*,FXSelector,void*);
00282   long onKeyRelease(FXObject*,FXSelector,void*);
00283   long onUngrabbed(FXObject*,FXSelector,void*);
00284   long onBeginDrag(FXObject*,FXSelector,void*);
00285   long onEndDrag(FXObject*,FXSelector,void*);
00286   long onDragged(FXObject*,FXSelector,void*);
00287   long onDNDEnter(FXObject*,FXSelector,void*);
00288   long onDNDLeave(FXObject*,FXSelector,void*);
00289   long onDNDMotion(FXObject*,FXSelector,void*);
00290   long onDNDDrop(FXObject*,FXSelector,void*);
00291   long onDNDRequest(FXObject*,FXSelector,void*);
00292   long onSelectionLost(FXObject*,FXSelector,void*);
00293   long onSelectionGained(FXObject*,FXSelector,void*);
00294   long onSelectionRequest(FXObject*,FXSelector,void* ptr);
00295   long onClipboardLost(FXObject*,FXSelector,void*);
00296   long onClipboardGained(FXObject*,FXSelector,void*);
00297   long onClipboardRequest(FXObject*,FXSelector,void*);
00298   long onCmdSetTip(FXObject*,FXSelector,void*);
00299   long onCmdGetTip(FXObject*,FXSelector,void*);
00300   long onCmdSetHelp(FXObject*,FXSelector,void*);
00301   long onCmdGetHelp(FXObject*,FXSelector,void*);
00302   long onQueryTip(FXObject*,FXSelector,void*);
00303   long onQueryHelp(FXObject*,FXSelector,void*);
00304   long onUpdIsEditable(FXObject*,FXSelector,void*);
00305   long onUpdHaveSelection(FXObject*,FXSelector,void*);
00306   long onUpdHaveEditableSelection(FXObject*,FXSelector,void*);
00307   long onIMEStart(FXObject*,FXSelector,void*);
00308 
00309   // Value access
00310   long onCmdSetStringValue(FXObject*,FXSelector,void*);
00311   long onCmdGetStringValue(FXObject*,FXSelector,void*);
00312 
00313   // Cursor movement
00314   long onCmdCursorTop(FXObject*,FXSelector,void*);
00315   long onCmdCursorBottom(FXObject*,FXSelector,void*);
00316   long onCmdCursorHome(FXObject*,FXSelector,void*);
00317   long onCmdCursorEnd(FXObject*,FXSelector,void*);
00318   long onCmdCursorRight(FXObject*,FXSelector,void*);
00319   long onCmdCursorLeft(FXObject*,FXSelector,void*);
00320   long onCmdCursorUp(FXObject*,FXSelector,void*);
00321   long onCmdCursorDown(FXObject*,FXSelector,void*);
00322   long onCmdCursorPageUp(FXObject*,FXSelector,void*);
00323   long onCmdCursorPageDown(FXObject*,FXSelector,void*);
00324   long onCmdCursorWordLeft(FXObject*,FXSelector,void*);
00325   long onCmdCursorWordRight(FXObject*,FXSelector,void*);
00326   long onCmdCursorSelStart(FXObject*,FXSelector,void*);
00327   long onCmdCursorSelEnd(FXObject*,FXSelector,void*);
00328 
00329   // Cursor drag movement
00330   long onCmdCursorShiftTop(FXObject*,FXSelector,void*);
00331   long onCmdCursorShiftBottom(FXObject*,FXSelector,void*);
00332   long onCmdCursorShiftHome(FXObject*,FXSelector,void*);
00333   long onCmdCursorShiftEnd(FXObject*,FXSelector,void*);
00334   long onCmdCursorShiftRight(FXObject*,FXSelector,void*);
00335   long onCmdCursorShiftLeft(FXObject*,FXSelector,void*);
00336   long onCmdCursorShiftUp(FXObject*,FXSelector,void*);
00337   long onCmdCursorShiftDown(FXObject*,FXSelector,void*);
00338   long onCmdCursorShiftPageUp(FXObject*,FXSelector,void*);
00339   long onCmdCursorShiftPageDown(FXObject*,FXSelector,void*);
00340   long onCmdCursorShiftWordLeft(FXObject*,FXSelector,void*);
00341   long onCmdCursorShiftWordRight(FXObject*,FXSelector,void*);
00342 
00343   // Positioning
00344   long onCmdScrollUp(FXObject*,FXSelector,void*);
00345   long onCmdScrollDown(FXObject*,FXSelector,void*);
00346   long onCmdScrollTop(FXObject*,FXSelector,void*);
00347   long onCmdScrollBottom(FXObject*,FXSelector,void*);
00348   long onCmdScrollCenter(FXObject*,FXSelector,void*);
00349 
00350   // Inserting
00351   long onCmdInsertString(FXObject*,FXSelector,void*);
00352   long onCmdInsertNewline(FXObject*,FXSelector,void*);
00353   long onCmdInsertNewlineOnly(FXObject*,FXSelector,void*);
00354   long onCmdInsertNewlineIndent(FXObject*,FXSelector,void*);
00355   long onCmdInsertTab(FXObject*,FXSelector,void*);
00356   long onCmdInsertHardTab(FXObject*,FXSelector,void*);
00357   long onCmdInsertSoftTab(FXObject*,FXSelector,void*);
00358 
00359   // Manipulation Selection
00360   long onCmdCutSel(FXObject*,FXSelector,void*);
00361   long onCmdCopySel(FXObject*,FXSelector,void*);
00362   long onCmdPasteSel(FXObject*,FXSelector,void*);
00363   long onCmdDeleteSel(FXObject*,FXSelector,void*);
00364   long onCmdReplaceSel(FXObject*,FXSelector,void*);
00365   long onCmdPasteMiddle(FXObject*,FXSelector,void*);
00366   long onCmdSelectChar(FXObject*,FXSelector,void*);
00367   long onCmdSelectWord(FXObject*,FXSelector,void*);
00368   long onCmdSelectLine(FXObject*,FXSelector,void*);
00369   long onCmdSelectMatching(FXObject*,FXSelector,void*);
00370   long onCmdSelectBlock(FXObject*,FXSelector,void*);
00371   long onCmdSelectAll(FXObject*,FXSelector,void*);
00372   long onCmdDeselectAll(FXObject*,FXSelector,void*);
00373 
00374   // Deletion
00375   long onCmdBackspaceChar(FXObject*,FXSelector,void*);
00376   long onCmdBackspaceWord(FXObject*,FXSelector,void*);
00377   long onCmdBackspaceBol(FXObject*,FXSelector,void*);
00378   long onCmdDeleteChar(FXObject*,FXSelector,void*);
00379   long onCmdDeleteWord(FXObject*,FXSelector,void*);
00380   long onCmdDeleteEol(FXObject*,FXSelector,void*);
00381   long onCmdDeleteAll(FXObject*,FXSelector,void*);
00382   long onCmdDeleteLine(FXObject*,FXSelector,void*);
00383 
00384   // Control commands
00385   long onCmdShiftText(FXObject*,FXSelector,void*);
00386   long onCmdChangeCase(FXObject*,FXSelector,void*);
00387   long onCmdBlockBeg(FXObject*,FXSelector,void*);
00388   long onCmdBlockEnd(FXObject*,FXSelector,void*);
00389   long onCmdGotoMatching(FXObject*,FXSelector,void*);
00390   long onCmdGotoSelected(FXObject*,FXSelector,void*);
00391   long onCmdCursorRow(FXObject*,FXSelector,void*);
00392   long onUpdCursorRow(FXObject*,FXSelector,void*);
00393   long onCmdCursorColumn(FXObject*,FXSelector,void*);
00394   long onUpdCursorColumn(FXObject*,FXSelector,void*);
00395   long onCmdGotoLine(FXObject*,FXSelector,void*);
00396   long onCmdSearch(FXObject*,FXSelector,void*);
00397   long onCmdReplace(FXObject*,FXSelector,void*);
00398   long onCmdSearchNext(FXObject*,FXSelector,void*);
00399   long onCmdSearchSel(FXObject*,FXSelector,void*);
00400   long onCmdToggleEditable(FXObject*,FXSelector,void*);
00401   long onUpdToggleEditable(FXObject*,FXSelector,void*);
00402   long onCmdToggleOverstrike(FXObject*,FXSelector,void*);
00403   long onUpdToggleOverstrike(FXObject*,FXSelector,void*);
00404 public:
00405   static const FXchar textDelimiters[];
00406 
00407 public:
00408 
00410   enum {
00411     SelectNone,         
00412     SelectChars,        
00413     SelectWords,        
00414     SelectRows,         
00415     SelectLines         
00416     };
00417 
00418 public:
00419 
00420   enum {
00421     ID_CURSOR_TOP=FXScrollArea::ID_LAST,
00422     ID_CURSOR_BOTTOM,
00423     ID_CURSOR_HOME,
00424     ID_CURSOR_END,
00425     ID_CURSOR_RIGHT,
00426     ID_CURSOR_LEFT,
00427     ID_CURSOR_UP,
00428     ID_CURSOR_DOWN,
00429     ID_CURSOR_PAGEUP,
00430     ID_CURSOR_PAGEDOWN,
00431     ID_CURSOR_WORD_LEFT,
00432     ID_CURSOR_WORD_RIGHT,
00433     ID_CURSOR_SEL_START,
00434     ID_CURSOR_SEL_END,
00435     ID_CURSOR_SHIFT_TOP,
00436     ID_CURSOR_SHIFT_BOTTOM,
00437     ID_CURSOR_SHIFT_HOME,
00438     ID_CURSOR_SHIFT_END,
00439     ID_CURSOR_SHIFT_UP,
00440     ID_CURSOR_SHIFT_DOWN,
00441     ID_CURSOR_SHIFT_LEFT,
00442     ID_CURSOR_SHIFT_RIGHT,
00443     ID_CURSOR_SHIFT_PAGEUP,
00444     ID_CURSOR_SHIFT_PAGEDOWN,
00445     ID_CURSOR_SHIFT_WORD_LEFT,
00446     ID_CURSOR_SHIFT_WORD_RIGHT,
00447     ID_SCROLL_UP,
00448     ID_SCROLL_DOWN,
00449     ID_SCROLL_TOP,
00450     ID_SCROLL_BOTTOM,
00451     ID_SCROLL_CENTER,
00452     ID_INSERT_STRING,
00453     ID_INSERT_NEWLINE,
00454     IN_INSERT_NEWLINE_ONLY,
00455     ID_INSERT_NEWLINE_INDENT,
00456     ID_INSERT_TAB,
00457     ID_INSERT_HARDTAB,
00458     ID_INSERT_SOFTTAB,
00459     ID_CUT_SEL,
00460     ID_COPY_SEL,
00461     ID_DELETE_SEL,
00462     ID_REPLACE_SEL,
00463     ID_PASTE_SEL,
00464     ID_PASTE_MIDDLE,
00465     ID_SELECT_CHAR,
00466     ID_SELECT_WORD,
00467     ID_SELECT_LINE,
00468     ID_SELECT_ALL,
00469     ID_SELECT_MATCHING,
00470     ID_SELECT_BRACE,
00471     ID_SELECT_BRACK,
00472     ID_SELECT_PAREN,
00473     ID_SELECT_ANG,
00474     ID_DESELECT_ALL,
00475     ID_BACKSPACE_CHAR,
00476     ID_BACKSPACE_WORD,
00477     ID_BACKSPACE_BOL,
00478     ID_DELETE_CHAR,
00479     ID_DELETE_WORD,
00480     ID_DELETE_EOL,
00481     ID_DELETE_ALL,
00482     ID_DELETE_LINE,
00483     ID_TOGGLE_EDITABLE,
00484     ID_TOGGLE_OVERSTRIKE,
00485     ID_CURSOR_ROW,
00486     ID_CURSOR_COLUMN,
00487     ID_CLEAN_INDENT,
00488     ID_SHIFT_LEFT,
00489     ID_SHIFT_RIGHT,
00490     ID_SHIFT_TABLEFT,
00491     ID_SHIFT_TABRIGHT,
00492     ID_UPPER_CASE,
00493     ID_LOWER_CASE,
00494     ID_GOTO_MATCHING,
00495     ID_GOTO_SELECTED,
00496     ID_GOTO_LINE,
00497     ID_SEARCH_FORW_SEL,
00498     ID_SEARCH_BACK_SEL,
00499     ID_SEARCH_FORW,
00500     ID_SEARCH_BACK,
00501     ID_SEARCH,
00502     ID_REPLACE,
00503     ID_LEFT_BRACE,
00504     ID_LEFT_BRACK,
00505     ID_LEFT_PAREN,
00506     ID_LEFT_ANG,
00507     ID_RIGHT_BRACE,
00508     ID_RIGHT_BRACK,
00509     ID_RIGHT_PAREN,
00510     ID_RIGHT_ANG,
00511     ID_BLINK,
00512     ID_FLASH,
00513     ID_LAST
00514     };
00515 
00516 public:
00517 
00519   FXText(FXComposite *p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=3,FXint pr=3,FXint pt=2,FXint pb=2);
00520 
00522   virtual void create();
00523 
00525   virtual void detach();
00526 
00528   virtual void layout();
00529 
00531   virtual FXint getDefaultWidth();
00532 
00534   virtual FXint getDefaultHeight();
00535 
00537   virtual void enable();
00538 
00540   virtual void disable();
00541 
00543   virtual void recalc();
00544 
00546   virtual FXint getVisibleX() const;
00547 
00549   virtual FXint getVisibleY() const;
00550 
00552   virtual FXint getVisibleWidth() const;
00553 
00555   virtual FXint getVisibleHeight() const;
00556 
00558   virtual FXint getContentWidth();
00559 
00561   virtual FXint getContentHeight();
00562 
00564   virtual FXbool canFocus() const;
00565 
00567   virtual void setFocus();
00568 
00570   virtual void killFocus();
00571 
00573   void setMarginTop(FXint pt);
00574 
00576   FXint getMarginTop() const { return margintop; }
00577 
00579   void setMarginBottom(FXint pb);
00580 
00582   FXint getMarginBottom() const { return marginbottom; }
00583 
00585   void setMarginLeft(FXint pl);
00586 
00588   FXint getMarginLeft() const { return marginleft; }
00589 
00591   void setMarginRight(FXint pr);
00592 
00594   FXint getMarginRight() const { return marginright; }
00595 
00597   FXint getWrapColumns() const { return wrapcolumns; }
00598 
00600   void setWrapColumns(FXint cols);
00601 
00603   FXint getTabColumns() const { return tabcolumns; }
00604 
00606   void setTabColumns(FXint cols);
00607 
00609   FXint getBarColumns() const { return barcolumns; }
00610 
00612   void setBarColumns(FXint cols);
00613 
00615   FXbool isModified() const { return modified; }
00616 
00618   void setModified(FXbool mod=true){ modified=mod; }
00619 
00621   void setEditable(FXbool edit=true);
00622 
00624   FXbool isEditable() const;
00625 
00627   void setOverstrike(FXbool over=true);
00628 
00630   FXbool isOverstrike() const;
00631 
00633   void setStyled(FXbool styled=true);
00634 
00636   FXbool isStyled() const { return (sbuffer!=NULL); }
00637 
00639   void setDelimiters(const FXchar* delims=textDelimiters){ delimiters=delims; }
00640 
00642   const FXchar* getDelimiters() const { return delimiters; }
00643 
00645   void setFont(FXFont* fnt);
00646 
00648   FXFont* getFont() const { return font; }
00649 
00651   void setTextColor(FXColor clr);
00652 
00654   FXColor getTextColor() const { return textColor; }
00655 
00657   void setSelBackColor(FXColor clr);
00658 
00660   FXColor getSelBackColor() const { return selbackColor; }
00661 
00663   void setSelTextColor(FXColor clr);
00664 
00666   FXColor getSelTextColor() const { return seltextColor; }
00667 
00669   void setHiliteTextColor(FXColor clr);
00670 
00672   FXColor getHiliteTextColor() const { return hilitetextColor; }
00673 
00675   void setHiliteBackColor(FXColor clr);
00676 
00678   FXColor getHiliteBackColor() const { return hilitebackColor; }
00679 
00681   void setActiveBackColor(FXColor clr);
00682 
00684   FXColor getActiveBackColor() const { return activebackColor; }
00685 
00687   void setCursorColor(FXColor clr);
00688 
00690   FXColor getCursorColor() const { return cursorColor; }
00691 
00693   void setNumberColor(FXColor clr);
00694 
00696   FXColor getNumberColor() const { return numberColor; }
00697 
00699   void setBarColor(FXColor clr);
00700 
00702   FXColor getBarColor() const { return barColor; }
00703 
00705   void setHelpText(const FXString& text){ help=text; }
00706 
00708   FXString getHelpText() const { return help; }
00709 
00711   void setTipText(const FXString& text){ tip=text; }
00712 
00714   FXString getTipText() const { return tip; }
00715 
00717   FXint getByte(FXint pos) const;
00718 
00720   FXwchar getChar(FXint pos) const;
00721 
00723   FXint getCharLen(FXint pos) const;
00724 
00726   FXint getStyle(FXint pos) const;
00727 
00729   FXint getLength() const { return length; }
00730 
00732   FXint getNumRows() const { return nrows; }
00733 
00735   FXString getText() const;
00736 
00738   FXString getSelectedText() const;
00739 
00741   void getText(FXchar* text,FXint n) const;
00742   void getText(FXString& text) const;
00743 
00745   virtual void setText(const FXchar* text,FXint n,FXbool notify=false);
00746   virtual void setText(const FXString& text,FXbool notify=false);
00747 
00749   virtual void setStyledText(const FXchar* text,FXint n,FXint style=0,FXbool notify=false);
00750   virtual void setStyledText(const FXString& text,FXint style=0,FXbool notify=false);
00751 
00753   virtual void replaceText(FXint pos,FXint m,const FXchar *text,FXint n,FXbool notify=false);
00754   virtual void replaceText(FXint pos,FXint m,const FXString& text,FXbool notify=false);
00755 
00757   virtual void replaceStyledText(FXint pos,FXint m,const FXchar *text,FXint n,FXint style=0,FXbool notify=false);
00758   virtual void replaceStyledText(FXint pos,FXint m,const FXString& text,FXint style=0,FXbool notify=false);
00759 
00761   virtual void appendText(const FXchar *text,FXint n,FXbool notify=false);
00762   virtual void appendText(const FXString& text,FXbool notify=false);
00763 
00765   virtual void appendStyledText(const FXchar *text,FXint n,FXint style=0,FXbool notify=false);
00766   virtual void appendStyledText(const FXString& text,FXint style=0,FXbool notify=false);
00767 
00769   virtual void insertText(FXint pos,const FXchar *text,FXint n,FXbool notify=false);
00770   virtual void insertText(FXint pos,const FXString& text,FXbool notify=false);
00771 
00773   virtual void insertStyledText(FXint pos,const FXchar *text,FXint n,FXint style=0,FXbool notify=false);
00774   virtual void insertStyledText(FXint pos,const FXString& text,FXint style=0,FXbool notify=false);
00775 
00777   virtual void removeText(FXint pos,FXint n,FXbool notify=false);
00778 
00780   virtual void changeStyle(FXint pos,FXint n,FXint style);
00781 
00783   virtual void changeStyle(FXint pos,const FXchar* style,FXint n);
00784   virtual void changeStyle(FXint pos,const FXString& style);
00785 
00787   void extractText(FXchar *text,FXint pos,FXint n) const;
00788   void extractText(FXString& text,FXint pos,FXint n) const;
00789 
00791   void extractStyle(FXchar *style,FXint pos,FXint n) const;
00792   void extractStyle(FXString& text,FXint pos,FXint n) const;
00793 
00795   FXint shiftText(FXint start,FXint end,FXint amount,FXbool notify=false);
00796 
00811   FXbool findText(const FXString& string,FXint* beg=NULL,FXint* end=NULL,FXint start=0,FXuint flags=SEARCH_FORWARD|SEARCH_WRAP|SEARCH_EXACT,FXint npar=1);
00812 
00814   FXint getPosContaining(FXint x,FXint y) const;
00815 
00817   FXint getPosAt(FXint x,FXint y) const;
00818 
00820   FXint getYOfPos(FXint pos) const;
00821 
00823   FXint getXOfPos(FXint pos) const;
00824 
00826   FXint countRows(FXint start,FXint end) const;
00827 
00829   FXint countCols(FXint start,FXint end) const;
00830 
00832   FXint countLines(FXint start,FXint end) const;
00833 
00835   FXint lineStart(FXint pos) const;
00836 
00838   FXint lineEnd(FXint pos) const;
00839 
00841   FXint nextLine(FXint pos,FXint nl=1) const;
00842 
00844   FXint prevLine(FXint pos,FXint nl=1) const;
00845 
00847   FXint rowStart(FXint pos) const;
00848 
00850   FXint rowEnd(FXint pos) const;
00851 
00853   FXint nextRow(FXint pos,FXint nr=1) const;
00854 
00856   FXint prevRow(FXint pos,FXint nr=1) const;
00857 
00859   FXint leftWord(FXint pos) const;
00860 
00862   FXint rightWord(FXint pos) const;
00863 
00865   FXint wordStart(FXint pos) const;
00866 
00868   FXint wordEnd(FXint pos) const;
00869 
00871   FXint validPos(FXint pos) const;
00872 
00874   FXint dec(FXint pos) const;
00875 
00877   FXint inc(FXint pos) const;
00878 
00880   void setTopLine(FXint pos);
00881 
00883   FXint getTopLine() const;
00884 
00886   void setBottomLine(FXint pos);
00887 
00889   FXint getBottomLine() const;
00890 
00892   void setCenterLine(FXint pos);
00893 
00895   FXbool selectAll(FXbool notify=false);
00896 
00898   FXbool setSelection(FXint pos,FXint len,FXbool notify=false);
00899 
00901   FXbool extendSelection(FXint pos,FXuint select=SelectChars,FXbool notify=false);
00902 
00904   FXbool copySelection();
00905 
00907   FXbool cutSelection(FXbool notify=false);
00908 
00910   FXbool deleteSelection(FXbool notify=false);
00911 
00913   FXbool pasteSelection(FXbool notify=false);
00914 
00916   FXbool pasteClipboard(FXbool notify=false);
00917 
00919   FXbool replaceSelection(const FXchar *text,FXint n,FXbool notify=false);
00920 
00922   FXbool replaceSelection(const FXString& text,FXbool notify=false);
00923 
00925   FXbool killSelection(FXbool notify=false);
00926 
00928   FXbool isPosSelected(FXint pos) const;
00929 
00931   FXbool isPosVisible(FXint pos) const;
00932 
00934   void makePositionVisible(FXint pos);
00935 
00937   FXbool setHighlight(FXint start,FXint len);
00938 
00940   FXbool killHighlight();
00941 
00943   virtual void setCursorPos(FXint pos,FXbool notify=false);
00944 
00946   void setCursorRow(FXint row,FXbool notify=false);
00947 
00949   FXint getCursorRow() const { return cursorrow; }
00950 
00952   void setCursorColumn(FXint col,FXbool notify=false);
00953 
00955   FXint getCursorColumn() const { return cursorcol; }
00956 
00958   FXint getCursorPos() const { return cursorpos; }
00959 
00961   void setAnchorPos(FXint pos);
00962 
00964   FXint getAnchorPos() const { return anchorpos; }
00965 
00967   FXint getSelStartPos() const { return selstartpos; }
00968 
00970   FXint getSelEndPos() const { return selendpos; }
00971 
00973   void setTextStyle(FXuint style);
00974 
00976   FXuint getTextStyle() const;
00977 
00983   void setVisibleRows(FXint rows);
00984 
00986   FXint getVisibleRows() const { return vrows; }
00987 
00993   void setVisibleColumns(FXint cols);
00994 
00996   FXint getVisibleColumns() const { return vcols; }
00997 
01002   void setHiliteMatchTime(FXTime t){ matchtime=t; }
01003 
01007   FXTime getHiliteMatchTime() const { return matchtime; }
01008 
01016   void setHiliteStyles(FXHiliteStyle* styles);
01017 
01021   FXHiliteStyle* getHiliteStyles() const { return hilitestyles; }
01022 
01024   virtual void save(FXStream& store) const;
01025 
01027   virtual void load(FXStream& store);
01028 
01030   virtual ~FXText();
01031   };
01032 
01033 
01034 }
01035 
01036 #endif

Copyright © 1997-2011 Jeroen van der Zijp