Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TEveElementEditor.cxx
Go to the documentation of this file.
1 // @(#)root/eve:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #include "TEveElementEditor.h"
13 #include "TEveElement.h"
14 #include "TEveTransEditor.h"
15 
16 #include "TVirtualPad.h"
17 #include "TColor.h"
18 
19 #include "TGLabel.h"
20 #include "TGButton.h"
21 #include "TGNumberEntry.h"
22 #include "TGColorSelect.h"
23 #include "TGDoubleSlider.h"
24 
25 /** \class TEveElementEditor
26 \ingroup TEve
27 Editor for TEveElement class.
28 */
29 
30 ClassImp(TEveElementEditor);
31 
32 ////////////////////////////////////////////////////////////////////////////////
33 /// Constructor.
34 
35 TEveElementEditor::TEveElementEditor(const TGWindow *p,
36  Int_t width, Int_t height,
37  UInt_t options, Pixel_t back) :
38  TGedFrame(p, width, height, options | kVerticalFrame, back),
39 
40  fRE (0),
41  fHFrame (0),
42  fPreLabel (0),
43  fRnrSelf (0),
44  fRnrChildren (0),
45  fRnrState (0),
46  fMainColor (0),
47  fTransparency (0),
48  fTrans (0)
49 {
50  MakeTitle("TEveElement");
51  fPriority = 0;
52 
53  fHFrame = new TGHorizontalFrame(this);
54 
55  fPreLabel = new TGLabel(fHFrame, "Show:");
56  fHFrame->AddFrame(fPreLabel, new TGLayoutHints(kLHintsLeft, 1, 6, 2, 0));
57  fRnrSelf = new TGCheckButton(fHFrame, "Self");
58  fHFrame->AddFrame(fRnrSelf, new TGLayoutHints(kLHintsLeft, 0, 2, 1, 1));
59  fRnrSelf->Connect
60  ("Toggled(Bool_t)",
61  "TEveElementEditor", this, "DoRnrSelf()");
62 
63  fRnrChildren = new TGCheckButton(fHFrame, "Children");
64  fHFrame->AddFrame(fRnrChildren, new TGLayoutHints(kLHintsLeft, 0, 1, 1, 1));
65  fRnrChildren->Connect
66  ("Toggled(Bool_t)",
67  "TEveElementEditor", this, "DoRnrChildren()");
68 
69  fRnrState = new TGCheckButton(fHFrame, "");
70  fHFrame->AddFrame(fRnrState, new TGLayoutHints(kLHintsLeft, 1, 2, 1, 1));
71  fRnrState->Connect
72  ("Toggled(Bool_t)",
73  "TEveElementEditor", this, "DoRnrState()");
74 
75  fMainColor = new TGColorSelect(fHFrame, 0, -1);
76  fHFrame->AddFrame(fMainColor, new TGLayoutHints(kLHintsLeft, 2, 0, -2, 0));
77  fMainColor->Connect
78  ("ColorSelected(Pixel_t)",
79  "TEveElementEditor", this, "DoMainColor(Pixel_t)");
80 
81  fTransparency = new TGNumberEntry(fHFrame, 0., 2, -1,
82  TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
83  TGNumberFormat::kNELLimitMinMax, 0, 100);
84  fTransparency->SetHeight(18);
85  fTransparency->GetNumberEntry()->SetToolTipText("Transparency: 0 is opaque, 100 fully transparent.");
86  fHFrame->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
87  fTransparency->Connect
88  ("ValueSet(Long_t)",
89  "TEveElementEditor", this, "DoTransparency()");
90 
91  AddFrame(fHFrame, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
92 
93  fTrans = new TEveTransSubEditor(this);
94  fTrans->Connect("UseTrans()", "TEveElementEditor", this, "Update()");
95  fTrans->Connect("TransChanged()", "TEveElementEditor", this, "Update()");
96  AddFrame(fTrans, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 0, 0));
97 }
98 
99 ////////////////////////////////////////////////////////////////////////////////
100 /// Set model object.
101 
102 void TEveElementEditor::SetModel(TObject* obj)
103 {
104  fRE = dynamic_cast<TEveElement*>(obj);
105 
106  fPreLabel ->UnmapWindow();
107  fRnrSelf ->UnmapWindow();
108  fRnrChildren->UnmapWindow();
109  fRnrState ->UnmapWindow();
110  if (fRE->CanEditElement()) {
111  fPreLabel->MapWindow();
112  if (fRE->SingleRnrState()) {
113  fRnrState->SetState(fRE->GetRnrState() ? kButtonDown : kButtonUp);
114  fRnrState->MapWindow();
115  } else {
116  fRnrSelf->SetState(fRE->GetRnrSelf() ? kButtonDown : kButtonUp);
117  fRnrChildren->SetState(fRE->GetRnrChildren() ? kButtonDown : kButtonUp);
118  fRnrSelf->MapWindow();
119  fRnrChildren->MapWindow();
120  }
121  }
122 
123  if (fRE->CanEditMainColor()) {
124  fMainColor->SetColor(TColor::Number2Pixel(fRE->GetMainColor()), kFALSE);
125  fMainColor->MapWindow();
126  } else {
127  fMainColor->UnmapWindow();
128  }
129  if (fRE->CanEditMainTransparency()) {
130  fTransparency->SetNumber(fRE->GetMainTransparency());
131  fTransparency->MapWindow();
132  } else {
133  fTransparency->UnmapWindow();
134  }
135  if (fRE->CanEditMainTrans()) {
136  fTrans->SetModel(fRE->PtrMainTrans());
137  fTrans->MapWindow();
138  } else {
139  fTrans->UnmapWindow();
140  }
141 
142  fHFrame->Layout();
143 }
144 
145 ////////////////////////////////////////////////////////////////////////////////
146 /// Slot for RnrSelf.
147 
148 void TEveElementEditor::DoRnrSelf()
149 {
150  fRE->SetRnrSelf(fRnrSelf->IsOn());
151  Update();
152 }
153 
154 ////////////////////////////////////////////////////////////////////////////////
155 /// Slot for RnrChildren.
156 
157 void TEveElementEditor::DoRnrChildren()
158 {
159  fRE->SetRnrChildren(fRnrChildren->IsOn());
160  Update();
161 }
162 
163 ////////////////////////////////////////////////////////////////////////////////
164 /// Slot for RnrState.
165 
166 void TEveElementEditor::DoRnrState()
167 {
168  fRE->SetRnrState(fRnrState->IsOn());
169  Update();
170 }
171 
172 ////////////////////////////////////////////////////////////////////////////////
173 /// Slot for MainColor.
174 
175 void TEveElementEditor::DoMainColor(Pixel_t color)
176 {
177  fRE->SetMainColorPixel(color);
178  Update();
179 }
180 
181 ////////////////////////////////////////////////////////////////////////////////
182 /// Slot for Transparency.
183 
184 void TEveElementEditor::DoTransparency()
185 {
186  fRE->SetMainTransparency((Char_t)(fTransparency->GetNumber()));
187  Update();
188 }