3 #include "ZTransEditor.h"
4 #include <Reve/ZTrans.h>
5 #include <Reve/RGValuators.h>
7 #include <TVirtualPad.h>
14 //______________________________________________________________________
18 ClassImp(ZTransSubEditor)
20 ZTransSubEditor::ZTransSubEditor(TGWindow* p) :
26 fTopHorFrame = new TGHorizontalFrame(this);
28 fUseTrans = new TGCheckButton(fTopHorFrame, "UseTrans");
29 fTopHorFrame->AddFrame(fUseTrans, new TGLayoutHints(kLHintsLeft, 1,2,0,0));
30 fUseTrans->Connect("Toggled(Bool_t)", "Reve::ZTransSubEditor", this, "DoUseTrans()");
31 fEditTrans = new TGCheckButton(fTopHorFrame, "EditTrans");
32 fTopHorFrame->AddFrame(fEditTrans, new TGLayoutHints(kLHintsLeft, 2,1,0,0));
33 fEditTrans->Connect("Toggled(Bool_t)"," Reve::ZTransSubEditor", this, "DoEditTrans()");
35 AddFrame(fTopHorFrame, new TGLayoutHints(kLHintsTop, 0,0,2,1));
38 // --- Trans edit part
40 fEditTransFrame = new TGVerticalFrame(this);
42 fPos = new RGTriVecValuator(fEditTransFrame, "Pos", 160, 20);
43 fPos->SetLabelWidth(9);
45 fPos->Build(kFALSE, "x", "y", "z");
46 fPos->SetLimits(-1e5, 1e5, TGNumberFormat::kNESRealThree);
47 fEditTransFrame->AddFrame(fPos, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,0));
49 fRot = new RGTriVecValuator(fEditTransFrame, "Rot", 160, 20);
50 fRot->SetLabelWidth(17);
52 fRot->Build(kFALSE, "Rz", "RY", "Rx");
53 fRot->SetLimits(-360, 360, TGNumberFormat::kNESRealOne);
54 fEditTransFrame->AddFrame(fRot, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,0));
56 fScale = new RGTriVecValuator(fEditTransFrame, "Scale", 160, 20);
57 fScale->SetLabelWidth(17);
58 fScale->SetNELength(5);
59 fScale->Build(kFALSE, "Sx", "Sy", "Sz");
60 fScale->SetLimits(1e-2, 1e2, TGNumberFormat::kNESRealTwo);
61 fEditTransFrame->AddFrame(fScale, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,0));
63 fPos ->Connect("ValueSet()", "Reve::ZTransSubEditor", this, "DoTransChanged()");
64 fRot ->Connect("ValueSet()", "Reve::ZTransSubEditor", this, "DoTransChanged()");
65 fScale->Connect("ValueSet()", "Reve::ZTransSubEditor", this, "DoTransChanged()");
68 TGHorizontalFrame* hframe = new TGHorizontalFrame(fEditTransFrame);
70 fAutoUpdate = new TGCheckButton(hframe, "AutoUpdate");
71 hframe->AddFrame(fAutoUpdate, new TGLayoutHints(kLHintsLeft, 1,10,1,1));
72 fUpdate = new TGTextButton(hframe, "Update");
73 hframe->AddFrame(fUpdate, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5,5,1,1));
74 fUpdate->Connect("Clicked()", "Reve::ZTransSubEditor", this, "TransChanged()");
76 fEditTransFrame->AddFrame(hframe, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,0));
79 AddFrame(fEditTransFrame, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,1,2));
82 /**************************************************************************/
84 void ZTransSubEditor::SetDataFromTrans(ZTrans* t)
88 fUseTrans ->SetState(fTrans->fUseTrans ? kButtonDown : kButtonUp);
89 fEditTrans->SetState(fTrans->fEditTrans ? kButtonDown : kButtonUp);
90 if (fTrans->fEditTrans)
91 fEditTransFrame->MapWindow();
93 fEditTransFrame->UnmapWindow();
94 ((TGMainFrame*)fEditTransFrame->GetMainFrame())->Layout();
96 fPos->SetValues(fTrans->ArrT());
98 fTrans->GetRotAngles(a);
99 a[0] *= TMath::RadToDeg();
100 a[1] *= TMath::RadToDeg();
101 a[2] *= TMath::RadToDeg();
104 fTrans->GetScale(x, y, z);
105 fScale->SetValues(x, y, z);
108 void ZTransSubEditor::SetTransFromData()
113 fTrans->SetRotByAngles(v[0]*TMath::DegToRad(), v[1]*TMath::DegToRad(), v[2]*TMath::DegToRad());
116 fScale->GetValues(v);
117 fTrans->Scale(v[0], v[1], v[2]);
120 /**************************************************************************/
122 void ZTransSubEditor::UseTrans()
127 void ZTransSubEditor::TransChanged()
130 Emit("TransChanged()");
133 /**************************************************************************/
135 void ZTransSubEditor::DoUseTrans()
137 fTrans->SetUseTrans(fUseTrans->IsOn());
141 void ZTransSubEditor::DoEditTrans()
143 fTrans->SetEditTrans(fEditTrans->IsOn());
144 if (fEditTrans->IsOn())
145 fEditTransFrame->MapWindow();
147 fEditTransFrame->UnmapWindow();
148 ((TGMainFrame*)fEditTransFrame->GetMainFrame())->Layout();
151 void ZTransSubEditor::DoTransChanged()
153 if (fAutoUpdate->IsOn())
157 /**************************************************************************/
158 /**************************************************************************/
159 /**************************************************************************/
161 //______________________________________________________________________
165 ClassImp(ZTransEditor)
167 ZTransEditor::ZTransEditor(const TGWindow *p, Int_t width, Int_t height,
168 UInt_t options, Pixel_t back) :
169 TGedFrame(p, width, height, options | kVerticalFrame, back),
171 // Initialize widget pointers to 0
176 // fXYZZ = new TGSomeWidget(this, ...);
177 // AddFrame(fXYZZ, new TGLayoutHints(...));
178 // fXYZZ->Connect("SignalName()", "Reve::ZTransEditor", this, "DoXYZZ()");
181 ZTransEditor::~ZTransEditor()
184 /**************************************************************************/
186 void ZTransEditor::SetModel(TObject* obj)
188 fM = dynamic_cast<ZTrans*>(obj);
190 // Set values of widgets
191 // fXYZZ->SetValue(fM->GetXYZZ());
194 /**************************************************************************/
196 // Implements callback/slot methods
198 // void ZTransEditor::DoXYZZ()
200 // fM->SetXYZZ(fXYZZ->GetValue());