32 ClassImp(TCurlyArcEditor);
45 TCurlyArcEditor::TCurlyArcEditor(
const TGWindow *p, Int_t width,
46 Int_t height, UInt_t options, Pixel_t back)
47 : TGedFrame(p, width, height, options | kVerticalFrame, back)
51 MakeTitle(
"Curly Arc");
53 TGCompositeFrame *f3 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
54 AddFrame(f3,
new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));
56 TGCompositeFrame *f3a =
new TGCompositeFrame(f3, 80, 20);
57 f3->AddFrame(f3a,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
59 TGLabel *fRadiusLabel =
new TGLabel(f3a,
"Radius:");
60 f3a->AddFrame(fRadiusLabel,
new TGLayoutHints(kLHintsNormal, 8, 0, 5, 5));
62 TGLabel *fPhiminLabel =
new TGLabel(f3a,
"Phimin:");
63 f3a->AddFrame(fPhiminLabel,
new TGLayoutHints(kLHintsNormal, 8, 0, 5, 5));
65 TGLabel *fPhimaxLabel =
new TGLabel(f3a,
"Phimax:");
66 f3a->AddFrame(fPhimaxLabel,
new TGLayoutHints(kLHintsNormal, 8, 0, 5, 5));
68 TGLabel *fCenterXLabel =
new TGLabel(f3a,
"Center X:");
69 f3a->AddFrame(fCenterXLabel,
new TGLayoutHints(kLHintsNormal, 8, 0, 6, 5));
71 TGLabel *fCenterYLabel =
new TGLabel(f3a,
"Y:");
72 f3a->AddFrame(fCenterYLabel,
new TGLayoutHints(kLHintsNormal, 49, 0, 6, 0));
74 TGCompositeFrame *f3b =
new TGCompositeFrame(f3, 80, 20);
75 f3->AddFrame(f3b,
new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
77 fRadiusEntry =
new TGNumberEntry(f3b, 0.02, 7, kCRLA_RAD,
78 TGNumberFormat::kNESRealThree,
79 TGNumberFormat::kNEANonNegative,
80 TGNumberFormat::kNELNoLimits);
81 fRadiusEntry->GetNumberEntry()->SetToolTipText(
"Set radius of arc.");
82 f3b->AddFrame(fRadiusEntry,
new TGLayoutHints(kLHintsLeft, 6, 1, 3, 1));
84 fPhiminEntry =
new TGNumberEntry(f3b, 0, 7, kCRLA_FMIN,
85 TGNumberFormat::kNESInteger,
86 TGNumberFormat::kNEANonNegative,
87 TGNumberFormat::kNELLimitMinMax, 0, 360);
88 fPhiminEntry->GetNumberEntry()->SetToolTipText(
"Set Phimin in degrees.");
89 f3b->AddFrame(fPhiminEntry,
new TGLayoutHints(kLHintsLeft, 6, 1, 3, 1));
91 fPhimaxEntry =
new TGNumberEntry(f3b, 0, 7, kCRLA_FMAX,
92 TGNumberFormat::kNESInteger,
93 TGNumberFormat::kNEANonNegative,
94 TGNumberFormat::kNELLimitMinMax, 0, 360);
95 fPhimaxEntry->GetNumberEntry()->SetToolTipText(
"Set Phimax in degrees.");
96 f3b->AddFrame(fPhimaxEntry,
new TGLayoutHints(kLHintsLeft, 6, 1, 3, 1));
98 fCenterXEntry =
new TGNumberEntry(f3b, 0.0, 7, kCRLA_CX,
99 TGNumberFormat::kNESRealThree,
100 TGNumberFormat::kNEANonNegative,
101 TGNumberFormat::kNELNoLimits);
102 fCenterXEntry->GetNumberEntry()->SetToolTipText(
"Set center X coordinate.");
103 f3b->AddFrame(fCenterXEntry,
new TGLayoutHints(kLHintsLeft, 6, 1, 3, 1));
105 fCenterYEntry =
new TGNumberEntry(f3b, 0.0, 7, kCRLA_CY,
106 TGNumberFormat::kNESRealThree,
107 TGNumberFormat::kNEANonNegative,
108 TGNumberFormat::kNELNoLimits);
109 fCenterYEntry->GetNumberEntry()->SetToolTipText(
"Set center Y coordinate.");
110 f3b->AddFrame(fCenterYEntry,
new TGLayoutHints(kLHintsLeft, 6, 1, 3, 1));
117 TCurlyArcEditor::~TCurlyArcEditor()
124 void TCurlyArcEditor::ConnectSignals2Slots()
126 fCenterXEntry->Connect(
"ValueSet(Long_t)",
"TCurlyArcEditor",
this,
"DoCenterXY()");
127 (fCenterXEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyArcEditor",
this,
"DoCenterXY()");
128 fCenterYEntry->Connect(
"ValueSet(Long_t)",
"TCurlyArcEditor",
this,
"DoCenterXY()");
129 (fCenterYEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyArcEditor",
this,
"DoCenterXY()");
130 fRadiusEntry->Connect(
"ValueSet(Long_t)",
"TCurlyArcEditor",
this,
"DoRadius()");
131 (fRadiusEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyArcEditor",
this,
"DoRadius()");
132 fPhiminEntry->Connect(
"ValueSet(Long_t)",
"TCurlyArcEditor",
this,
"DoPhimin()");
133 (fPhiminEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyArcEditor",
this,
"DoPhimin()");
134 fPhimaxEntry->Connect(
"ValueSet(Long_t)",
"TCurlyArcEditor",
this,
"DoPhimax()");
135 (fPhimaxEntry->GetNumberEntry())->Connect(
"ReturnPressed()",
"TCurlyArcEditor",
this,
"DoPhimax()");
143 void TCurlyArcEditor::SetModel(TObject* obj)
145 fCurlyArc = (TCurlyArc *)obj;
146 fAvoidSignal = kTRUE;
148 Double_t val = fCurlyArc->GetRadius();
149 fRadiusEntry->SetNumber(val);
151 val = fCurlyArc->GetPhimin();
152 fPhiminEntry->SetNumber(val);
154 val = fCurlyArc->GetPhimax();
155 fPhimaxEntry->SetNumber(val);
157 val = fCurlyArc->GetStartX();
158 fCenterXEntry->SetNumber(val);
160 val = fCurlyArc->GetStartY();
161 fCenterYEntry->SetNumber(val);
163 if (fInit) ConnectSignals2Slots();
165 fAvoidSignal = kFALSE;
171 void TCurlyArcEditor::DoCenterXY()
173 if (fAvoidSignal)
return;
174 fCurlyArc->SetCenter((Double_t)fCenterXEntry->GetNumber(), (Double_t)fCenterYEntry->GetNumber());
175 fCurlyArc->Paint(fCurlyArc->GetDrawOption());
182 void TCurlyArcEditor::DoRadius()
184 if (fAvoidSignal)
return;
185 fCurlyArc->SetRadius((Double_t)fRadiusEntry->GetNumber());
186 fCurlyArc->Paint(fCurlyArc->GetDrawOption());
193 void TCurlyArcEditor::DoPhimin()
195 if (fAvoidSignal)
return;
196 fCurlyArc->SetPhimin((Double_t)fPhiminEntry->GetNumber());
197 fCurlyArc->Paint(fCurlyArc->GetDrawOption());
204 void TCurlyArcEditor::DoPhimax()
206 if (fAvoidSignal)
return;
207 fCurlyArc->SetPhimax((Double_t)fPhimaxEntry->GetNumber());
208 fCurlyArc->Paint(fCurlyArc->GetDrawOption());