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,
26 Int_t width, Int_t height,
27 UInt_t options, Pixel_t back) :
28 TGedFrame(p, id, 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));
87 TClass *cl = GeoNodeRnrEl::Class();
88 TGedElement *ge = new TGedElement;
91 cl->GetEditorList()->Add(ge);
94 /**************************************************************************/
96 void GeoNodeRnrElEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
101 if (!obj || !obj->InheritsFrom(GeoNodeRnrEl::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
109 fNodeRE = dynamic_cast<GeoNodeRnrEl*>(fModel);
110 TGeoNode* node = fNodeRE->fNode;
111 TGeoVolume* vol = node->GetVolume();
113 fVizNode->SetState(node->TGeoAtt::IsVisible() ? kButtonDown : kButtonUp);
114 fVizNodeDaughters->SetState(node->TGeoAtt::IsVisDaughters() ? kButtonDown : kButtonUp);
115 fVizVolume->SetState(vol->IsVisible() ? kButtonDown : kButtonUp);
116 fVizVolumeDaughters->SetState(vol->IsVisDaughters() ? kButtonDown : kButtonUp);
118 fTransparency->SetNumber(vol->GetTransparency());
123 /**************************************************************************/
125 void GeoNodeRnrElEditor::DoVizNode()
127 fNodeRE->fNode->SetVisibility(fVizNode->IsOn());
128 fNodeRE->UpdateItems();
131 void GeoNodeRnrElEditor::DoVizNodeDaughters()
133 fNodeRE->fNode->VisibleDaughters(fVizNodeDaughters->IsOn());
137 void GeoNodeRnrElEditor::DoVizVolume()
139 fNodeRE->fNode->GetVolume()->SetVisibility(fVizVolume->IsOn());
143 void GeoNodeRnrElEditor::DoVizVolumeDaughters()
145 fNodeRE->fNode->GetVolume()->VisibleDaughters(fVizVolumeDaughters->IsOn());
149 /**************************************************************************/
151 void GeoNodeRnrElEditor::DoTransparency()
153 fNodeRE->fNode->GetVolume()->SetTransparency(char(fTransparency->GetNumber()));
158 /**************************************************************************/
159 /**************************************************************************/
161 //______________________________________________________________________
162 // GeoTopNodeRnrElEditor
165 ClassImp(GeoTopNodeRnrElEditor)
167 GeoTopNodeRnrElEditor::GeoTopNodeRnrElEditor(const TGWindow *p, Int_t id,
168 Int_t width, Int_t height,
169 UInt_t options, Pixel_t back) :
170 TGedFrame(p, id, width, height, options | kVerticalFrame, back),
176 MakeTitle("GeoTopNode");
179 TGHorizontalFrame* f = new TGHorizontalFrame(this);
180 TGLabel *l = new TGLabel(f, "VisOption:");
181 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
182 fVisOption = new TGNumberEntry(f, 0., 6, -1,
183 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
184 TGNumberFormat::kNELLimitMinMax, 0, 3);
185 fVisOption->GetNumberEntry()->SetToolTipText("0 ~ all final nodes, 1 ~ pure leaves only, 2 ~ path (?)");
186 f->AddFrame(fVisOption, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
187 fVisOption->Associate(f);
188 fVisOption->Connect("ValueSet(Long_t)",
189 "Reve::GeoTopNodeRnrElEditor", this, "DoVisOption()");
190 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
194 TGHorizontalFrame* f = new TGHorizontalFrame(this);
195 TGLabel *l = new TGLabel(f, "VisLevel:");
196 f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
197 fVisLevel = new TGNumberEntry(f, 0., 6, -1,
198 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
199 TGNumberFormat::kNELLimitMinMax, 0, 128);
200 fVisLevel->GetNumberEntry()->SetToolTipText("");
201 f->AddFrame(fVisLevel, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
202 fVisLevel->Associate(f);
203 fVisLevel->Connect("ValueSet(Long_t)",
204 "Reve::GeoTopNodeRnrElEditor", this, "DoVisLevel()");
205 AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
209 // What is this crap?
210 TClass *cl = GeoNodeRnrEl::Class();
211 TGedElement *ge = new TGedElement;
212 ge->fGedFrame = this;
214 cl->GetEditorList()->Add(ge);
217 /**************************************************************************/
219 void GeoTopNodeRnrElEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
224 if (!obj || !obj->InheritsFrom(GeoTopNodeRnrEl::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
232 fTopNodeRE = dynamic_cast<GeoTopNodeRnrEl*>(fModel);
234 fVisOption->SetNumber(fTopNodeRE->GetVisOption());
235 fVisLevel->SetNumber(fTopNodeRE->GetVisLevel());
240 /**************************************************************************/
242 void GeoTopNodeRnrElEditor::DoVisOption()
244 fTopNodeRE->SetVisOption(Int_t(fVisOption->GetNumber()));
247 void GeoTopNodeRnrElEditor::DoVisLevel()
249 fTopNodeRE->SetVisLevel(Int_t(fVisLevel->GetNumber()));