45#include "RConfigure.h"
49 "Text files",
"*.txt",
61class TGTextEditHist :
public TList {
65 virtual ~TGTextEditHist() {
Delete(); }
79class TGTextEditCommand :
public TObject {
85 TGTextEditCommand(
TGTextEdit *te) : fEdit(te) {
93class TInsCharCom :
public TGTextEditCommand {
96 TInsCharCom(
TGTextEdit *te,
char ch) : TGTextEditCommand(te) {
108class TDelCharCom :
public TGTextEditCommand {
114 TDelCharCom(
TGTextEdit *te) : TGTextEditCommand(te) {
132class TBreakLineCom :
public TGTextEditCommand {
135 TBreakLineCom(
TGTextEdit *te) : TGTextEditCommand(te) {
149class TInsTextCom :
public TGTextEditCommand {
156 TInsTextCom(
TGTextEdit *te) : TGTextEditCommand(te), fChar(0) {
168 }
else if (fPos.
fY != fEndPos.
fY) {
178class TDelTextCom :
public TGTextEditCommand {
190 TDelTextCom(
const TDelTextCom &dtc) : TGTextEditCommand(dtc) {
191 fText =
new TGText(dtc.fText);
192 fBreakLine = dtc.fBreakLine;
194 virtual ~TDelTextCom() {
delete fText; }
196 TDelTextCom &
operator=(
const TDelTextCom &dtc) {
198 if (fText)
delete fText;
199 fText =
new TGText(dtc.fText);
200 fBreakLine = dtc.fBreakLine;
209 void SetBreakLine(
Bool_t on) { fBreakLine = on; }
213 start_src.
fX = start_src.
fY = 0;
391 if (untitled || saveas) {
491 if (len < 0) len = 0;
493 buf2 =
new char[len + 2];
494 strncpy(buf2, buf1, (
UInt_t)len);
497 while (buf2[i] !=
'\0') {
498 if (buf2[i] ==
'\t') {
500 while (buf2[j] == 16)
503 strcpy(buf2+i+1, buf2+j);
507 fwrite(buf2,
sizeof(
char), strlen(buf2)+1, p);
516 msg.
Form(
"Printed: %s\nLines: %ld\nUsing: %s -P%s",
546 new TDelCharCom(
this);
556 if (endPos.
fX == -1) {
572 TDelTextCom *dcom =
new TDelTextCom(
this,
fClipText);
574 dcom->SetEndPos(endPos);
583 dcom->SetBreakLine(
kTRUE);
600 th = th < 0 ? 0 : th;
601 ys = ys < 0 ? 0 : ys;
651 msg.
Form(
"Couldn't find \"%s\"",
string);
696 const char *newText,
Bool_t direction,
Bool_t caseSensitive)
699 if (!
fText->
Replace(textPos, oldText, newText, direction, caseSensitive)) {
838 if (count == -1 || count ==
'\t') {
953 if (!nchar)
return kTRUE;
963 start_src.
fY = start_src.
fX = 0;
967 if (end_src.
fX < 0) {
972 TInsTextCom *icom =
new TInsTextCom(
this);
984 if (start_src.
fY == end_src.
fY) {
988 icom->SetEndPos(pos);
1061 char *word =
line->GetWord(pos.
fX);
1160 if (
line[i] ==
' ' ||
line[i] ==
'\t') {
1161 while (start >= 0) {
1162 if (
line[start] ==
' ' ||
line[start] ==
'\t') --start;
1166 while (end < (
Int_t)len) {
1167 if (
line[end] ==
' ' ||
line[end] ==
'\t') ++end;
1170 }
else if (isalnum(
line[i])) {
1171 while (start >= 0) {
1172 if (isalnum(
line[start])) --start;
1176 while (end < (
Int_t)len) {
1177 if (isalnum(
line[end])) ++end;
1181 while (start >= 0) {
1182 if (isalnum(
line[start]) ||
line[start] ==
' ' ||
line[start] ==
'\t') {
1189 while (end < (
Int_t)len) {
1190 if (isalnum(
line[end]) ||
line[end] ==
' ' ||
line[end] ==
'\t') {
1204 char *word =
new char[len + 1];
1269 gVirtualX->LookupString(event, input,
sizeof(input), keysym);
1287 switch((
EKeySym)keysym & ~0x20) {
1308 new TDelCharCom(
this);
1382 if (
n && keysym >= 32 && keysym < 127 &&
1390 new TInsCharCom(
this, input[0]);
1416 new TDelCharCom(
this);
1421 new TBreakLineCom(
this);
1424 new TInsCharCom(
this,
'\t');
1431 new TDelCharCom(
this);
1569 fCanvas, 400, 150, srch, &ret);
1572 this,
"Search(char *,Bool_t,Bool_t)");
1602 msg2.
Form(
"Save \"%s\"?",
1700 printf(
"No action implemented for menu id %ld\n", parm1);
1721 char *charstring = 0;
1724 if (character ==
'\t') {
1729 while (pos.
fX & 0x7) {
1748 new TDelCharCom(
this);
1753 charstring =
new char[2];
1754 charstring[1] =
'\0';
1755 charstring[0] = character;
1768 charstring, strlen(charstring));
1774 if (lineStart < currentLine->GetLineLength()) {
1775 const char *textToRender = currentLine->GetText(lineStart, currentLine->GetLineLength() - lineStart);
1783 delete [] textToRender;
1802 charstring, strlen(charstring));
1806 delete [] charstring;
2204 out <<
" TGTextEdit *";
2207 <<
");"<< std::endl;
2208 if (option && strstr(option,
"keep_names"))
2209 out <<
" " <<
GetName() <<
"->SetName(\"" <<
GetName() <<
"\");" << std::endl;
2212 out <<
" " <<
GetName() <<
"->SetReadOnly(kTRUE);" << std::endl;
2216 out <<
" " <<
GetName() <<
"->EnableMenu(kFALSE);" << std::endl;
2234 out <<
" " <<
GetName() <<
"->LoadFile(" << quote << fn.
Data() << quote <<
");" << std::endl;
const Mask_t kKeyShiftMask
const Mask_t kKeyControlMask
include TDocParser_001 C image html pict1_TDocParser_001 png width
static const char * gFiletypes[]
static char * gPrintCommand
R__EXTERN void * gTQSender
Binding & operator=(OUT(*fun)(void))
char * StrDup(const char *str)
Duplicate the string str.
R__EXTERN TSystem * gSystem
virtual Bool_t Notify()
'Notify' all objects in this collection.
const TGWindow * GetDefaultRoot() const
Returns the root (i.e.
Bool_t IsEditable() const
const TGResourcePool * GetResourcePool() const
void NeedRedraw(TGWindow *w, Bool_t force=kFALSE)
Set redraw flags.
virtual void SendMessage(const TGWindow *w, Long_t msg, Long_t parm1, Long_t parm2)
Send message (i.e.
static Time_t fgLastClick
virtual Pixel_t GetBackground() const
static Pixel_t fgWhitePixel
void SetFunction(EGraphicsFunction v)
Set graphics context drawing function.
Cursor_t GetTextCursor() const
virtual TGSearchType * GetType() const
static TGSearchDialog *& SearchDialog()
Return global search dialog.
TGTextEditHist * fHistory
virtual Bool_t HandleFocusChange(Event_t *event)
Handle focus change event in text edit widget.
virtual Bool_t Goto(Long_t line, Long_t column=0)
Goto the specified line.
virtual Bool_t HandleDoubleClick(Event_t *event)
Handle double click event.
static TGGC * fgCursor0GC
static const TGGC & GetCursor1GC()
Return default graphics context for text cursor.
virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
Process context menu messages.
virtual Bool_t Replace(TGLongPosition pos, const char *oldText, const char *newText, Bool_t direction, Bool_t caseSensitive)
Replace text starting at textPos.
virtual void DrawCursor(Int_t mode)
Draw cursor. If mode = 1 draw cursor, if mode = 2 erase cursor.
virtual Bool_t Copy()
Copy text.
TList * GetHistory() const
virtual void AdjustPos()
Adjust current position.
virtual Bool_t SaveFile(const char *fname, Bool_t saveas=kFALSE)
Save file.
EInsertMode GetInsertMode() const
virtual void DrawRegion(Int_t x, Int_t y, UInt_t width, UInt_t height)
Redraw the text edit widget.
virtual Bool_t HandleCrossing(Event_t *event)
Handle mouse crossing event.
virtual void SetMenuState()
Enable/disable menu items in function of what is possible.
virtual Bool_t Cut()
Cut text.
TGLongPosition GetCurrentPos() const
virtual Long_t ReturnLongestLineWidth()
Return width of longest line in widget.
virtual void Print(Option_t *="") const
Send current buffer to printer.
virtual void DelChar()
Delete a character from the text edit widget.
virtual Bool_t HandleSelection(Event_t *event)
Handle selection notify event.
virtual Bool_t HandleKey(Event_t *event)
The key press event handler converts a key press to some line editor action.
virtual void LineDown()
Move one line down.
virtual void Clear(Option_t *="")
Clear text edit widget.
virtual void ScreenDown()
Move one screen down.
virtual void Delete(Option_t *="")
Delete selection.
virtual void SavePrimitive(std::ostream &out, Option_t *="")
Save a text edit widget as a C++ statement(s) on output stream out.
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in text edit widget.
virtual void LineUp()
Make current position first line in window by scrolling up.
virtual void CursorOn()
Turn cursor on.
virtual void SetCurrent(TGLongPosition new_coord)
Make the specified position the current position.
virtual void NextChar()
Go to next character.
virtual void ScreenUp()
Move one screen up.
virtual void BreakLine()
Break a line.
virtual ~TGTextEdit()
Cleanup text edit widget.
TGTextEdit(const TGTextEdit &)
virtual void InsChar(char character)
Insert a character in the text edit widget.
virtual void SetInsertMode(EInsertMode mode=kInsert)
Sets the mode how characters are entered.
virtual void CursorOff()
If cursor if on, turn it off.
virtual Bool_t Search(const char *string, Bool_t direction=kTRUE, Bool_t caseSensitive=kFALSE)
Search for string in the specified direction.
virtual void PrevChar()
Go to the previous character.
virtual Bool_t Paste()
Paste text into widget.
virtual Bool_t IsMenuEnabled() const
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in text edit widget.
virtual void ScrollCanvas(Int_t newTop, Int_t direction)
Scroll the canvas to new_top in the kVertical or kHorizontal direction.
Bool_t fEnableCursorWithoutFocus
virtual void Home()
Move to beginning of line.
static TGGC * fgCursor1GC
virtual void End()
Move to end of line.
void Init()
Initiliaze a text edit widget.
static const TGGC & GetCursor0GC()
Return selection graphics context for text cursor.
virtual Bool_t HandleTimer(TTimer *t)
Handle timer cursor blink timer.
char * GetText(ULong_t pos, ULong_t length)
Get length characters from line starting at pos.
virtual void Update()
update the whole window of text view
virtual void UnMark()
Clear marked region.
virtual Long_t ToObjXCoord(Long_t xCoord, Long_t line)
Convert x screen coordinate to column in specified line.
virtual void SetHsbPosition(Long_t newPos)
Set position of horizontal scrollbar.
virtual Bool_t LoadFile(const char *fname, long startpos=0, long length=-1)
Load a file in the text view widget.
virtual void Mark(Long_t xPos, Long_t yPos)
Mark a text region from xPos to yPos.
virtual Long_t ToScrYCoord(Long_t yCoord)
Convert line number to screen coordinate.
virtual Long_t ReturnLongestLineWidth()
Return width of longest line.
static const TGGC & GetDefaultSelectedGC()
Return selection graphics context in use.
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in the text editor widget.
static const TGGC & GetDefaultGC()
Return default graphics context in use.
virtual Bool_t HandleCrossing(Event_t *event)
Handle mouse crossing event.
virtual void Clicked(const char *word)
virtual Bool_t SelectAll()
Select all text in the viewer.
virtual void SetVsbPosition(Long_t newPos)
Set position of vertical scrollbar.
TGLongPosition fMarkedEnd
virtual void DrawRegion(Int_t x, Int_t y, UInt_t w, UInt_t h)
Draw lines in exposed region.
virtual Long_t ToScrXCoord(Long_t xCoord, Long_t line)
Convert column number in specified line to screen coordinate.
virtual void Clear(Option_t *="")
Clear text view widget.
virtual void Marked(Bool_t mark)
virtual void DataChanged()
Bool_t IsReadOnly() const
virtual Bool_t Copy()
Copy selected text to clipboard.
virtual void DoubleClicked(const char *word)
virtual Bool_t HandleTimer(TTimer *t)
Handle scroll timer.
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in text editor.
virtual void SetSBRange(Int_t direction)
Set the range for the kVertical or kHorizontal scrollbar.
TGLongPosition fMarkedStart
virtual Long_t ToObjYCoord(Long_t yCoord)
Convert y screen coordinate to line number.
Bool_t InsChar(TGLongPosition pos, char c)
Insert character c at the specified position pos.
void ReTab(Long_t row)
Redo all tabs in a line. Needed after a new tab is inserted.
Bool_t DelText(TGLongPosition start, TGLongPosition end)
Delete text between start and end positions.
Bool_t Search(TGLongPosition *foundPos, TGLongPosition start, const char *searchString, Bool_t direction, Bool_t caseSensitive)
Search for string searchString starting at the specified position going in forward (direction = true)...
Bool_t DelLine(ULong_t pos)
Delete specified row. Returns false if row does not exist.
Bool_t Save(const char *fn)
Save text buffer to file fn.
Bool_t Replace(TGLongPosition start, const char *oldText, const char *newText, Bool_t direction, Bool_t caseSensitive)
Replace oldText by newText. Returns false if nothing replaced.
Bool_t DelChar(TGLongPosition pos)
Delete character at specified position pos.
Bool_t BreakLine(TGLongPosition pos)
Break line at position pos. Returns false if pos is not valid.
Bool_t InsText(TGLongPosition pos, const char *buf)
Insert single line at specified position.
char * GetLine(TGLongPosition pos, ULong_t length)
Return string at position pos.
char GetChar(TGLongPosition pos)
Get character a position pos. If charcater not valid return -1.
Bool_t LoadBuffer(const char *txtbuf)
Load a 0 terminated buffer. Lines will be split at ' '.
void Clear()
Clear text buffer.
TGTextLine * GetCurrentLine() const
const char * GetFileName() const
Long_t GetLineLength(Long_t row)
Get length of specified line. Returns -1 if row does not exist.
TString AsString()
Returns content as ROOT string.
virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
Process scrollbar messages.
TGLongPosition fScrollVal
virtual void UpdateRegion(Int_t x, Int_t y, UInt_t w, UInt_t h)
update a part of view
virtual void ScrollCanvas(Int_t newTop, Int_t direction)
Scroll the canvas to new_top in the kVertical or kHorizontal direction.
TGRectangle fExposedRegion
virtual const char * GetName() const
Return unique name, used in SavePrimitive methods.
virtual Bool_t IsMapped()
Returns kTRUE if window is mapped on screen, kFALSE otherwise.
virtual void Add(TObject *obj)
virtual void RemoveLast()
Remove the last object of the list.
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Mother of all ROOT objects.
virtual Bool_t Notify()
This method must be overridden to handle object notification.
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot.
Bool_t Disconnect(const char *signal=0, void *receiver=0, const char *slot=0)
Disconnects signal of this object from slot of receiver.
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
virtual FILE * OpenPipe(const char *command, const char *mode)
Open a pipe.
virtual const char * UnixPathName(const char *unixpathname)
Convert from a Unix pathname to a local pathname.
virtual void AddTimer(TTimer *t)
Add timer to list of system timers.
virtual int ClosePipe(FILE *pipe)
Close the pipe.
Handles synchronous and a-synchronous timer events.
void Reset()
Reset the timer.