Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
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 "TColor.h"
17
18#include "TGLabel.h"
19#include "TGNumberEntry.h"
20#include "TGColorSelect.h"
21
22/** \class TEveElementEditor
23\ingroup TEve
24Editor for TEveElement class.
25*/
26
27
28////////////////////////////////////////////////////////////////////////////////
29/// Constructor.
30
32 Int_t width, Int_t height,
33 UInt_t options, Pixel_t back) :
34 TGedFrame(p, width, height, options | kVerticalFrame, back),
35
36 fRE (nullptr),
37 fHFrame (nullptr),
38 fPreLabel (nullptr),
39 fRnrSelf (nullptr),
40 fRnrChildren (nullptr),
41 fRnrState (nullptr),
42 fMainColor (nullptr),
43 fTransparency (nullptr),
44 fTrans (nullptr)
45{
46 MakeTitle("TEveElement");
47 fPriority = 0;
48
49 fHFrame = new TGHorizontalFrame(this);
50
51 fPreLabel = new TGLabel(fHFrame, "Show:");
52 fHFrame->AddFrame(fPreLabel, new TGLayoutHints(kLHintsLeft, 1, 6, 2, 0));
53 fRnrSelf = new TGCheckButton(fHFrame, "Self");
54 fHFrame->AddFrame(fRnrSelf, new TGLayoutHints(kLHintsLeft, 0, 2, 1, 1));
55 fRnrSelf->Connect
56 ("Toggled(Bool_t)",
57 "TEveElementEditor", this, "DoRnrSelf()");
58
59 fRnrChildren = new TGCheckButton(fHFrame, "Children");
60 fHFrame->AddFrame(fRnrChildren, new TGLayoutHints(kLHintsLeft, 0, 1, 1, 1));
61 fRnrChildren->Connect
62 ("Toggled(Bool_t)",
63 "TEveElementEditor", this, "DoRnrChildren()");
64
66 fHFrame->AddFrame(fRnrState, new TGLayoutHints(kLHintsLeft, 1, 2, 1, 1));
67 fRnrState->Connect
68 ("Toggled(Bool_t)",
69 "TEveElementEditor", this, "DoRnrState()");
70
71 fMainColor = new TGColorSelect(fHFrame, 0, -1);
72 fHFrame->AddFrame(fMainColor, new TGLayoutHints(kLHintsLeft, 2, 0, -2, 0));
73 fMainColor->Connect
74 ("ColorSelected(Pixel_t)",
75 "TEveElementEditor", this, "DoMainColor(Pixel_t)");
76
77 fTransparency = new TGNumberEntry(fHFrame, 0., 2, -1,
80 fTransparency->SetHeight(18);
81 fTransparency->GetNumberEntry()->SetToolTipText("Transparency: 0 is opaque, 100 fully transparent.");
82 fHFrame->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
83 fTransparency->Connect
84 ("ValueSet(Long_t)",
85 "TEveElementEditor", this, "DoTransparency()");
86
87 AddFrame(fHFrame, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
88
89 fTrans = new TEveTransSubEditor(this);
90 fTrans->Connect("UseTrans()", "TEveElementEditor", this, "Update()");
91 fTrans->Connect("TransChanged()", "TEveElementEditor", this, "Update()");
93}
94
95////////////////////////////////////////////////////////////////////////////////
96/// Set model object.
97
99{
100 fRE = dynamic_cast<TEveElement*>(obj);
101
102 fPreLabel ->UnmapWindow();
103 fRnrSelf ->UnmapWindow();
104 fRnrChildren->UnmapWindow();
105 fRnrState ->UnmapWindow();
106 if (fRE->CanEditElement()) {
107 fPreLabel->MapWindow();
108 if (fRE->SingleRnrState()) {
109 fRnrState->SetState(fRE->GetRnrState() ? kButtonDown : kButtonUp);
110 fRnrState->MapWindow();
111 } else {
112 fRnrSelf->SetState(fRE->GetRnrSelf() ? kButtonDown : kButtonUp);
113 fRnrChildren->SetState(fRE->GetRnrChildren() ? kButtonDown : kButtonUp);
114 fRnrSelf->MapWindow();
115 fRnrChildren->MapWindow();
116 }
117 }
118
119 if (fRE->CanEditMainColor()) {
120 fMainColor->SetColor(TColor::Number2Pixel(fRE->GetMainColor()), kFALSE);
121 fMainColor->MapWindow();
122 } else {
123 fMainColor->UnmapWindow();
124 }
125 if (fRE->CanEditMainTransparency()) {
126 fTransparency->SetNumber(fRE->GetMainTransparency());
127 fTransparency->MapWindow();
128 } else {
129 fTransparency->UnmapWindow();
130 }
131 if (fRE->CanEditMainTrans()) {
132 fTrans->SetModel(fRE->PtrMainTrans());
133 fTrans->MapWindow();
134 } else {
135 fTrans->UnmapWindow();
136 }
137
138 fHFrame->Layout();
139}
140
141////////////////////////////////////////////////////////////////////////////////
142/// Slot for RnrSelf.
143
145{
146 fRE->SetRnrSelf(fRnrSelf->IsOn());
147 Update();
148}
149
150////////////////////////////////////////////////////////////////////////////////
151/// Slot for RnrChildren.
152
154{
155 fRE->SetRnrChildren(fRnrChildren->IsOn());
156 Update();
157}
158
159////////////////////////////////////////////////////////////////////////////////
160/// Slot for RnrState.
161
163{
164 fRE->SetRnrState(fRnrState->IsOn());
165 Update();
166}
167
168////////////////////////////////////////////////////////////////////////////////
169/// Slot for MainColor.
170
172{
173 fRE->SetMainColorPixel(color);
174 Update();
175}
176
177////////////////////////////////////////////////////////////////////////////////
178/// Slot for Transparency.
179
181{
182 fRE->SetMainTransparency((Char_t)(fTransparency->GetNumber()));
183 Update();
184}
@ kVerticalFrame
Definition GuiTypes.h:382
ULong_t Pixel_t
Pixel value.
Definition GuiTypes.h:41
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
char Char_t
Character 1 byte (char).
Definition RtypesCore.h:51
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
Definition RtypesCore.h:60
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
@ kButtonDown
Definition TGButton.h:54
@ kButtonUp
Definition TGButton.h:53
@ kLHintsLeft
Definition TGLayout.h:24
@ kLHintsTop
Definition TGLayout.h:27
@ kLHintsExpandX
Definition TGLayout.h:30
static ULong_t Number2Pixel(Int_t ci)
void SetModel(TObject *obj) override
Set model object.
TGNumberEntry * fTransparency
void DoTransparency()
Slot for Transparency.
TEveTransSubEditor * fTrans
void DoRnrChildren()
Slot for RnrChildren.
TGCheckButton * fRnrState
void DoMainColor(Pixel_t color)
Slot for MainColor.
void DoRnrState()
Slot for RnrState.
TGHorizontalFrame * fHFrame
TGColorSelect * fMainColor
TGCheckButton * fRnrSelf
TGCheckButton * fRnrChildren
TEveElementEditor(const TEveElementEditor &)
void DoRnrSelf()
Slot for RnrSelf.
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition TEveElement.h:36
Sub-editor for TEveTrans class.
Selects different options.
Definition TGButton.h:264
Like a checkbutton but instead of the check mark there is color area with a little down arrow.
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
Definition TGFrame.cxx:1109
A composite frame that layout their children in horizontal way.
Definition TGFrame.h:387
This class handles GUI labels.
Definition TGLabel.h:24
This class describes layout hints used by the layout classes.
Definition TGLayout.h:50
TGNumberEntry is a number entry input widget with up/down buttons.
@ kNEANonNegative
Non-negative number.
@ kNESInteger
Style of number entry field.
@ kNELLimitMinMax
Both lower and upper limits.
ROOT GUI Window base class.
Definition TGWindow.h:23
TGedFrame(const TGedFrame &)=delete
virtual void MakeTitle(const char *title)
Create attribute frame title.
Definition TGedFrame.cxx:94
virtual void Update()
Update the current pad when an attribute is changed via GUI.
Definition TGedFrame.cxx:71
Int_t fPriority
location in GedEditor
Definition TGedFrame.h:53
Mother of all ROOT objects.
Definition TObject.h:42