#include "TTextEditor.h"
#include "TText.h"
#include "TGTextEntry.h"
#include "TGNumberEntry.h"
#include "TGLabel.h"

ClassImp(TTextEditor)


enum ELatexID{
   kText_Text = 0, kText_Xpos, kText_Ypos, kText_Angle, kText_Size
};


//______________________________________________________________________________
TTextEditor::TTextEditor(const TGWindow *p,
                  Int_t width, Int_t height,
                  UInt_t options, Pixel_t back)
                  : TGedFrame(p, width, height, options | kVerticalFrame, back)
{
   // TTextEditor constructor.

   fText = 0;

   // start initializing the window components
   MakeTitle("Text String");

   fText = new TGTextEntry(this, new TGTextBuffer(50), kText_Text);
   fText->Resize(135, fText->GetDefaultHeight());
   fText->SetToolTipText("Enter the text string");
   AddFrame(fText, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));

   TGCompositeFrame *f1 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
   TGLabel *lbl1 = new TGLabel(f1,"X Position");
   fXpos = new TGNumberEntry(f1, 4, 2, kText_Xpos, TGNumberEntry::kNESRealTwo,
   TGNumberEntry::kNEAAnyNumber);
   fXpos->Resize(50, 20);
   f1->AddFrame(lbl1, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
   f1->AddFrame(fXpos, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));

   TGCompositeFrame *f2 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
   TGLabel *lbl2 = new TGLabel(f2,"Y Position");
   fYpos = new TGNumberEntry(f2, 4, 2, kText_Ypos, TGNumberEntry::kNESRealTwo,
   TGNumberEntry::kNEAAnyNumber);
   fYpos->Resize(50, 20);
   f2->AddFrame(lbl2, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
   f2->AddFrame(fYpos, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
   AddFrame(f2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));

   TGCompositeFrame *f3 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
   TGLabel *lbl3 = new TGLabel(f3,"Text Angle");
   fAngle = new TGNumberEntry(f3, 4, 2, kText_Angle, TGNumberEntry::kNESInteger,
   TGNumberEntry::kNEANonNegative);
   fAngle->Resize(50, 20);
   f3->AddFrame(lbl3, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
   f3->AddFrame(fAngle, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
   AddFrame(f3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));

   TGCompositeFrame *f4 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
   TGLabel *lbl4 = new TGLabel(f4,"Text Size");
   fSize = new TGNumberEntry(f4, 4, 2, kText_Size, TGNumberEntry::kNESRealTwo,
   TGNumberEntry::kNEANonNegative);
   fSize->Resize(50, 20);
   f4->AddFrame(lbl4, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
   f4->AddFrame(fSize, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
   AddFrame(f4, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
}


//______________________________________________________________________________
TTextEditor::~TTextEditor()
{
   // TTextEditor destructor.
}


//______________________________________________________________________________
void TTextEditor::SetModel(TObject *obj)
{
   // Set model.

   fEditedText = (TText*) (obj);

   fAvoidSignal = kTRUE;
   fText->SetText(fEditedText->GetTitle());
   fXpos->SetNumber(fEditedText->GetX());
   fYpos->SetNumber(fEditedText->GetY());
   fAngle->SetNumber(fEditedText->GetTextAngle());
   fSize->SetNumber(fEditedText->GetTextSize());

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


//_____________________________________________________________________________
void TTextEditor::ConnectSignals2Slots()
{
   // Connect signals to slots.

   fText->Connect("TextChanged(const char *)","TTextEditor",this,"DoText(const char *)");
   fXpos->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoXpos()");
   fYpos->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoYpos()");
   fAngle->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoAngle()");
   fSize->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoSize()");

   fInit = kFALSE;  // connect the slots to the signals only once
}

//______________________________________________________________________________
void TTextEditor::DoAngle()
{
   // Slot for setting the text Angle.

   if (fAvoidSignal) return;
   fEditedText->SetTextAngle(fAngle->GetNumber());
   Update();
}


//______________________________________________________________________________
void TTextEditor::DoSize()
{
   // Slot for setting the text Size.

   if (fAvoidSignal) return;
   fEditedText->SetTextSize(fSize->GetNumber());
   Update();
}


//______________________________________________________________________________
void TTextEditor::DoText(const char *text)
{
   // Slot for setting the text string.

   if (fAvoidSignal) return;
   fEditedText->SetTitle(text);
   Update();
}


//______________________________________________________________________________
void TTextEditor::DoXpos()
{
   // Slot for setting the text X position.

   if (fAvoidSignal) return;
   fEditedText->SetX(fXpos->GetNumber());
   Update();
}


//______________________________________________________________________________
void TTextEditor::DoYpos()
{
   // Slot for setting the text Y position.

   if (fAvoidSignal) return;
   fEditedText->SetY(fYpos->GetNumber());
   Update();
}
 TTextEditor.cxx:1
 TTextEditor.cxx:2
 TTextEditor.cxx:3
 TTextEditor.cxx:4
 TTextEditor.cxx:5
 TTextEditor.cxx:6
 TTextEditor.cxx:7
 TTextEditor.cxx:8
 TTextEditor.cxx:9
 TTextEditor.cxx:10
 TTextEditor.cxx:11
 TTextEditor.cxx:12
 TTextEditor.cxx:13
 TTextEditor.cxx:14
 TTextEditor.cxx:15
 TTextEditor.cxx:16
 TTextEditor.cxx:17
 TTextEditor.cxx:18
 TTextEditor.cxx:19
 TTextEditor.cxx:20
 TTextEditor.cxx:21
 TTextEditor.cxx:22
 TTextEditor.cxx:23
 TTextEditor.cxx:24
 TTextEditor.cxx:25
 TTextEditor.cxx:26
 TTextEditor.cxx:27
 TTextEditor.cxx:28
 TTextEditor.cxx:29
 TTextEditor.cxx:30
 TTextEditor.cxx:31
 TTextEditor.cxx:32
 TTextEditor.cxx:33
 TTextEditor.cxx:34
 TTextEditor.cxx:35
 TTextEditor.cxx:36
 TTextEditor.cxx:37
 TTextEditor.cxx:38
 TTextEditor.cxx:39
 TTextEditor.cxx:40
 TTextEditor.cxx:41
 TTextEditor.cxx:42
 TTextEditor.cxx:43
 TTextEditor.cxx:44
 TTextEditor.cxx:45
 TTextEditor.cxx:46
 TTextEditor.cxx:47
 TTextEditor.cxx:48
 TTextEditor.cxx:49
 TTextEditor.cxx:50
 TTextEditor.cxx:51
 TTextEditor.cxx:52
 TTextEditor.cxx:53
 TTextEditor.cxx:54
 TTextEditor.cxx:55
 TTextEditor.cxx:56
 TTextEditor.cxx:57
 TTextEditor.cxx:58
 TTextEditor.cxx:59
 TTextEditor.cxx:60
 TTextEditor.cxx:61
 TTextEditor.cxx:62
 TTextEditor.cxx:63
 TTextEditor.cxx:64
 TTextEditor.cxx:65
 TTextEditor.cxx:66
 TTextEditor.cxx:67
 TTextEditor.cxx:68
 TTextEditor.cxx:69
 TTextEditor.cxx:70
 TTextEditor.cxx:71
 TTextEditor.cxx:72
 TTextEditor.cxx:73
 TTextEditor.cxx:74
 TTextEditor.cxx:75
 TTextEditor.cxx:76
 TTextEditor.cxx:77
 TTextEditor.cxx:78
 TTextEditor.cxx:79
 TTextEditor.cxx:80
 TTextEditor.cxx:81
 TTextEditor.cxx:82
 TTextEditor.cxx:83
 TTextEditor.cxx:84
 TTextEditor.cxx:85
 TTextEditor.cxx:86
 TTextEditor.cxx:87
 TTextEditor.cxx:88
 TTextEditor.cxx:89
 TTextEditor.cxx:90
 TTextEditor.cxx:91
 TTextEditor.cxx:92
 TTextEditor.cxx:93
 TTextEditor.cxx:94
 TTextEditor.cxx:95
 TTextEditor.cxx:96
 TTextEditor.cxx:97
 TTextEditor.cxx:98
 TTextEditor.cxx:99
 TTextEditor.cxx:100
 TTextEditor.cxx:101
 TTextEditor.cxx:102
 TTextEditor.cxx:103
 TTextEditor.cxx:104
 TTextEditor.cxx:105
 TTextEditor.cxx:106
 TTextEditor.cxx:107
 TTextEditor.cxx:108
 TTextEditor.cxx:109
 TTextEditor.cxx:110
 TTextEditor.cxx:111
 TTextEditor.cxx:112
 TTextEditor.cxx:113
 TTextEditor.cxx:114
 TTextEditor.cxx:115
 TTextEditor.cxx:116
 TTextEditor.cxx:117
 TTextEditor.cxx:118
 TTextEditor.cxx:119
 TTextEditor.cxx:120
 TTextEditor.cxx:121
 TTextEditor.cxx:122
 TTextEditor.cxx:123
 TTextEditor.cxx:124
 TTextEditor.cxx:125
 TTextEditor.cxx:126
 TTextEditor.cxx:127
 TTextEditor.cxx:128
 TTextEditor.cxx:129
 TTextEditor.cxx:130
 TTextEditor.cxx:131
 TTextEditor.cxx:132
 TTextEditor.cxx:133
 TTextEditor.cxx:134
 TTextEditor.cxx:135
 TTextEditor.cxx:136
 TTextEditor.cxx:137
 TTextEditor.cxx:138
 TTextEditor.cxx:139
 TTextEditor.cxx:140
 TTextEditor.cxx:141
 TTextEditor.cxx:142
 TTextEditor.cxx:143
 TTextEditor.cxx:144
 TTextEditor.cxx:145
 TTextEditor.cxx:146
 TTextEditor.cxx:147
 TTextEditor.cxx:148
 TTextEditor.cxx:149
 TTextEditor.cxx:150
 TTextEditor.cxx:151
 TTextEditor.cxx:152
 TTextEditor.cxx:153
 TTextEditor.cxx:154
 TTextEditor.cxx:155
 TTextEditor.cxx:156
 TTextEditor.cxx:157
 TTextEditor.cxx:158
 TTextEditor.cxx:159
 TTextEditor.cxx:160
 TTextEditor.cxx:161
 TTextEditor.cxx:162
 TTextEditor.cxx:163