library: libGui #include "TGTextEntry.h"

# TGTextEntry

class description - source file - inheritance tree (.ps)

## class TGTextEntry : public TGFrame, public TGWidget

| Inheritance Chart:

`TObject`

<-

`TGObject`

<-

`TGWindow`

`TQObject`

<-

`TGFrame`

`TGWidget`

<-

`TGTextEntry`

<-

`TGNumberEntryField` |

        protected:

                        void CopyText() const
                virtual void DoRedraw()
                       Int_t GetCharacterIndex(Int_t xcoord)
          static const TGGC& GetDefaultSelectedBackgroundGC() const
          static const TGGC& GetDefaultSelectedGC() const
                virtual void Init()
              virtual Bool_t IsCursorOutOfFrame()
                        void Paste()
                virtual void PastePrimary(Window_t wid, Atom_t property, Bool_t del)
                virtual void ScrollByChar()
                virtual void UpdateOffset()

        public:

                                   TGTextEntry(const TGWindow* p, TGTextBuffer* text, Int_t id = -1, GContext_t norm = GetDefaultGC()(), FontStruct_t font = GetDefaultFontStruct(), UInt_t option = kSunkenFrame|kDoubleBorder, Pixel_t back = GetWhitePixel())
                                   TGTextEntry(const TGWindow* parent, const char* text, Int_t id = -1)
                                   TGTextEntry(const TString& contents, const TGWindow* parent, Int_t id = -1)
                                   TGTextEntry(const TGTextEntry&)
                           virtual ~TGTextEntry()
                      virtual void AppendText(const char* text)
                              void Backspace()
                    static TClass* Class()
                      virtual void Clear(Option_t* option)
                              void CursorLeft(Bool_t mark = kFALSE, Int_t steps = 1)
                      virtual void CursorOutDown()
                      virtual void CursorOutLeft()
                      virtual void CursorOutRight()
                      virtual void CursorOutUp()
                              void CursorRight(Bool_t mark = kFALSE, Int_t steps = 1)
                              void CursorWordBackward(Bool_t mark = kFALSE)
                              void CursorWordForward(Bool_t mark = kFALSE)
                              void Cut()
                              void Del()
                              void Deselect()
                      virtual void DoubleClicked()
                      virtual void DrawBorder()
                              void End(Bool_t mark = kFALSE)
                ETextJustification GetAlignment() const
                     TGTextBuffer* GetBuffer() const
                             Int_t GetCursorPosition() const
               static FontStruct_t GetDefaultFontStruct()
                static const TGGC& GetDefaultGC() const
                           TString GetDisplayText() const
            TGTextEntry::EEchoMode GetEchoMode() const
          TGTextEntry::EInsertMode GetInsertMode() const
                           TString GetMarkedText() const
                             Int_t GetMaxLength() const
                       const char* GetText() const
                    virtual Bool_t HandleButton(Event_t* event)
                    virtual Bool_t HandleConfigureNotify(Event_t* event)
                    virtual Bool_t HandleCrossing(Event_t* event)
                    virtual Bool_t HandleDoubleClick(Event_t* event)
                    virtual Bool_t HandleFocusChange(Event_t* event)
                    virtual Bool_t HandleKey(Event_t* event)
                    virtual Bool_t HandleMotion(Event_t* event)
                    virtual Bool_t HandleSelection(Event_t* event)
                    virtual Bool_t HandleSelectionRequest(Event_t* event)
                    virtual Bool_t HandleTimer(TTimer* t)
                            Bool_t HasMarkedText() const
                              void Home(Bool_t mark = kFALSE)
                      virtual void Insert(const char*)
                      virtual void InsertText(const char* text, Int_t pos)
                   virtual TClass* IsA() const
                            Bool_t IsEdited() const
                            Bool_t IsFrameDrawn() const
                      virtual void Layout()
                              void MarkWord(Int_t pos)
                             Int_t MaxMark() const
                             Int_t MinMark() const
                              void NewMark(Int_t pos)
                              void Remove()
                      virtual void RemoveText(Int_t start, Int_t end)
                      virtual void ReturnPressed()
                      virtual void SavePrimitive(ofstream& out, Option_t* option)
                              void SelectAll()
                      virtual void SetAlignment(ETextJustification mode = kTextLeft)
                      virtual void SetCursorPosition(Int_t pos)
                      virtual void SetEchoMode(TGTextEntry::EEchoMode mode = kNormal)
                              void SetEdited(Bool_t flag = kTRUE)
                              void SetEnabled(Bool_t flag = kTRUE)
                      virtual void SetFocus()
                      virtual void SetFont(FontStruct_t font)
                              void SetFont(const char* fontName)
                      virtual void SetFrameDrawn(Bool_t flag = kTRUE)
                      virtual void SetInsertMode(TGTextEntry::EInsertMode mode = kInsert)
                      virtual void SetMaxLength(Int_t maxlen)
                      virtual void SetState(Bool_t state)
                      virtual void SetText(const char* text)
                      virtual void SetToolTipText(const char* text, Long_t delayms = 1000)
                      virtual void ShowMembers(TMemberInspector& insp, char* parent)
                      virtual void Streamer(TBuffer& b)
                              void StreamerNVirtual(TBuffer& b)
                      virtual void TabPressed()
                      virtual void TextChanged(const char* text = "0")

### Data Members

        protected:

                     TGTextBuffer* fText                          text buffer
                             Int_t fStartX                        selection begin in pixels
                             Int_t fEndX                          selection end in pixels
                             Int_t fStartIX                       selection begin in characters
                             Int_t fEndIX                         selection end in characters
                            Bool_t fSelectionOn                   selection status (on/off)
                             Int_t fOffset                        start position of text (in pixels)
                             Int_t fCursorX                       cursor position in pixels
                             Int_t fCursorIX                      cursor position in characters
                            Bool_t fCursorOn                      cursor status (on/off)
                      FontStruct_t fFontStruct                    text font
                              TGGC fNormGC                        normal drawing context
                              TGGC fSelGC                         selected text drawing context
                        GContext_t fSelbackGC                     selected background drawing context
                            Atom_t fClipboard                     clipboard property
                      TBlinkTimer* fCurBlink                      cursor blink timer
                        TGToolTip* fTip                           associated tooltip
                             Int_t fMaxLen                        maximum length of text
                            Bool_t fEdited                        kFALSE, if the line edit's contents have not been changed since the construction
                            Bool_t fFrameDrawn                    kTRUE draw itself inside a two-pixel frame, kFALSE draw without any frame
            TGTextEntry::EEchoMode fEchoMode                      echo mode (kNormal(default), kNoEcho, kPassword)
          TGTextEntry::EInsertMode fInsertMode                    text insertion mode (kInsert(default) , kReplace)
                ETextJustification fAlignment                     alignment mode available (kTextLeft(default), kTextRight, kTextCenterX defined in TGWidget.h)
                   static TString* fgClipboardText                application clipboard text
              static const TGFont* fgDefaultFont
                static const TGGC* fgDefaultSelectedGC
                static const TGGC* fgDefaultSelectedBackgroundGC
                static const TGGC* fgDefaultGC

        public:

            static const TGTextEntry::EEchoMode kNormal
            static const TGTextEntry::EEchoMode kNoEcho
            static const TGTextEntry::EEchoMode kPassword
          static const TGTextEntry::EInsertMode kInsert
          static const TGTextEntry::EInsertMode kReplace

## Class Description

     TGTextEntry

     A TGTextEntry is a one line text input widget.

     Changing text in the text entry widget will generate the event:
     kC_TEXTENTRY, kTE_TEXTCHANGED, widget id, 0.
     Hitting the enter key will generate:
     kC_TEXTENTRY, kTE_ENTER, widget id, 0.
     Hitting the tab key will generate:
     kC_TEXTENTRY, kTE_TAB, widget id, 0.

     This widget has the behaviour e.g. of the "Location" field in
     netscape. That includes handling Control/Shift key modifiers and
     scrolling the text.

     enum TGTextEntry::EEchoMode

     This enum type describes the ways in which TGTextEntry can display
     its contents. The currently defined values are:

/*

- kNormal - display characters as they are entered. This is the default.
- kNoEcho - do not display anything.
- kPassword - display asterisks instead of the characters actually entered.

*/

     See also SetEchoMode(), GetEchoMode().

     enum TGTextEntry::EInsertMode

     This enum type describes the way how typed characters are
     inserted in the text entry. This mode is switched by "Insert" key.

/*

- kInsert - typed character are inserted (cursor has shape of short line).
- kReplace - typed characters substitute already typed ones (cursor has the shape of filled rectangle).

*/

     enum TGWidget::ETextJustification

     This enum type (defined in TGWidget.h) describes the text alignment modes.
     These modes are valid untill text fits the frame width

/*

- kTextLeft - left-side text alignment
- kTextRight - right-side text alignment
- kTextCenterX - center text alignment

*/

     The key press event handler converts a key press to some line editor action.
     Here are the default key bindings:

/*

- Left Arrow Move the cursor one character leftwards. Scroll the text when cursor is out of frame.
- Right Arrow Move the cursor one character rightwards Scroll the text when cursor is out of frame.
- Backspace Deletes the character on the left side of the text cursor and moves the cursor one position to the left. If a text has been marked by the user (e.g. by clicking and dragging) the cursor will be put at the beginning of the marked text and the marked text will be removed.
- Home Moves the text cursor to the left end of the line. If mark is TRUE text will be marked towards the first position, if not any marked text will be unmarked if the cursor is moved.
- End Moves the text cursor to the right end of the line. If mark is TRUE text will be marked towards the last position, if not any marked text will be unmarked if the cursor is moved.
- Delete Deletes the character on the right side of the text cursor. If a text has been marked by the user (e.g. by clicking and dragging) the cursor will be put at the beginning of the marked text and the marked text will be removed.
- Insert Switches character insert mode.
- Shift - Left Arrow Mark text one character leftwards
- Shift - Right Arrow Mark text one character rightwards
- Control - Left Arrow Move the cursor one word leftwards
- Control - Right Arrow Move the cursor one word rightwards.
- Control - Shift - Left Arrow Mark text one word leftwards
- Control - Shift - Right Arrow Mark text one word rightwards
- Control-A Move the cursor to the beginning of the line
- Control-B Move the cursor one character leftwards
- Control-C Copy the marked text to the clipboard.
- Control-D Delete the character to the right of the cursor
- Control-E Move the cursor to the end of the line
- Control-F Move the cursor one character rightwards
- Control-H Delete the character to the left of the cursor
- Control-K Delete marked text if any or delete all characters to the right of the cursor
- Control-U Delete all characters on the line
- Control-V Paste the clipboard text into line edit.
- Control-X Cut the marked text, copy to clipboard.
- Control-Y Paste the clipboard text into line edit.

All other keys with valid ASCII codes insert themselves into the line. */

TGTextEntry(const TGWindow *p, TGTextBuffer *text, Int_t id, GContext_t norm, FontStruct_t font, UInt_t options, ULong_t back) : TGFrame(p, 1, 1, options | kOwnBackground, back)

     Create a text entry widget. It will adopt the TGTextBuffer object
     (i.e. the text buffer will be deleted by the text entry widget).

TGTextEntry(const TGWindow *parent, const char *text, Int_t id) : TGFrame(parent, 1, 1, kSunkenFrame | kDoubleBorder | kOwnBackground, fgWhitePixel)

     Simple text entry constructor.

TGTextEntry(const TString &contents, const TGWindow *parent, Int_t id) : TGFrame(parent, 1, 1, kSunkenFrame | kDoubleBorder | kOwnBackground, fgWhitePixel)

     Simple test entry constructor. Notice TString argument comes before the
     parent argument (to make this ctor different from the first one taking a
     const char*).

~TGTextEntry()

     Delete a text entry widget.

void Init()

     Do default initialization.

void ReturnPressed()

     This signal is emitted when the return or enter key is pressed.

void TabPressed()

     This signal is emitted when the <TAB> key is pressed.

void TextChanged(const char *)

     This signal is emitted every time the text has changed.

void CursorOutLeft()

     This signal is emitted when cursor is going out of left side.

void CursorOutRight()

     This signal is emitted when cursor is going out of right side.

void CursorOutUp()

     This signal is emitted when cursor is going out of upper side.

void CursorOutDown()

     This signal is emitted when cursor is going out of bottom side.

void DoubleClicked()

     This signal is emitted when widget is double clicked.

TString GetDisplayText() const

     Returns the text that's currently displayed.  This is normally
     the same as GetText(), but can be e.g.
     "*****" if EEchoMode is kPassword or
     ""      if it is kNoEcho.

void SetFont(FontStruct_t font)

     Changes text entry font.

void SetFont(const char *fontName)

     Changes text entry font specified by name.

void SetState(Bool_t state)

     Set state of widget. If kTRUE=enabled, kFALSE=disabled.

Int_t GetCharacterIndex(Int_t xcoord)

     Returns the index of the character to whose left edge goalx is closest.

void SetFrameDrawn(Bool_t enable)

     Sets the text entry to draw itself inside a two-pixel frame if
     enable is kTRUE, and to draw itself without any frame if enable is
     kFALSE. The default is kTRUE.

void SetAlignment(ETextJustification mode)

     Sets the alignment of the text entry.
     Possible values are kTextLeft(default), kTextRight, kTextCenterX.
     See also GetAlignment().

void SetInsertMode(EInsertMode mode)

     Sets the mode how characters are entered to the text entry.

void SetText(const char *text)

     Sets text entry to text, clears the selection and moves
     the cursor to the end of the line.
     If necessary the text is truncated to fit MaxLength().
     See also  GetText().

void SetMaxLength(Int_t maxlen)

     Set the maximum length of the text in the editor.  If the text is
     currently too long, it is chopped off at the limit. Any marked text will
     be unmarked.  The cursor position is set to 0 and the first part of the
     string is shown.   The range  of maxlen  is (0,255)
     See  also GetMaxLength().

void SetEchoMode(EEchoMode mode)

     The echo modes available are:

- kNormal - display characters as they are entered. This is the default.
- kNoEcho - do not display anything.
- kPassword - display asterisks instead of the characters actually entered.

     It is always possible to cut and paste any marked text;  only the widget's own
     display is affected.
     See also GetEchoMode(), GetDisplayText().

TString GetMarkedText() const

     Returns the text marked by the user (e.g. by clicking and
     dragging), or zero if no text is marked.
     See also HasMarkedText().

void NewMark(Int_t newPos)

     New character mark at position pos.
     See also SetCursorPosition().

void SetCursorPosition(Int_t newPos)

     Set the cursor position to newPos.
     See also NewMark().

void MarkWord(Int_t pos)

     Marks the word nearest to cursor position.
     See also HandleDoubleClick().

void Insert(const char *newText)

     Removes any currently selected text, inserts newText,
     sets it as the new contents of the text entry.

void CursorRight(Bool_t mark, Int_t steps)

     Moves the cursor rightwards one or more characters.
     See also CursorLeft().

void CursorLeft(Bool_t mark, Int_t steps)

     Moves the cursor leftwards one or more characters.
     See also CursorRight().

void CursorWordForward(Bool_t mark)

     Moves the cursor one word to the right.  If mark is kTRUE, the text
     is marked.
     See also CursorWordBackward().

void CursorWordBackward(Bool_t mark)

     Moves the cursor one word to the left.  If mark is kTRUE, the text
     is marked.
     See also CursorWordForward().

void Backspace()

     Deletes the character on the left side of the text cursor and moves the
     cursor one position to the left. If a text has been marked by the user
     (e.g. by clicking and dragging) the cursor will be put at the beginning
     of the marked text and the marked text will be removed.
     See also  Del().

void Del()

     Deletes the character on the right side of the text cursor. If a text
     has been marked by the user (e.g. by clicking and dragging) the cursor
     will be put at the beginning of the marked text and the marked text will
     be removed.
     See also Backspace().

void Remove()

     Deletes all characters on the right side of the cursor.
     See also Del() Backspace().

void CopyText() const

     Copies the marked text to the clipboard, if there is any and
     GetEchoMode() is kNormal.
     See also  Cut() Paste().

void Paste()

     Inserts text at the cursor position, deleting any
     previous marked text.
     See also CopyText() Cut().

void Cut()

     Copies the marked text to the clipboard and deletes it, if there is any.
     See also CopyText() Paste().

void Clear(Option_t *)

     Clears up the text entry.

void Home(Bool_t mark)

     Moves the text cursor to the left end of the line. If mark is kTRUE text
     will be marked towards the first position, if not any marked text will
     be unmarked if the cursor is moved.
     See also End().

void End(Bool_t mark)

     Moves the text cursor to the right end of the line. If mark is kTRUE text
     will be marked towards the last position, if not any marked text will
     be unmarked if the cursor is moved.
     See also Home().

void SelectAll()

     Selects all text (i.e. marks it) and moves the cursor to the
     end. Useful when a default value has been inserted. If the user
     types before clicking on the widget the selected text will be
     erased.

void Deselect()

     Deselects all text (i.e. removes marking) and leaves the cursor at the
     current position.

void DrawBorder()

     Draw the border of the text entry widget.

void DoRedraw()

     Draw the text entry widget.

Bool_t HandleKey(Event_t* event)

     The key press event handler converts a key press to some line editor
     action. Here are the default key bindings:

- Left Arrow Move the cursor one character leftwards. Scroll the text when cursor is out of frame.
- Right Arrow Move the cursor one character rightwards Scroll the text when cursor is out of frame.
- Backspace Deletes the character on the left side of the text cursor and moves the cursor one position to the left. If a text has been marked by the user (e.g. by clicking and dragging) the cursor will be put at the beginning of the marked text and the marked text will be removed.
- Home Moves the text cursor to the left end of the line. If mark is TRUE text will be marked towards the first position, if not any marked text will be unmarked if the cursor is moved.
- End Moves the text cursor to the right end of the line. If mark is TRUE text will be marked towards the last position, if not any marked text will be unmarked if the cursor is moved.
- Delete Deletes the character on the right side of the text cursor. If a text has been marked by the user (e.g. by clicking and dragging) the cursor will be put at the beginning of the marked text and the marked text will be removed.
- Insert Switches character insert mode.
- Shift - Left Arrow Mark text one character leftwards
- Shift - Right Arrow Mark text one character rightwards
- Control - Left Arrow Move the cursor one word leftwards
- Control - Right Arrow Move the cursor one word rightwards.
- Control - Shift - Left Arrow Mark text one word leftwards
- Control - Shift - Right Arrow Mark text one word rightwards
- Control-A Move the cursor to the beginning of the line
- Control-B Move the cursor one character leftwards
- Control-C Copy the marked text to the clipboard.
- Control-D Delete the character to the right of the cursor
- Control-E Move the cursor to the end of the line
- Control-F Move the cursor one character rightwards
- Control-H Delete the character to the left of the cursor
- Control-K Delete marked text if any or delete all characters to the right of the cursor
- Control-U Delete all characters on the line
- Control-V Paste the clipboard text into line edit.
- Control-X Cut the marked text, copy to clipboard.
- Control-Y Paste the clipboard text into line edit.

      All other keys with valid ASCII codes insert themselves into the line.

Bool_t HandleButton(Event_t *event)

     Handle mouse button event in text entry widget.

Bool_t HandleCrossing(Event_t *event)

     Handle mouse crossing event.

Bool_t HandleMotion(Event_t *event)

     Handle mouse motion event in the text entry widget.

Bool_t HandleDoubleClick(Event_t *event)

     Handle mouse double click event in the text entry widget.

Bool_t HandleConfigureNotify(Event_t* event)

     Handles resize events for this widget.

Bool_t HandleFocusChange(Event_t *event)

     Handle focus change event in text entry widget.

Bool_t HandleSelection(Event_t *event)

     Handle text selection event.

Bool_t HandleSelectionRequest(Event_t *event)

     Handle request to send current clipboard contents to requestor window.

void PastePrimary(Window_t wid, Atom_t property, Bool_t del)

     Paste text from selection (either primary or cut buffer) into
     text entry widget.

Bool_t HandleTimer(TTimer *)

     Handle cursor blink timer.

Bool_t IsCursorOutOfFrame()

     Returns kTRUE if cursor is out of frame.

void ScrollByChar()

     Shift position of cursor by one character.

void UpdateOffset()

     Updates start text offset according GetAlignment() mode,
     if cursor is out of frame => scroll the text.
     See also SetAlignment() and ScrollByChar().

void SetToolTipText(const char *text, Long_t delayms)

     Set tool tip text associated with this text entry. The delay is in
     milliseconds (minimum 250). To remove tool tip call method with
     text = 0.

void InsertText(const char *text, Int_t pos)

     Inserts text at position pos, clears the selection and moves
     the cursor to the end of the line.
     If necessary the text is truncated to fit MaxLength().
     See also GetText(), SetText(), AppendText(), RemoveText().

void AppendText(const char *text)

     Appends text to the end of text entry, clears the selection
     and moves the cursor to the end of the line.
     If necessary the text is truncated to fit MaxLength().
     See also GetText(), InsertText(), SetText(), RemoveText().

void RemoveText(Int_t start, Int_t end)

     Removes text at the range, clears the selection and moves
     the cursor to the end of the line.
     See also GetText(), InsertText(), SetText(), AppendText().

FontStruct_t GetDefaultFontStruct()

const TGGC& GetDefaultGC()

const TGGC& GetDefaultSelectedGC()

const TGGC& GetDefaultSelectedBackgroundGC()

void SavePrimitive(ofstream &out, Option_t *option)

     Save a text entry widget as a C++ statement(s) on output stream out

### Inline Functions

                  ETextJustification GetAlignment() const
                       TGTextBuffer* GetBuffer() const
                               Int_t GetCursorPosition() const
              TGTextEntry::EEchoMode GetEchoMode() const
            TGTextEntry::EInsertMode GetInsertMode() const
                               Int_t GetMaxLength() const
                         const char* GetText() const
                              Bool_t HasMarkedText() const
                              Bool_t IsFrameDrawn() const
                              Bool_t IsEdited() const
                                void Layout()
                               Int_t MaxMark() const
                               Int_t MinMark() const
                                void SetEdited(Bool_t flag = kTRUE)
                                void SetEnabled(Bool_t flag = kTRUE)
                                void SetFocus()
                             TClass* Class()
                             TClass* IsA() const
                                void ShowMembers(TMemberInspector& insp, char* parent)
                                void Streamer(TBuffer& b)
                                void StreamerNVirtual(TBuffer& b)
                         TGTextEntry TGTextEntry(const TGTextEntry&)

Author: Fons Rademakers 08/01/98
Last update: root/gui:$Name: $:$Id: TGTextEntry.cxx,v 1.24 2004/07/06 13:23:27 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *