#ifndef ROOT_TGTextView
#define ROOT_TGTextView
#ifndef ROOT_TGView
#include "TGView.h"
#endif
#ifndef ROOT_TGText
#include "TGText.h"
#endif
class TViewTimer;
class TGTextView : public TGView {
protected:
TGText *fText;
TGText *fClipText;
FontStruct_t fFont;
Int_t fMaxAscent;
Int_t fMaxDescent;
Int_t fMaxWidth;
TGGC fNormGC;
TGGC fSelGC;
TGGC fSelbackGC;
Bool_t fMarkedFromX;
Bool_t fMarkedFromY;
Bool_t fIsMarked;
Bool_t fIsMarking;
Bool_t fIsSaved;
Bool_t fReadOnly;
TGLongPosition fMarkedStart;
TGLongPosition fMarkedEnd;
TViewTimer *fScrollTimer;
Atom_t *fDNDTypeList;
static const TGFont *fgDefaultFont;
static TGGC *fgDefaultGC;
static TGGC *fgDefaultSelectedGC;
static const TGGC *fgDefaultSelectedBackgroundGC;
void Init(Pixel_t bg);
virtual void DrawRegion(Int_t x, Int_t y, UInt_t w, UInt_t h);
virtual void Mark(Long_t xPos, Long_t yPos);
virtual void UnMark();
virtual void Copy(TObject &) const { MayNotUse("Copy(TObject &)"); }
virtual void HLayout();
virtual void VLayout();
static FontStruct_t GetDefaultFontStruct();
static const TGGC &GetDefaultGC();
static const TGGC &GetDefaultSelectedGC();
static const TGGC &GetDefaultSelectedBackgroundGC();
private:
TGTextView(const TGTextView&);
TGTextView& operator=(const TGTextView&);
public:
TGTextView(const TGWindow *parent = 0, UInt_t w = 1, UInt_t h = 1, Int_t id = -1,
UInt_t sboptions = 0, Pixel_t back = GetWhitePixel());
TGTextView(const TGWindow *parent, UInt_t w, UInt_t h, TGText *text,
Int_t id = -1, UInt_t sboptions = 0, Pixel_t back = GetWhitePixel());
TGTextView(const TGWindow *parent, UInt_t w, UInt_t h, const char *string,
Int_t id = -1, UInt_t sboptions = 0, Pixel_t back = GetWhitePixel());
virtual ~TGTextView();
virtual Bool_t IsSaved() { fIsSaved = fText->IsSaved(); return fIsSaved;}
virtual Long_t ToObjXCoord(Long_t xCoord, Long_t line);
virtual Long_t ToObjYCoord(Long_t yCoord);
virtual Long_t ToScrXCoord(Long_t xCoord, Long_t line);
virtual Long_t ToScrYCoord(Long_t yCoord);
virtual void AdjustWidth();
virtual Bool_t LoadFile(const char *fname, long startpos = 0, long length = -1);
virtual Bool_t LoadBuffer(const char *txtbuf);
virtual void Clear(Option_t * = "");
virtual Bool_t Copy();
virtual Bool_t SelectAll();
virtual Bool_t Search(const char *string, Bool_t direction, Bool_t caseSensitive);
virtual void SetFont(FontStruct_t font);
virtual Long_t ReturnHeighestColHeight() { return fText->RowCount()*fScrollVal.fY; }
virtual Long_t ReturnLongestLineWidth();
virtual Long_t ReturnLineLength(Long_t line) { return fText->GetLineLength(line); }
virtual Long_t ReturnLongestLine() { return fText->GetLongestLine(); }
virtual Long_t ReturnLineCount() { return fText->RowCount(); }
virtual void SetSBRange(Int_t direction);
virtual void SetHsbPosition(Long_t newPos);
virtual void SetVsbPosition(Long_t newPos);
virtual void ShowBottom();
virtual void ShowTop();
virtual void SavePrimitive(ostream &out, Option_t * = "");
virtual void SetText(TGText *text);
virtual void AddText(TGText *text);
virtual void AddLine(const char *string);
virtual void AddLineFast(const char *string);
virtual void Update();
virtual void Layout();
virtual void SetBackground(Pixel_t p);
virtual void SetSelectBack(Pixel_t p);
virtual void SetSelectFore(Pixel_t p);
virtual void SetForegroundColor(Pixel_t);
TGText *GetText() const { return fText; }
virtual void SetReadOnly(Bool_t on = kTRUE) { fReadOnly = on; }
Bool_t IsReadOnly() const { return fReadOnly; }
Bool_t IsMarked() const { return fIsMarked; }
virtual Bool_t HandleDNDDrop(TDNDData *data);
virtual Atom_t HandleDNDPosition(Int_t x, Int_t y, Atom_t action,
Int_t xroot, Int_t yroot);
virtual Atom_t HandleDNDEnter(Atom_t * typelist);
virtual Bool_t HandleDNDLeave();
virtual Bool_t HandleButton(Event_t *event);
virtual Bool_t HandleDoubleClick(Event_t *event);
virtual Bool_t HandleSelectionClear(Event_t *event);
virtual Bool_t HandleSelectionRequest(Event_t *event);
virtual Bool_t HandleMotion(Event_t *event);
virtual Bool_t HandleTimer(TTimer *t);
virtual Bool_t HandleCrossing(Event_t *event);
virtual void DataChanged() { Emit("DataChanged()"); }
virtual void DataDropped(const char *fname) { Emit("DataDropped(char *)", fname); }
virtual void Marked(Bool_t mark) { Emit("Marked(Bool_t)", mark); }
virtual void Clicked(const char *word) { Emit("Clicked(char *)", word); }
virtual void DoubleClicked(const char *word) { Emit("DoubleClicked(char *)", word); }
ClassDef(TGTextView,0)
};
class TViewTimer : public TTimer {
private:
TGView *fView;
TViewTimer(const TViewTimer&);
TViewTimer& operator=(const TViewTimer&);
public:
TViewTimer(TGView *t, Long_t ms) : TTimer(ms, kTRUE), fView(t) { }
Bool_t Notify();
};
#endif