27 ClassImp(TEveTransSubEditor);
32 TEveTransSubEditor::TEveTransSubEditor(TGWindow* p) :
47 fTopHorFrame =
new TGHorizontalFrame(
this);
49 fUseTrans =
new TGCheckButton(fTopHorFrame,
"UseTrans");
50 fTopHorFrame->AddFrame(fUseTrans,
new TGLayoutHints(kLHintsLeft, 1,2,0,0));
51 fUseTrans->Connect(
"Toggled(Bool_t)",
"TEveTransSubEditor",
this,
"DoUseTrans()");
52 fEditTrans =
new TGCheckButton(fTopHorFrame,
"EditTrans");
53 fTopHorFrame->AddFrame(fEditTrans,
new TGLayoutHints(kLHintsLeft, 2,1,0,0));
54 fEditTrans->Connect(
"Toggled(Bool_t)",
"TEveTransSubEditor",
this,
"DoEditTrans()");
56 AddFrame(fTopHorFrame,
new TGLayoutHints(kLHintsTop, 0,0,2,1));
60 fEditTransFrame =
new TGVerticalFrame(
this);
62 TGFont *font = gClient->GetFont(
"-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1");
64 TGHorizontalFrame* hfp =
new TGHorizontalFrame(fEditTransFrame);
65 TGLabel* labp =
new TGLabel(hfp,
"Location");
66 labp->SetTextFont(font);
68 fEditTransFrame->AddFrame(hfp,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,2,0));
69 fPos =
new TEveGTriVecValuator(fEditTransFrame,
"Pos", 160, 20);
71 fPos->Build(kFALSE,
"",
"",
"");
72 fPos->SetLimits(-1e5, 1e5, TGNumberFormat::kNESRealThree);
73 fPos->GetValuator(0)->SetToolTip(
"X coordinate");
74 fPos->GetValuator(1)->SetToolTip(
"Y coordinate");
75 fPos->GetValuator(2)->SetToolTip(
"Z coordinate");
76 fEditTransFrame->AddFrame(fPos,
new TGLayoutHints(kLHintsTop , 0,0,0,0));
78 TGHorizontalFrame* hfr =
new TGHorizontalFrame(fEditTransFrame);
79 TGLabel* labr =
new TGLabel(hfr,
"Rotation");
80 labr->SetTextFont(font);
82 fEditTransFrame->AddFrame(hfr,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,2,0));
83 fRot =
new TEveGTriVecValuator(fEditTransFrame,
"Rot", 160, 20);
85 fRot->Build(kFALSE,
"",
"",
"");
86 fRot->SetLimits(-360, 360, TGNumberFormat::kNESRealOne);
87 fRot->GetValuator(0)->SetToolTip(
"X coordinate");
88 fRot->GetValuator(1)->SetToolTip(
"Y coordinate");
89 fRot->GetValuator(2)->SetToolTip(
"Z coordinate");
90 fEditTransFrame->AddFrame(fRot,
new TGLayoutHints(kLHintsTop , 0,0, 0, 0));
92 TGHorizontalFrame* hfs =
new TGHorizontalFrame(fEditTransFrame);
93 TGLabel* labs =
new TGLabel(hfs,
"Scale");
94 labs->SetTextFont(font);
96 fEditTransFrame->AddFrame(hfs,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,2,0));
97 fScale =
new TEveGTriVecValuator(fEditTransFrame,
"Scale", 160, 20);
98 fScale->SetNELength(6);
99 fScale->Build(kFALSE,
"",
"",
"");
100 fScale->SetLimits(1e-2, 1e2, TGNumberFormat::kNESRealTwo);
101 fScale->GetValuator(0)->SetToolTip(
"X coordinate");
102 fScale->GetValuator(1)->SetToolTip(
"Y coordinate");
103 fScale->GetValuator(2)->SetToolTip(
"Z coordinate");
104 fEditTransFrame->AddFrame(fScale,
new TGLayoutHints(kLHintsTop , 0,0,0, 2));
106 fPos ->Connect(
"ValueSet()",
"TEveTransSubEditor",
this,
"DoTransChanged()");
107 fRot ->Connect(
"ValueSet()",
"TEveTransSubEditor",
this,
"DoTransChanged()");
108 fScale->Connect(
"ValueSet()",
"TEveTransSubEditor",
this,
"DoTransChanged()");
111 TGHorizontalFrame* hframe =
new TGHorizontalFrame(fEditTransFrame);
112 fAutoUpdate =
new TGCheckButton(hframe,
"AutoUpdate");
113 hframe->AddFrame(fAutoUpdate,
new TGLayoutHints(kLHintsLeft, 1,1,1,1));
114 fUpdate =
new TGTextButton(hframe,
"Update");
115 hframe->AddFrame(fUpdate,
new TGLayoutHints(kLHintsLeft, 0,0,1,1));
116 fUpdate->Connect(
"Clicked()",
"TEveTransSubEditor",
this,
"TransChanged()");
118 fEditTransFrame->AddFrame(hframe,
new TGLayoutHints(kLHintsTop , 0,0,4,0));
121 AddFrame(fEditTransFrame,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,1,2));
127 void TEveTransSubEditor::SetModel(TEveTrans* t)
131 fUseTrans ->SetState(fTrans->fUseTrans ? kButtonDown : kButtonUp);
132 fEditTrans->SetState(fTrans->fEditTrans ? kButtonDown : kButtonUp);
133 if (fTrans->fEditTrans)
135 for (Int_t i=0; i<3; ++i)
137 fRot ->GetValuator(i)->GetEntry()->SetState(fTrans->GetEditRotation());
138 fScale->GetValuator(i)->GetEntry()->SetState(fTrans->GetEditScale());
140 fEditTransFrame->MapWindow();
144 fEditTransFrame->UnmapWindow();
147 ((TGMainFrame*)fEditTransFrame->GetMainFrame())->Layout();
149 fPos->SetValues(fTrans->ArrT());
151 fTrans->GetRotAngles(a);
152 a[0] *= TMath::RadToDeg();
153 a[1] *= TMath::RadToDeg();
154 a[2] *= TMath::RadToDeg();
157 fTrans->GetScale(x, y, z);
158 fScale->SetValues(x, y, z);
164 void TEveTransSubEditor::SetTransFromData()
169 fTrans->SetRotByAngles(v[0]*TMath::DegToRad(), v[1]*TMath::DegToRad(), v[2]*TMath::DegToRad());
172 fScale->GetValues(v);
173 fTrans->Scale(v[0], v[1], v[2]);
179 void TEveTransSubEditor::UseTrans()
187 void TEveTransSubEditor::TransChanged()
190 Emit(
"TransChanged()");
196 void TEveTransSubEditor::DoUseTrans()
198 fTrans->SetUseTrans(fUseTrans->IsOn());
205 void TEveTransSubEditor::DoEditTrans()
207 fTrans->SetEditTrans(fEditTrans->IsOn());
214 void TEveTransSubEditor::DoTransChanged()
216 if (fAutoUpdate->IsOn())
225 ClassImp(TEveTransEditor);
230 TEveTransEditor::TEveTransEditor(
const TGWindow *p, Int_t width, Int_t height,
231 UInt_t options, Pixel_t back) :
232 TGedFrame(p, width, height, options | kVerticalFrame, back),
236 MakeTitle(
"TEveTrans");
238 fSE =
new TEveTransSubEditor(
this);
239 AddFrame(fSE,
new TGLayoutHints(kLHintsTop, 2, 0, 2, 2));
240 fSE->Connect(
"UseTrans()",
"TEveTransEditor",
this,
"Update()");
241 fSE->Connect(
"TransChanged()",
"TEveTransEditor",
this,
"Update()");
247 void TEveTransEditor::SetModel(TObject* obj)
249 fM =
dynamic_cast<TEveTrans*
>(obj);