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, Int_t id, Int_t width, Int_t height,
26 UInt_t options, Pixel_t back) :
27 TGedFrame(p, id, width, height, options | kVerticalFrame, back)
32 // --- Visibility control
34 fVizNode = new TGCheckButton(this, "VizNode");
35 AddFrame(fVizNode, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
38 "Reve::GeoNodeRnrElEditor", this, "DoVizNode()");
40 fVizNodeDaughters = new TGCheckButton(this, "VizNodeDaughters");
41 AddFrame(fVizNodeDaughters, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
42 fVizNodeDaughters->Connect
44 "Reve::GeoNodeRnrElEditor", this, "DoVizNodeDaughters()");
46 fVizVolume = new TGCheckButton(this, "VizVolume");
47 AddFrame(fVizVolume, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
50 "Reve::GeoNodeRnrElEditor", this, "DoVizVolume()");
52 fVizVolumeDaughters = new TGCheckButton(this, "VizVolumeDaughters");
53 AddFrame(fVizVolumeDaughters, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
54 fVizVolumeDaughters->Connect
56 "Reve::GeoNodeRnrElEditor", this, "DoVizVolumeDaughters()");
62 TGHorizontalFrame* f = new TGHorizontalFrame(this);
63 TGLabel *l = new TGLabel(f, "Transparency:");
64 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
65 fTransparency = new TGNumberEntry(f, 0., 6, -1,
66 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
67 TGNumberFormat::kNELLimitMinMax, 0, 100);
68 fTransparency->GetNumberEntry()->SetToolTipText("0 is opaque, 100 fully transparent.");
69 f->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
70 fTransparency->Associate(f);
71 fTransparency->Connect("ValueSet(Long_t)",
72 "Reve::GeoNodeRnrElEditor", this, "DoTransparency()");
73 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
78 TClass *cl = GeoNodeRnrEl::Class();
79 TGedElement *ge = new TGedElement;
82 cl->GetEditorList()->Add(ge);
85 /**************************************************************************/
87 void GeoNodeRnrElEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
92 if (!obj || !obj->InheritsFrom(GeoNodeRnrEl::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
100 fNodeRE = dynamic_cast<GeoNodeRnrEl*>(fModel);
101 TGeoNode* node = fNodeRE->fNode;
102 TGeoVolume* vol = node->GetVolume();
104 fVizNode->SetState(node->TGeoAtt::IsVisible() ? kButtonDown : kButtonUp);
105 fVizNodeDaughters->SetState(node->TGeoAtt::IsVisDaughters() ? kButtonDown : kButtonUp);
106 fVizVolume->SetState(vol->IsVisible() ? kButtonDown : kButtonUp);
107 fVizVolumeDaughters->SetState(vol->IsVisDaughters() ? kButtonDown : kButtonUp);
109 fTransparency->SetNumber(vol->GetTransparency());
114 /**************************************************************************/
116 void GeoNodeRnrElEditor::DoVizNode()
118 fNodeRE->fNode->SetVisibility(fVizNode->IsOn());
119 fNodeRE->FullUpdate();
122 void GeoNodeRnrElEditor::DoVizNodeDaughters()
124 fNodeRE->fNode->VisibleDaughters(fVizNodeDaughters->IsOn());
128 void GeoNodeRnrElEditor::DoVizVolume()
130 fNodeRE->fNode->GetVolume()->SetVisibility(fVizVolume->IsOn());
134 void GeoNodeRnrElEditor::DoVizVolumeDaughters()
136 fNodeRE->fNode->GetVolume()->VisibleDaughters(fVizVolumeDaughters->IsOn());
140 /**************************************************************************/
142 void GeoNodeRnrElEditor::DoTransparency()
144 fNodeRE->fNode->GetVolume()->SetTransparency(char(fTransparency->GetNumber()));
149 /**************************************************************************/
150 /**************************************************************************/
152 //______________________________________________________________________
153 // GeoTopNodeRnrElEditor
156 ClassImp(GeoTopNodeRnrElEditor)
158 GeoTopNodeRnrElEditor::GeoTopNodeRnrElEditor(const TGWindow *p, Int_t id, Int_t width, Int_t height,
159 UInt_t options, Pixel_t back) :
160 TGedFrame(p, id, width, height, options | kVerticalFrame, back)
163 MakeTitle("GeoTopNode");
166 TGHorizontalFrame* f = new TGHorizontalFrame(this);
167 TGLabel *l = new TGLabel(f, "VisOption:");
168 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
169 fVisOption = new TGNumberEntry(f, 0., 6, -1,
170 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
171 TGNumberFormat::kNELLimitMinMax, 0, 3);
172 fVisOption->GetNumberEntry()->SetToolTipText("0 ~ all final nodes, 1 ~ pure leaves only, 2 ~ path (?)");
173 f->AddFrame(fVisOption, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
174 fVisOption->Associate(f);
175 fVisOption->Connect("ValueSet(Long_t)",
176 "Reve::GeoTopNodeRnrElEditor", this, "DoVisOption()");
177 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
181 TGHorizontalFrame* f = new TGHorizontalFrame(this);
182 TGLabel *l = new TGLabel(f, "VisLevel:");
183 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
184 fVisLevel = new TGNumberEntry(f, 0., 6, -1,
185 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
186 TGNumberFormat::kNELLimitMinMax, 0, 128);
187 fVisLevel->GetNumberEntry()->SetToolTipText("");
188 f->AddFrame(fVisLevel, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
189 fVisLevel->Associate(f);
190 fVisLevel->Connect("ValueSet(Long_t)",
191 "Reve::GeoTopNodeRnrElEditor", this, "DoVisLevel()");
192 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
196 // What is this crap?
197 TClass *cl = GeoNodeRnrEl::Class();
198 TGedElement *ge = new TGedElement;
199 ge->fGedFrame = this;
201 cl->GetEditorList()->Add(ge);
204 /**************************************************************************/
206 void GeoTopNodeRnrElEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
211 if (!obj || !obj->InheritsFrom(GeoTopNodeRnrEl::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
219 fTopNodeRE = dynamic_cast<GeoTopNodeRnrEl*>(fModel);
221 fVisOption->SetNumber(fTopNodeRE->GetVisOption());
222 fVisLevel->SetNumber(fTopNodeRE->GetVisLevel());
227 /**************************************************************************/
229 void GeoTopNodeRnrElEditor::DoVisOption()
231 fTopNodeRE->SetVisOption(Int_t(fVisOption->GetNumber()));
234 void GeoTopNodeRnrElEditor::DoVisLevel()
236 fTopNodeRE->SetVisLevel(Int_t(fVisLevel->GetNumber()));