3 #include "GeoNodeEditor.h"
4 #include "RGValuators.h"
6 #include <Reve/GeoNode.h>
9 #include <TVirtualPad.h>
14 #include <TGNumberEntry.h>
15 #include <TGColorSelect.h>
16 #include <TGDoubleSlider.h>
20 //______________________________________________________________________
24 ClassImp(GeoNodeRnrElEditor)
26 GeoNodeRnrElEditor::GeoNodeRnrElEditor(const TGWindow *p,
27 Int_t width, Int_t height,
28 UInt_t options, Pixel_t back) :
29 TGedFrame(p,width, height, options | kVerticalFrame, back),
36 fVizVolumeDaughters(0),
42 // --- Visibility control
44 fVizNode = new TGCheckButton(this, "VizNode");
45 AddFrame(fVizNode, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
48 "Reve::GeoNodeRnrElEditor", this, "DoVizNode()");
50 fVizNodeDaughters = new TGCheckButton(this, "VizNodeDaughters");
51 AddFrame(fVizNodeDaughters, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
52 fVizNodeDaughters->Connect
54 "Reve::GeoNodeRnrElEditor", this, "DoVizNodeDaughters()");
56 fVizVolume = new TGCheckButton(this, "VizVolume");
57 AddFrame(fVizVolume, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
60 "Reve::GeoNodeRnrElEditor", this, "DoVizVolume()");
62 fVizVolumeDaughters = new TGCheckButton(this, "VizVolumeDaughters");
63 AddFrame(fVizVolumeDaughters, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
64 fVizVolumeDaughters->Connect
66 "Reve::GeoNodeRnrElEditor", this, "DoVizVolumeDaughters()");
72 TGHorizontalFrame* f = new TGHorizontalFrame(this);
73 TGLabel *l = new TGLabel(f, "Transparency:");
74 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
75 fTransparency = new TGNumberEntry(f, 0., 6, -1,
76 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
77 TGNumberFormat::kNELLimitMinMax, 0, 100);
78 fTransparency->GetNumberEntry()->SetToolTipText("0 is opaque, 100 fully transparent.");
79 f->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
80 fTransparency->Connect("ValueSet(Long_t)",
81 "Reve::GeoNodeRnrElEditor", this, "DoTransparency()");
82 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
86 /**************************************************************************/
88 void GeoNodeRnrElEditor::SetModel(TObject* obj)
90 fNodeRE = dynamic_cast<GeoNodeRnrEl*>(obj);
91 TGeoNode* node = fNodeRE->fNode;
92 TGeoVolume* vol = node->GetVolume();
94 fVizNode->SetState(node->TGeoAtt::IsVisible() ? kButtonDown : kButtonUp);
95 fVizNodeDaughters->SetState(node->TGeoAtt::IsVisDaughters() ? kButtonDown : kButtonUp);
96 fVizVolume->SetState(vol->IsVisible() ? kButtonDown : kButtonUp);
97 fVizVolumeDaughters->SetState(vol->IsVisDaughters() ? kButtonDown : kButtonUp);
99 fTransparency->SetNumber(vol->GetTransparency());
102 /**************************************************************************/
104 void GeoNodeRnrElEditor::DoVizNode()
106 fNodeRE->SetRnrSelf(fVizNode->IsOn());
110 void GeoNodeRnrElEditor::DoVizNodeDaughters()
112 fNodeRE->SetRnrChildren(fVizNodeDaughters->IsOn());
116 void GeoNodeRnrElEditor::DoVizVolume()
118 fNodeRE->fNode->GetVolume()->SetVisibility(fVizVolume->IsOn());
122 void GeoNodeRnrElEditor::DoVizVolumeDaughters()
124 fNodeRE->fNode->GetVolume()->VisibleDaughters(fVizVolumeDaughters->IsOn());
128 /**************************************************************************/
130 void GeoNodeRnrElEditor::DoTransparency()
132 fNodeRE->fNode->GetVolume()->SetTransparency(char(fTransparency->GetNumber()));
137 /**************************************************************************/
138 /**************************************************************************/
140 //______________________________________________________________________
141 // GeoTopNodeRnrElEditor
144 ClassImp(GeoTopNodeRnrElEditor)
146 GeoTopNodeRnrElEditor::GeoTopNodeRnrElEditor(const TGWindow *p,
147 Int_t width, Int_t height,
148 UInt_t options, Pixel_t back) :
149 TGedFrame(p, width, height, options | kVerticalFrame, back),
155 MakeTitle("GeoTopNode");
159 fVisOption = new RGValuator(this, "VisOption:", 90, 0);
160 fVisOption->SetLabelWidth(labelW);
161 fVisOption->SetShowSlider(kFALSE);
162 fVisOption->SetNELength(4);
164 fVisOption->SetLimits(0, 2, 10, TGNumberFormat::kNESInteger);
165 fVisOption->SetToolTip("Visualization option passed to TGeoPainter.");
166 fVisOption->Connect("ValueSet(Double_t)", "Reve::GeoTopNodeRnrElEditor", this, "DoVisOption()");
167 AddFrame(fVisOption, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
169 fVisLevel = new RGValuator(this, "VisLevel:", 90, 0);
170 fVisLevel->SetLabelWidth(labelW);
171 fVisLevel->SetShowSlider(kFALSE);
172 fVisLevel->SetNELength(4);
174 fVisLevel->SetLimits(0, 10, 10, TGNumberFormat::kNESInteger);
175 fVisLevel->SetToolTip("Level (depth) to which the geometry is traversed.");
176 fVisLevel->Connect("ValueSet(Double_t)", "Reve::GeoTopNodeRnrElEditor", this, "DoVisLevel()");
177 AddFrame(fVisLevel, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
180 /**************************************************************************/
182 void GeoTopNodeRnrElEditor::SetModel(TObject* obj)
184 fTopNodeRE = dynamic_cast<GeoTopNodeRnrEl*>(obj);
186 fVisOption->SetValue(fTopNodeRE->GetVisOption());
187 fVisLevel ->SetValue(fTopNodeRE->GetVisLevel());
190 /**************************************************************************/
192 void GeoTopNodeRnrElEditor::DoVisOption()
194 fTopNodeRE->SetVisOption(Int_t(fVisOption->GetValue()));
198 void GeoTopNodeRnrElEditor::DoVisLevel()
200 fTopNodeRE->SetVisLevel(Int_t(fVisLevel->GetValue()));