// @(#)root/ged:$Id$
// Author: Ilka Antcheva   11/05/04

/*************************************************************************
 * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TAttTextEditor                                                      //
//                                                                      //
//  Implements GUI for editing text attributes.                         //
//          color, font, font size and alignment                        //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
//Begin_Html
/*
<img src="gif/TAttTextEditor.gif">
*/
//End_Html


#include "TAttTextEditor.h"
#include "TGedEditor.h"
#include "TGColorSelect.h"
#include "TGComboBox.h"
#include "TColor.h"
#include "TPaveLabel.h"
#include "TVirtualPad.h"
#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "TPad.h"
#include "TCanvas.h"
#include "TROOT.h"

ClassImp(TAttTextEditor)

enum ETextWid {
   kCOLOR,
   kFONT_SIZE,
   kFONT_STYLE,
   kFONT_ALIGN,
   kALPHA,
   kALPHAFIELD
};

//______________________________________________________________________________
TAttTextEditor::TAttTextEditor(const TGWindow *p, Int_t width,
                               Int_t height, UInt_t options, Pixel_t back)
   : TGedFrame(p, width, height, options | kVerticalFrame, back)
{
   // Constructor of text attributes GUI.
   fPriority = 3;

   fAttText = 0;

   MakeTitle("Text");

   TGCompositeFrame *f2 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   fColorSelect = new TGColorSelect(f2, 0, kCOLOR);
   f2->AddFrame(fColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
   fColorSelect->Associate(this);
   fSizeCombo = BuildFontSizeComboBox(f2, kFONT_SIZE);
   f2->AddFrame(fSizeCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
   fSizeCombo->Resize(91, 20);
   fSizeCombo->Associate(this);
   AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fTypeCombo = new TGFontTypeComboBox(this, kFONT_STYLE);
   fTypeCombo->Resize(137, 20);
   AddFrame(fTypeCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
   fAlignCombo = BuildTextAlignComboBox(this, kFONT_ALIGN);
   fAlignCombo->Resize(137, 20);
   AddFrame(fAlignCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));

   TGLabel *AlphaLabel = new TGLabel(this,"Opacity");
   AddFrame(AlphaLabel,
            new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
   TGHorizontalFrame *f2a = new TGHorizontalFrame(this);
   fAlpha = new TGHSlider(f2a,100,kSlider2|kScaleNo,kALPHA);
   fAlpha->SetRange(0,1000);
   f2a->AddFrame(fAlpha,new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
   fAlphaField = new TGNumberEntryField(f2a, kALPHAFIELD, 0,
                                        TGNumberFormat::kNESReal,
                                        TGNumberFormat::kNEANonNegative);
   fAlphaField->Resize(40,20);
   if (!TCanvas::SupportAlpha()) {
      fAlpha->SetEnabled(kFALSE);
      AlphaLabel->Disable(kTRUE);
      fAlphaField->SetEnabled(kFALSE);
   }
   f2a->AddFrame(fAlphaField,new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
   AddFrame(f2a, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
}

//______________________________________________________________________________
TAttTextEditor::~TAttTextEditor()
{
   // Destructor of text editor.
}

//______________________________________________________________________________
void TAttTextEditor::ConnectSignals2Slots()
{
   // Connect signals to slots.

   fAlpha->Connect("Released()","TAttTextEditor", this, "DoAlpha()");
   fAlpha->Connect("PositionChanged(Int_t)","TAttTextEditor", this, "DoLiveAlpha(Int_t)");
   fAlphaField->Connect("ReturnPressed()","TAttTextEditor", this, "DoAlphaField()");
   fAlpha->Connect("Pressed()","TAttTextEditor", this, "GetCurAlpha()");
   fColorSelect->Connect("ColorSelected(Pixel_t)", "TAttTextEditor", this, "DoTextColor(Pixel_t)");
   fColorSelect->Connect("AlphaColorSelected(ULong_t)", "TAttTextEditor", this, "DoTextAlphaColor(ULong_t)");
   fInit = kFALSE;
}

//______________________________________________________________________________
void TAttTextEditor::SetModel(TObject* obj)
{
   // Pick up the values of used text attributes.

   TAttText *atttext = dynamic_cast<TAttText *>(obj);
   if (!atttext) return;

   fAttText = atttext;
   fAvoidSignal = kTRUE;

   fTypeCombo->Select(fAttText->GetTextFont() / 10);

   Float_t s = fAttText->GetTextSize();
   Float_t dy;

   if (obj->InheritsFrom(TPaveLabel::Class())) {
      TBox *pl = (TBox*)obj;
      dy = s * (pl->GetY2() - pl->GetY1());
   }
   else
      dy = s * (fGedEditor->GetPad()->GetY2() - fGedEditor->GetPad()->GetY1());

   Int_t size = fGedEditor->GetPad()->YtoPixel(0.0) - fGedEditor->GetPad()->YtoPixel(dy);
   if (size > 50) size = 50;
   if (size < 0)  size = 0;
   fSizeCombo->Select(size, kFALSE);

   fAlignCombo->Select(fAttText->GetTextAlign(), kFALSE);

   Color_t c = fAttText->GetTextColor();
   Pixel_t p = TColor::Number2Pixel(c);
   fColorSelect->SetColor(p, kFALSE);

   if (fInit) ConnectSignals2Slots();
   fAvoidSignal = kFALSE;

   if (TColor *color = gROOT->GetColor(fAttText->GetTextColor())) {
      fAlpha->SetPosition((Int_t)color->GetAlpha()*1000);
      fAlphaField->SetNumber(color->GetAlpha());
   }
}

//______________________________________________________________________________
void TAttTextEditor::DoTextColor(Pixel_t color)
{
   // Slot connected to the marker color.

   if (fAvoidSignal) return;
   fAttText->SetTextColor(TColor::GetColor(color));

   if (TColor *tcolor = gROOT->GetColor(TColor::GetColor(color))) {
      fAlpha->SetPosition((Int_t)(tcolor->GetAlpha()*1000));
      fAlphaField->SetNumber(tcolor->GetAlpha());
   }

   Update();
}

//______________________________________________________________________________
void TAttTextEditor::DoTextAlphaColor(ULong_t p)
{
   // Slot connected to the color with alpha.

   TColor *color = (TColor *)p;

   if (fAvoidSignal) return;
   fAttText->SetTextColor(color->GetNumber());
   fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
   fAlphaField->SetNumber(color->GetAlpha());

   Update();
}

//______________________________________________________________________________
Bool_t TAttTextEditor::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
   // Process message.

   if(!fGedEditor || !fGedEditor->GetModel()) return kTRUE;

   Bool_t b = kFALSE;

   if (GET_MSG(msg) == kC_COLORSEL && GET_SUBMSG(msg) == kCOL_SELCHANGED) {
      if (parm1 != 0) fAttText->SetTextColor(TColor::GetColor(parm2));
      b = kTRUE;
      // SendMessage(fMsgWindow, msg, parm1, parm2);
   }

   if (GET_MSG(msg) == kC_COMMAND && GET_SUBMSG(msg) == kCM_COMBOBOX) {

      if (parm1 == kFONT_SIZE) {
         TVirtualPad* pad = fGedEditor->GetPad();
         Float_t dy = pad->AbsPixeltoY(0) - pad->AbsPixeltoY(parm2);
         Float_t textSize;

         if (fGedEditor->GetModel()->InheritsFrom(TPaveLabel::Class())) {
            TBox *pl = (TBox*)fGedEditor->GetModel();
            textSize = dy/(pl->GetY2() - pl->GetY1());
         }
         else
            textSize = dy/(pad->GetY2() - pad->GetY1());

         fAttText->SetTextSize(textSize);
         b = kTRUE;
      } else if (parm1 == kFONT_STYLE) {
         Int_t fontPrec = fAttText->GetTextFont()%10;
         fAttText->SetTextFont(parm2 * 10 + fontPrec);
         b = kTRUE;
      } else if (parm1 == kFONT_ALIGN) {
         fAttText->SetTextAlign(parm2);
         b = kTRUE;
      }
   }

   if (b && !fAvoidSignal) Update();

   return kTRUE;
}

//______________________________________________________________________________
TGComboBox* TAttTextEditor::BuildFontSizeComboBox(TGFrame* parent, Int_t id)
{
   // Create text size combo box.

   char a[100];
   TGComboBox *c = new TGComboBox(parent, id);

   c->AddEntry("Default", 0);
   for (int i = 1; i <= 50; i++) {
      snprintf(a, 99, "%d", i);
      c->AddEntry(a, i);
   }

   return c;
}

//______________________________________________________________________________
TGComboBox* TAttTextEditor::BuildTextAlignComboBox(TGFrame* parent, Int_t id)
{
   // Create text align combo box.

   TGComboBox *c = new TGComboBox(parent, id);

   c->AddEntry("11 Bottom, Left",   11);
   c->AddEntry("21 Bottom, Middle", 21);
   c->AddEntry("31 Bottom, Right",  31);
   c->AddEntry("12 Middle, Left",   12);
   c->AddEntry("22 Middle, Middle", 22);
   c->AddEntry("32 Middle, Right",  32);
   c->AddEntry("13 Top, Left",   13);
   c->AddEntry("23 Top, Middle", 23);
   c->AddEntry("33 Top, Right",  33);

   return c;
}

//______________________________________________________________________________
void TAttTextEditor::DoAlphaField()
{
   // Slot to set the alpha value from the entry field.

   if (fAvoidSignal) return;

   if (TColor *color = gROOT->GetColor(fAttText->GetTextColor())) {
      color->SetAlpha((Float_t)fAlphaField->GetNumber());
      fAlpha->SetPosition((Int_t)(fAlphaField->GetNumber()*1000));
   }
   Update();
}

//______________________________________________________________________________
void TAttTextEditor::DoAlpha()
{
   // Slot to set the alpha value

   if (fAvoidSignal) return;

   if (TColor *color = gROOT->GetColor(fAttText->GetTextColor())) {
      color->SetAlpha((Float_t)fAlpha->GetPosition()/1000);
      fAlphaField->SetNumber((Float_t)fAlpha->GetPosition()/1000);
   }
   Update();
}

//______________________________________________________________________________
void TAttTextEditor::DoLiveAlpha(Int_t a)
{
   // Slot to set alpha value online.

   if (fAvoidSignal) return;
   fAlphaField->SetNumber((Float_t)a/1000);

   if (TColor *color = gROOT->GetColor(fAttText->GetTextColor())) {
      // In case the color is not transparent a new color is created.
      if (color->GetAlpha() == 1.) {
         fAttText->SetTextColor(TColor::GetColorTransparent(color->GetNumber(),0.99));
      } else {
         color->SetAlpha((Float_t)a/1000);
      }
   }
   Update();
}

//_______________________________________________________________________________
void TAttTextEditor::GetCurAlpha()
{
   // Slot to update alpha value on click on Slider

   if (fAvoidSignal) return;

   if (TColor *color = gROOT->GetColor(fAttText->GetTextColor())) {
      fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
      fAlphaField->SetNumber(color->GetAlpha());
   }
   Update();
}
 TAttTextEditor.cxx:1
 TAttTextEditor.cxx:2
 TAttTextEditor.cxx:3
 TAttTextEditor.cxx:4
 TAttTextEditor.cxx:5
 TAttTextEditor.cxx:6
 TAttTextEditor.cxx:7
 TAttTextEditor.cxx:8
 TAttTextEditor.cxx:9
 TAttTextEditor.cxx:10
 TAttTextEditor.cxx:11
 TAttTextEditor.cxx:12
 TAttTextEditor.cxx:13
 TAttTextEditor.cxx:14
 TAttTextEditor.cxx:15
 TAttTextEditor.cxx:16
 TAttTextEditor.cxx:17
 TAttTextEditor.cxx:18
 TAttTextEditor.cxx:19
 TAttTextEditor.cxx:20
 TAttTextEditor.cxx:21
 TAttTextEditor.cxx:22
 TAttTextEditor.cxx:23
 TAttTextEditor.cxx:24
 TAttTextEditor.cxx:25
 TAttTextEditor.cxx:26
 TAttTextEditor.cxx:27
 TAttTextEditor.cxx:28
 TAttTextEditor.cxx:29
 TAttTextEditor.cxx:30
 TAttTextEditor.cxx:31
 TAttTextEditor.cxx:32
 TAttTextEditor.cxx:33
 TAttTextEditor.cxx:34
 TAttTextEditor.cxx:35
 TAttTextEditor.cxx:36
 TAttTextEditor.cxx:37
 TAttTextEditor.cxx:38
 TAttTextEditor.cxx:39
 TAttTextEditor.cxx:40
 TAttTextEditor.cxx:41
 TAttTextEditor.cxx:42
 TAttTextEditor.cxx:43
 TAttTextEditor.cxx:44
 TAttTextEditor.cxx:45
 TAttTextEditor.cxx:46
 TAttTextEditor.cxx:47
 TAttTextEditor.cxx:48
 TAttTextEditor.cxx:49
 TAttTextEditor.cxx:50
 TAttTextEditor.cxx:51
 TAttTextEditor.cxx:52
 TAttTextEditor.cxx:53
 TAttTextEditor.cxx:54
 TAttTextEditor.cxx:55
 TAttTextEditor.cxx:56
 TAttTextEditor.cxx:57
 TAttTextEditor.cxx:58
 TAttTextEditor.cxx:59
 TAttTextEditor.cxx:60
 TAttTextEditor.cxx:61
 TAttTextEditor.cxx:62
 TAttTextEditor.cxx:63
 TAttTextEditor.cxx:64
 TAttTextEditor.cxx:65
 TAttTextEditor.cxx:66
 TAttTextEditor.cxx:67
 TAttTextEditor.cxx:68
 TAttTextEditor.cxx:69
 TAttTextEditor.cxx:70
 TAttTextEditor.cxx:71
 TAttTextEditor.cxx:72
 TAttTextEditor.cxx:73
 TAttTextEditor.cxx:74
 TAttTextEditor.cxx:75
 TAttTextEditor.cxx:76
 TAttTextEditor.cxx:77
 TAttTextEditor.cxx:78
 TAttTextEditor.cxx:79
 TAttTextEditor.cxx:80
 TAttTextEditor.cxx:81
 TAttTextEditor.cxx:82
 TAttTextEditor.cxx:83
 TAttTextEditor.cxx:84
 TAttTextEditor.cxx:85
 TAttTextEditor.cxx:86
 TAttTextEditor.cxx:87
 TAttTextEditor.cxx:88
 TAttTextEditor.cxx:89
 TAttTextEditor.cxx:90
 TAttTextEditor.cxx:91
 TAttTextEditor.cxx:92
 TAttTextEditor.cxx:93
 TAttTextEditor.cxx:94
 TAttTextEditor.cxx:95
 TAttTextEditor.cxx:96
 TAttTextEditor.cxx:97
 TAttTextEditor.cxx:98
 TAttTextEditor.cxx:99
 TAttTextEditor.cxx:100
 TAttTextEditor.cxx:101
 TAttTextEditor.cxx:102
 TAttTextEditor.cxx:103
 TAttTextEditor.cxx:104
 TAttTextEditor.cxx:105
 TAttTextEditor.cxx:106
 TAttTextEditor.cxx:107
 TAttTextEditor.cxx:108
 TAttTextEditor.cxx:109
 TAttTextEditor.cxx:110
 TAttTextEditor.cxx:111
 TAttTextEditor.cxx:112
 TAttTextEditor.cxx:113
 TAttTextEditor.cxx:114
 TAttTextEditor.cxx:115
 TAttTextEditor.cxx:116
 TAttTextEditor.cxx:117
 TAttTextEditor.cxx:118
 TAttTextEditor.cxx:119
 TAttTextEditor.cxx:120
 TAttTextEditor.cxx:121
 TAttTextEditor.cxx:122
 TAttTextEditor.cxx:123
 TAttTextEditor.cxx:124
 TAttTextEditor.cxx:125
 TAttTextEditor.cxx:126
 TAttTextEditor.cxx:127
 TAttTextEditor.cxx:128
 TAttTextEditor.cxx:129
 TAttTextEditor.cxx:130
 TAttTextEditor.cxx:131
 TAttTextEditor.cxx:132
 TAttTextEditor.cxx:133
 TAttTextEditor.cxx:134
 TAttTextEditor.cxx:135
 TAttTextEditor.cxx:136
 TAttTextEditor.cxx:137
 TAttTextEditor.cxx:138
 TAttTextEditor.cxx:139
 TAttTextEditor.cxx:140
 TAttTextEditor.cxx:141
 TAttTextEditor.cxx:142
 TAttTextEditor.cxx:143
 TAttTextEditor.cxx:144
 TAttTextEditor.cxx:145
 TAttTextEditor.cxx:146
 TAttTextEditor.cxx:147
 TAttTextEditor.cxx:148
 TAttTextEditor.cxx:149
 TAttTextEditor.cxx:150
 TAttTextEditor.cxx:151
 TAttTextEditor.cxx:152
 TAttTextEditor.cxx:153
 TAttTextEditor.cxx:154
 TAttTextEditor.cxx:155
 TAttTextEditor.cxx:156
 TAttTextEditor.cxx:157
 TAttTextEditor.cxx:158
 TAttTextEditor.cxx:159
 TAttTextEditor.cxx:160
 TAttTextEditor.cxx:161
 TAttTextEditor.cxx:162
 TAttTextEditor.cxx:163
 TAttTextEditor.cxx:164
 TAttTextEditor.cxx:165
 TAttTextEditor.cxx:166
 TAttTextEditor.cxx:167
 TAttTextEditor.cxx:168
 TAttTextEditor.cxx:169
 TAttTextEditor.cxx:170
 TAttTextEditor.cxx:171
 TAttTextEditor.cxx:172
 TAttTextEditor.cxx:173
 TAttTextEditor.cxx:174
 TAttTextEditor.cxx:175
 TAttTextEditor.cxx:176
 TAttTextEditor.cxx:177
 TAttTextEditor.cxx:178
 TAttTextEditor.cxx:179
 TAttTextEditor.cxx:180
 TAttTextEditor.cxx:181
 TAttTextEditor.cxx:182
 TAttTextEditor.cxx:183
 TAttTextEditor.cxx:184
 TAttTextEditor.cxx:185
 TAttTextEditor.cxx:186
 TAttTextEditor.cxx:187
 TAttTextEditor.cxx:188
 TAttTextEditor.cxx:189
 TAttTextEditor.cxx:190
 TAttTextEditor.cxx:191
 TAttTextEditor.cxx:192
 TAttTextEditor.cxx:193
 TAttTextEditor.cxx:194
 TAttTextEditor.cxx:195
 TAttTextEditor.cxx:196
 TAttTextEditor.cxx:197
 TAttTextEditor.cxx:198
 TAttTextEditor.cxx:199
 TAttTextEditor.cxx:200
 TAttTextEditor.cxx:201
 TAttTextEditor.cxx:202
 TAttTextEditor.cxx:203
 TAttTextEditor.cxx:204
 TAttTextEditor.cxx:205
 TAttTextEditor.cxx:206
 TAttTextEditor.cxx:207
 TAttTextEditor.cxx:208
 TAttTextEditor.cxx:209
 TAttTextEditor.cxx:210
 TAttTextEditor.cxx:211
 TAttTextEditor.cxx:212
 TAttTextEditor.cxx:213
 TAttTextEditor.cxx:214
 TAttTextEditor.cxx:215
 TAttTextEditor.cxx:216
 TAttTextEditor.cxx:217
 TAttTextEditor.cxx:218
 TAttTextEditor.cxx:219
 TAttTextEditor.cxx:220
 TAttTextEditor.cxx:221
 TAttTextEditor.cxx:222
 TAttTextEditor.cxx:223
 TAttTextEditor.cxx:224
 TAttTextEditor.cxx:225
 TAttTextEditor.cxx:226
 TAttTextEditor.cxx:227
 TAttTextEditor.cxx:228
 TAttTextEditor.cxx:229
 TAttTextEditor.cxx:230
 TAttTextEditor.cxx:231
 TAttTextEditor.cxx:232
 TAttTextEditor.cxx:233
 TAttTextEditor.cxx:234
 TAttTextEditor.cxx:235
 TAttTextEditor.cxx:236
 TAttTextEditor.cxx:237
 TAttTextEditor.cxx:238
 TAttTextEditor.cxx:239
 TAttTextEditor.cxx:240
 TAttTextEditor.cxx:241
 TAttTextEditor.cxx:242
 TAttTextEditor.cxx:243
 TAttTextEditor.cxx:244
 TAttTextEditor.cxx:245
 TAttTextEditor.cxx:246
 TAttTextEditor.cxx:247
 TAttTextEditor.cxx:248
 TAttTextEditor.cxx:249
 TAttTextEditor.cxx:250
 TAttTextEditor.cxx:251
 TAttTextEditor.cxx:252
 TAttTextEditor.cxx:253
 TAttTextEditor.cxx:254
 TAttTextEditor.cxx:255
 TAttTextEditor.cxx:256
 TAttTextEditor.cxx:257
 TAttTextEditor.cxx:258
 TAttTextEditor.cxx:259
 TAttTextEditor.cxx:260
 TAttTextEditor.cxx:261
 TAttTextEditor.cxx:262
 TAttTextEditor.cxx:263
 TAttTextEditor.cxx:264
 TAttTextEditor.cxx:265
 TAttTextEditor.cxx:266
 TAttTextEditor.cxx:267
 TAttTextEditor.cxx:268
 TAttTextEditor.cxx:269
 TAttTextEditor.cxx:270
 TAttTextEditor.cxx:271
 TAttTextEditor.cxx:272
 TAttTextEditor.cxx:273
 TAttTextEditor.cxx:274
 TAttTextEditor.cxx:275
 TAttTextEditor.cxx:276
 TAttTextEditor.cxx:277
 TAttTextEditor.cxx:278
 TAttTextEditor.cxx:279
 TAttTextEditor.cxx:280
 TAttTextEditor.cxx:281
 TAttTextEditor.cxx:282
 TAttTextEditor.cxx:283
 TAttTextEditor.cxx:284
 TAttTextEditor.cxx:285
 TAttTextEditor.cxx:286
 TAttTextEditor.cxx:287
 TAttTextEditor.cxx:288
 TAttTextEditor.cxx:289
 TAttTextEditor.cxx:290
 TAttTextEditor.cxx:291
 TAttTextEditor.cxx:292
 TAttTextEditor.cxx:293
 TAttTextEditor.cxx:294
 TAttTextEditor.cxx:295
 TAttTextEditor.cxx:296
 TAttTextEditor.cxx:297
 TAttTextEditor.cxx:298
 TAttTextEditor.cxx:299
 TAttTextEditor.cxx:300
 TAttTextEditor.cxx:301
 TAttTextEditor.cxx:302
 TAttTextEditor.cxx:303
 TAttTextEditor.cxx:304
 TAttTextEditor.cxx:305
 TAttTextEditor.cxx:306
 TAttTextEditor.cxx:307
 TAttTextEditor.cxx:308
 TAttTextEditor.cxx:309
 TAttTextEditor.cxx:310
 TAttTextEditor.cxx:311
 TAttTextEditor.cxx:312
 TAttTextEditor.cxx:313
 TAttTextEditor.cxx:314
 TAttTextEditor.cxx:315
 TAttTextEditor.cxx:316
 TAttTextEditor.cxx:317
 TAttTextEditor.cxx:318
 TAttTextEditor.cxx:319
 TAttTextEditor.cxx:320
 TAttTextEditor.cxx:321
 TAttTextEditor.cxx:322
 TAttTextEditor.cxx:323
 TAttTextEditor.cxx:324
 TAttTextEditor.cxx:325
 TAttTextEditor.cxx:326
 TAttTextEditor.cxx:327
 TAttTextEditor.cxx:328
 TAttTextEditor.cxx:329
 TAttTextEditor.cxx:330
 TAttTextEditor.cxx:331
 TAttTextEditor.cxx:332
 TAttTextEditor.cxx:333
 TAttTextEditor.cxx:334
 TAttTextEditor.cxx:335