34 ClassImp(TCurlyLineEditor);
49 TCurlyLineEditor::TCurlyLineEditor(
const TGWindow *p, Int_t width,
50 Int_t height, UInt_t options, Pixel_t back)
51 : TGedFrame(p, width, height, options | kVerticalFrame, back)
55 MakeTitle(
"Curly Line");
57 TGCompositeFrame *f3 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
58 AddFrame(f3,
new TGLayoutHints(kLHintsTop, 1, 1, 3, 0));
60 TGCompositeFrame *f3a =
new TGCompositeFrame(f3, 80, 20);
61 f3->AddFrame(f3a,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
63 TGLabel *fAmplitudeLabel =
new TGLabel(f3a,
"Amplitude:");
64 f3a->AddFrame(fAmplitudeLabel,
new TGLayoutHints(kLHintsNormal, 3, 0, 5, 5));
66 TGLabel *fWaveLengthLabel =
new TGLabel(f3a,
"Wavelgth:");
67 f3a->AddFrame(fWaveLengthLabel,
new TGLayoutHints(kLHintsNormal, 3, 0, 5, 5));
69 TGCompositeFrame *f3b =
new TGCompositeFrame(f3, 80, 20);
70 f3->AddFrame(f3b,
new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
72 fAmplitudeEntry =
new TGNumberEntry(f3b, 0.005, 7, kCRLL_AMPL,
73 TGNumberFormat::kNESRealThree,
74 TGNumberFormat::kNEANonNegative,
75 TGNumberFormat::kNELLimitMinMax, 0.005, 0.3);
76 fAmplitudeEntry->GetNumberEntry()->SetToolTipText(
"Set amplitude in percent of the pad height.");
77 f3b->AddFrame(fAmplitudeEntry,
new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));
79 fWaveLengthEntry =
new TGNumberEntry(f3b, 0.005, 7, kCRLL_WAVE,
80 TGNumberFormat::kNESRealThree,
81 TGNumberFormat::kNEANonNegative,
82 TGNumberFormat::kNELLimitMinMax, 0.005, 0.3);
83 fWaveLengthEntry->GetNumberEntry()->SetToolTipText(
"Set wavelength in percent of the pad height.");
84 fWaveLengthEntry->Associate(
this);
85 f3b->AddFrame(fWaveLengthEntry,
new TGLayoutHints(kLHintsLeft, 4, 1, 3, 1));
87 fIsWavy =
new TGCheckButton(
this,
"Gluon (Gamma)", kCRLL_ISW);
88 fIsWavy->SetToolTipText(
"Toggle between wavy line (Gluon) if selected; curly line (Gamma) otherwise.");
89 AddFrame(fIsWavy,
new TGLayoutHints(kLHintsLeft, 5, 1, 5, 8));
91 fStartXFrame =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
92 AddFrame(fStartXFrame,
new TGLayoutHints(kLHintsTop, 1, 1, 3, 0));
94 TGCompositeFrame *f4a =
new TGCompositeFrame(fStartXFrame, 80, 20);
95 fStartXFrame->AddFrame(f4a,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
97 TGLabel *fStartXLabel =
new TGLabel(f4a,
"Start X:");
98 f4a->AddFrame(fStartXLabel,
new TGLayoutHints(kLHintsNormal, 21, 0, 5, 5));
100 TGLabel *fStartYLabel =
new TGLabel(f4a,
"Y:");
101 f4a->AddFrame(fStartYLabel,
new TGLayoutHints(kLHintsNormal, 50, 0, 5, 5));
103 TGLabel *fEndXLabel =
new TGLabel(f4a,
"End X:");
104 f4a->AddFrame(fEndXLabel,
new TGLayoutHints(kLHintsNormal, 24, 0, 5, 5));
106 TGLabel *fEndYLabel =
new TGLabel(f4a,
"Y:");
107 f4a->AddFrame(fEndYLabel,
new TGLayoutHints(kLHintsNormal, 51, 0, 5, 1));
109 TGCompositeFrame *f4b =
new TGCompositeFrame(fStartXFrame, 80, 20);
110 fStartXFrame->AddFrame(f4b,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
112 fStartXEntry =
new TGNumberEntry(f4b, 0.0, 7, kCRLL_STRX,
113 TGNumberFormat::kNESRealThree,
114 TGNumberFormat::kNEANonNegative,
115 TGNumberFormat::kNELNoLimits);
116 fStartXEntry->GetNumberEntry()->SetToolTipText(
"Set start point X ccordinate of curly line.");
117 f4b->AddFrame(fStartXEntry,
new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
119 fStartYEntry =
new TGNumberEntry(f4b, 0.0, 7, kCRLL_STRY,
120 TGNumberFormat::kNESRealThree,
121 TGNumberFormat::kNEANonNegative,
122 TGNumberFormat::kNELNoLimits);
123 fStartYEntry->GetNumberEntry()->SetToolTipText(
"Set start point Y coordinate of curly line.");
124 f4b->AddFrame(fStartYEntry,
new TGLayoutHints(kLHintsLeft, 1, 1, 3, 1));
126 fEndXEntry =
new TGNumberEntry(f4b, 0.0, 7, kCRLL_ENDX,
127 TGNumberFormat::kNESRealThree,
128 TGNumberFormat::kNEANonNegative,
129 TGNumberFormat::kNELNoLimits);
130 fEndXEntry->GetNumberEntry()->SetToolTipText(
"Set end point X coordinate of curly line.");
131 f4b->AddFrame(fEndXEntry,
new TGLayoutHints(kLHintsLeft, 1, 1, 3, 1));
133 fEndYEntry =
new TGNumberEntry(f4b, 0.0, 7, kCRLL_ENDY,
134 TGNumberFormat::kNESRealThree,
135 TGNumberFormat::kNEANonNegative,
136 TGNumberFormat::kNELNoLimits);
137 fEndYEntry->GetNumberEntry()->SetToolTipText(
"Set end point Y coordinate of curly line.");
138 f4b->AddFrame(fEndYEntry,
new TGLayoutHints(kLHintsLeft, 1, 1, 3, 1));
145 TCurlyLineEditor::~TCurlyLineEditor()
152 void TCurlyLineEditor::ConnectSignals2Slots()
154 fStartXEntry->Connect(
"ValueSet(Long_t)",
"TCurlyLineEditor",
this,
"DoStartXY()");
155 (fStartXEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyLineEditor",
this,
"DoStartXY()");
156 fStartYEntry->Connect(
"ValueSet(Long_t)",
"TCurlyLineEditor",
this,
"DoStartXY()");
157 (fStartYEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyLineEditor",
this,
"DoStartXY()");
158 fEndXEntry->Connect(
"ValueSet(Long_t)",
"TCurlyLineEditor",
this,
"DoEndXY()");
159 (fEndXEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyLineEditor",
this,
"DoEndXY()");
160 fEndYEntry->Connect(
"ValueSet(Long_t)",
"TCurlyLineEditor",
this,
"DoEndXY()");
161 (fEndYEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyLineEditor",
this,
"DoEndXY()");
162 fAmplitudeEntry->Connect(
"ValueSet(Long_t)",
"TCurlyLineEditor",
this,
"DoAmplitude()");
163 (fAmplitudeEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyLineEditor",
this,
"DoAmplitude()");
164 fWaveLengthEntry->Connect(
"ValueSet(Long_t)",
"TCurlyLineEditor",
this,
"DoWaveLength()");
165 (fWaveLengthEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyLineEditor",
this,
"DoWaveLength()");
166 fIsWavy->Connect(
"Clicked()",
"TCurlyLineEditor",
this,
"DoWavy()");
174 void TCurlyLineEditor::SetModel(TObject* obj)
176 if (obj->InheritsFrom(
"TCurlyArc")) {
177 HideFrame(fStartXFrame);
178 fStartXEntry->Disconnect(
"ValueSet(Long_t)");
179 (fStartXEntry->GetNumberEntry())->Disconnect(
"ReturnPressed()");
180 fStartYEntry->Disconnect(
"ValueSet(Long_t)");
181 (fStartYEntry->GetNumberEntry())->Disconnect(
"ReturnPressed()");
182 fEndXEntry->Disconnect(
"ValueSet(Long_t)");
183 (fEndXEntry->GetNumberEntry())->Disconnect(
"ReturnPressed()");
184 fEndYEntry->Disconnect(
"ValueSet(Long_t)");
185 (fEndYEntry->GetNumberEntry())->Disconnect(
"ReturnPressed()");
188 fCurlyLine = (TCurlyLine *)obj;
189 fAvoidSignal = kTRUE;
191 Double_t val = fCurlyLine->GetAmplitude();
192 fAmplitudeEntry->SetNumber(val);
194 val = fCurlyLine->GetWaveLength();
195 fWaveLengthEntry->SetNumber(val);
197 val = fCurlyLine->GetStartX();
198 fStartXEntry->SetNumber(val);
200 val = fCurlyLine->GetEndX();
201 fEndXEntry->SetNumber(val);
203 val = fCurlyLine->GetStartY();
204 fStartYEntry->SetNumber(val);
206 val = fCurlyLine->GetEndY();
207 fEndYEntry->SetNumber(val);
209 if (fCurlyLine->GetCurly())
210 fIsWavy->SetState(kButtonDown);
212 fIsWavy->SetState(kButtonUp);
214 if (fInit) ConnectSignals2Slots();
215 fAvoidSignal = kFALSE;
221 void TCurlyLineEditor::ActivateBaseClassEditors(TClass* cl)
223 fGedEditor->ExcludeClassEditor(TAttFill::Class());
224 TGedFrame::ActivateBaseClassEditors(cl);
230 void TCurlyLineEditor::DoStartXY()
232 if (fAvoidSignal)
return;
233 fCurlyLine->SetStartPoint(fStartXEntry->GetNumber(), fStartYEntry->GetNumber());
234 fCurlyLine->Paint(fCurlyLine->GetDrawOption());
240 void TCurlyLineEditor::DoEndXY()
242 if (fAvoidSignal)
return;
243 fCurlyLine->SetEndPoint(fEndXEntry->GetNumber(), fEndYEntry->GetNumber());
244 fCurlyLine->Paint(fCurlyLine->GetDrawOption());
251 void TCurlyLineEditor::DoAmplitude()
253 if (fAvoidSignal)
return;
254 fCurlyLine->SetAmplitude((Double_t)fAmplitudeEntry->GetNumber());
255 fCurlyLine->Paint(fCurlyLine->GetDrawOption());
262 void TCurlyLineEditor::DoWaveLength()
264 if (fAvoidSignal)
return;
265 Double_t num = fWaveLengthEntry->GetNumber();
266 fCurlyLine->SetWaveLength(num);
267 fCurlyLine->Paint(GetDrawOption());
274 void TCurlyLineEditor::DoWavy()
276 if (fAvoidSignal)
return;
277 if (fIsWavy->GetState() == kButtonDown)
278 fCurlyLine->SetCurly();
280 fCurlyLine->SetWavy();
281 fCurlyLine->Paint(GetDrawOption());