3 #include "RGeoNodeEditors.h"
5 #include <Reve/GeoNode.h>
8 #include <TVirtualPad.h>
13 #include <TGNumberEntry.h>
14 #include <TGColorSelect.h>
15 #include <TGDoubleSlider.h>
19 //______________________________________________________________________
23 ClassImp(GeoNodeRnrElEditor)
25 GeoNodeRnrElEditor::GeoNodeRnrElEditor(const TGWindow *p,
26 Int_t width, Int_t height,
27 UInt_t options, Pixel_t back) :
28 TGedFrame(p,width, height, options | kVerticalFrame, back),
35 fVizVolumeDaughters(0),
41 // --- Visibility control
43 fVizNode = new TGCheckButton(this, "VizNode");
44 AddFrame(fVizNode, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
47 "Reve::GeoNodeRnrElEditor", this, "DoVizNode()");
49 fVizNodeDaughters = new TGCheckButton(this, "VizNodeDaughters");
50 AddFrame(fVizNodeDaughters, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
51 fVizNodeDaughters->Connect
53 "Reve::GeoNodeRnrElEditor", this, "DoVizNodeDaughters()");
55 fVizVolume = new TGCheckButton(this, "VizVolume");
56 AddFrame(fVizVolume, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
59 "Reve::GeoNodeRnrElEditor", this, "DoVizVolume()");
61 fVizVolumeDaughters = new TGCheckButton(this, "VizVolumeDaughters");
62 AddFrame(fVizVolumeDaughters, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
63 fVizVolumeDaughters->Connect
65 "Reve::GeoNodeRnrElEditor", this, "DoVizVolumeDaughters()");
71 TGHorizontalFrame* f = new TGHorizontalFrame(this);
72 TGLabel *l = new TGLabel(f, "Transparency:");
73 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
74 fTransparency = new TGNumberEntry(f, 0., 6, -1,
75 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
76 TGNumberFormat::kNELLimitMinMax, 0, 100);
77 fTransparency->GetNumberEntry()->SetToolTipText("0 is opaque, 100 fully transparent.");
78 f->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
79 fTransparency->Associate(f);
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->fNode->SetVisibility(fVizNode->IsOn());
107 fNodeRE->UpdateItems();
110 void GeoNodeRnrElEditor::DoVizNodeDaughters()
112 fNodeRE->fNode->VisibleDaughters(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");
158 TGHorizontalFrame* f = new TGHorizontalFrame(this);
159 TGLabel *l = new TGLabel(f, "VisOption:");
160 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
161 fVisOption = new TGNumberEntry(f, 0., 6, -1,
162 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
163 TGNumberFormat::kNELLimitMinMax, 0, 3);
164 fVisOption->GetNumberEntry()->SetToolTipText("0 ~ all final nodes, 1 ~ pure leaves only, 2 ~ path (?)");
165 f->AddFrame(fVisOption, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
166 fVisOption->Associate(f);
167 fVisOption->Connect("ValueSet(Long_t)",
168 "Reve::GeoTopNodeRnrElEditor", this, "DoVisOption()");
169 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
173 TGHorizontalFrame* f = new TGHorizontalFrame(this);
174 TGLabel *l = new TGLabel(f, "VisLevel:");
175 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
176 fVisLevel = new TGNumberEntry(f, 0., 6, -1,
177 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
178 TGNumberFormat::kNELLimitMinMax, 0, 128);
179 fVisLevel->GetNumberEntry()->SetToolTipText("");
180 f->AddFrame(fVisLevel, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
181 fVisLevel->Associate(f);
182 fVisLevel->Connect("ValueSet(Long_t)",
183 "Reve::GeoTopNodeRnrElEditor", this, "DoVisLevel()");
184 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
188 /**************************************************************************/
190 void GeoTopNodeRnrElEditor::SetModel(TObject* obj)
192 fTopNodeRE = dynamic_cast<GeoTopNodeRnrEl*>(obj);
194 fVisOption->SetNumber(fTopNodeRE->GetVisOption());
195 fVisLevel->SetNumber(fTopNodeRE->GetVisLevel());
198 /**************************************************************************/
200 void GeoTopNodeRnrElEditor::DoVisOption()
202 fTopNodeRE->SetVisOption(Int_t(fVisOption->GetNumber()));
205 void GeoTopNodeRnrElEditor::DoVisLevel()
207 fTopNodeRE->SetVisLevel(Int_t(fVisLevel->GetNumber()));