Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TTextEditor.cxx
Go to the documentation of this file.
1 #include "TTextEditor.h"
2 #include "TText.h"
3 #include "TGTextEntry.h"
4 #include "TGNumberEntry.h"
5 #include "TGLabel.h"
6 
7 ClassImp(TTextEditor);
8 
9 
10 enum ELatexID{
11  kText_Text = 0, kText_Xpos, kText_Ypos, kText_Angle, kText_Size
12 };
13 
14 
15 ////////////////////////////////////////////////////////////////////////////////
16 /// TTextEditor constructor.
17 
18 TTextEditor::TTextEditor(const TGWindow *p,
19  Int_t width, Int_t height,
20  UInt_t options, Pixel_t back)
21  : TGedFrame(p, width, height, options | kVerticalFrame, back)
22 {
23  fText = 0;
24 
25  // start initializing the window components
26  MakeTitle("Text String");
27 
28  fText = new TGTextEntry(this, new TGTextBuffer(50), kText_Text);
29  fText->Resize(135, fText->GetDefaultHeight());
30  fText->SetToolTipText("Enter the text string");
31  AddFrame(fText, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));
32 
33  TGCompositeFrame *f1 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
34  TGLabel *lbl1 = new TGLabel(f1,"X Position");
35  fXpos = new TGNumberEntry(f1, 4, 2, kText_Xpos, TGNumberEntry::kNESRealTwo,
36  TGNumberEntry::kNEAAnyNumber);
37  fXpos->Resize(50, 20);
38  f1->AddFrame(lbl1, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
39  f1->AddFrame(fXpos, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
40  AddFrame(f1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
41 
42  TGCompositeFrame *f2 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
43  TGLabel *lbl2 = new TGLabel(f2,"Y Position");
44  fYpos = new TGNumberEntry(f2, 4, 2, kText_Ypos, TGNumberEntry::kNESRealTwo,
45  TGNumberEntry::kNEAAnyNumber);
46  fYpos->Resize(50, 20);
47  f2->AddFrame(lbl2, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
48  f2->AddFrame(fYpos, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
49  AddFrame(f2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
50 
51  TGCompositeFrame *f3 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
52  TGLabel *lbl3 = new TGLabel(f3,"Text Angle");
53  fAngle = new TGNumberEntry(f3, 4, 2, kText_Angle, TGNumberEntry::kNESInteger,
54  TGNumberEntry::kNEANonNegative);
55  fAngle->Resize(50, 20);
56  f3->AddFrame(lbl3, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
57  f3->AddFrame(fAngle, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
58  AddFrame(f3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
59 
60  TGCompositeFrame *f4 = new TGCompositeFrame(this, 120, 20, kHorizontalFrame);
61  TGLabel *lbl4 = new TGLabel(f4,"Text Size");
62  fSize = new TGNumberEntry(f4, 4, 2, kText_Size, TGNumberEntry::kNESRealTwo,
63  TGNumberEntry::kNEANonNegative);
64  fSize->Resize(50, 20);
65  f4->AddFrame(lbl4, new TGLayoutHints(kLHintsLeft,1, 1, 1, 1));
66  f4->AddFrame(fSize, new TGLayoutHints(kLHintsLeft, 7, 1, 1, 1));
67  AddFrame(f4, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
68 }
69 
70 
71 ////////////////////////////////////////////////////////////////////////////////
72 /// TTextEditor destructor.
73 
74 TTextEditor::~TTextEditor()
75 {
76 }
77 
78 
79 ////////////////////////////////////////////////////////////////////////////////
80 /// Set model.
81 
82 void TTextEditor::SetModel(TObject *obj)
83 {
84  fEditedText = (TText*) (obj);
85 
86  fAvoidSignal = kTRUE;
87  fText->SetText(fEditedText->GetTitle());
88  fXpos->SetNumber(fEditedText->GetX());
89  fYpos->SetNumber(fEditedText->GetY());
90  fAngle->SetNumber(fEditedText->GetTextAngle());
91  fSize->SetNumber(fEditedText->GetTextSize());
92 
93  if (fInit) ConnectSignals2Slots();
94  fAvoidSignal = kFALSE;
95 }
96 
97 
98 ////////////////////////////////////////////////////////////////////////////////
99 /// Connect signals to slots.
100 
101 void TTextEditor::ConnectSignals2Slots()
102 {
103  fText->Connect("TextChanged(const char *)","TTextEditor",this,"DoText(const char *)");
104  fXpos->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoXpos()");
105  fYpos->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoYpos()");
106  fAngle->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoAngle()");
107  fSize->Connect("ValueSet(Long_t)", "TTextEditor", this, "DoSize()");
108 
109  fInit = kFALSE; // connect the slots to the signals only once
110 }
111 
112 ////////////////////////////////////////////////////////////////////////////////
113 /// Slot for setting the text Angle.
114 
115 void TTextEditor::DoAngle()
116 {
117  if (fAvoidSignal) return;
118  fEditedText->SetTextAngle(fAngle->GetNumber());
119  Update();
120 }
121 
122 
123 ////////////////////////////////////////////////////////////////////////////////
124 /// Slot for setting the text Size.
125 
126 void TTextEditor::DoSize()
127 {
128  if (fAvoidSignal) return;
129  fEditedText->SetTextSize(fSize->GetNumber());
130  Update();
131 }
132 
133 
134 ////////////////////////////////////////////////////////////////////////////////
135 /// Slot for setting the text string.
136 
137 void TTextEditor::DoText(const char *text)
138 {
139  if (fAvoidSignal) return;
140  fEditedText->SetTitle(text);
141  Update();
142 }
143 
144 
145 ////////////////////////////////////////////////////////////////////////////////
146 /// Slot for setting the text X position.
147 
148 void TTextEditor::DoXpos()
149 {
150  if (fAvoidSignal) return;
151  fEditedText->SetX(fXpos->GetNumber());
152  Update();
153 }
154 
155 
156 ////////////////////////////////////////////////////////////////////////////////
157 /// Slot for setting the text Y position.
158 
159 void TTextEditor::DoYpos()
160 {
161  if (fAvoidSignal) return;
162  fEditedText->SetY(fYpos->GetNumber());
163  Update();
164 }