]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Reve/RenderElementEditor.cxx
- Compute parameter covariances including absorber dispersion effects
[u/mrichter/AliRoot.git] / EVE / Reve / RenderElementEditor.cxx
1 // $Header$
2
3 #include "RenderElementEditor.h"
4 #include <Reve/RenderElement.h>
5 #include <Reve/ZTransEditor.h>
6
7 #include <TVirtualPad.h>
8 #include <TColor.h>
9
10 #include <TGLabel.h>
11 #include <TGButton.h>
12 #include <TGNumberEntry.h>
13 #include <TGColorSelect.h>
14 #include <TGDoubleSlider.h>
15
16 using namespace Reve;
17
18 //______________________________________________________________________
19 // RenderElementEditor
20 //
21
22 ClassImp(RenderElementEditor)
23
24   RenderElementEditor::RenderElementEditor(const TGWindow *p,
25                                            Int_t width, Int_t height,
26                                            UInt_t options, Pixel_t back) :
27     TGedFrame(p, width, height, options | kVerticalFrame, back),
28
29     fRE           (0),
30     fHFrame       (0),
31     fRnrSelf      (0),
32     fRnrChildren  (0),
33     fMainColor    (0),
34     fTransparency (0),
35     fHMTrans      (0)
36 {
37   MakeTitle("RenderElement");
38   fPriority = 0;
39
40   fHFrame = new TGHorizontalFrame(this);
41
42   fRnrSelf = new TGCheckButton(fHFrame, "RnrSelf");
43   fHFrame->AddFrame(fRnrSelf, new TGLayoutHints(kLHintsLeft, 1, 2, 1, 1));
44   fRnrSelf->Connect
45     ("Toggled(Bool_t)",
46      "Reve::RenderElementEditor", this, "DoRnrSelf()");
47
48   fRnrChildren = new TGCheckButton(fHFrame, "RnrChildren");
49   fHFrame->AddFrame(fRnrChildren, new TGLayoutHints(kLHintsLeft, 2, 1, 1, 1));
50   fRnrChildren->Connect
51     ("Toggled(Bool_t)",
52      "Reve::RenderElementEditor", this, "DoRnrChildren()");
53
54   fMainColor = new TGColorSelect(fHFrame, 0, -1);
55   fHFrame->AddFrame(fMainColor, new TGLayoutHints(kLHintsLeft, 2, 0, 1, 1));
56   fMainColor->Connect
57     ("ColorSelected(Pixel_t)",
58      "Reve::RenderElementEditor", this, "DoMainColor(Pixel_t)");
59
60   fTransparency = new TGNumberEntry(fHFrame, 0., 2, -1, 
61                                     TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
62                                     TGNumberFormat::kNELLimitMinMax, 0, 100);
63   fTransparency->SetHeight(18);
64   fTransparency->GetNumberEntry()->SetToolTipText("Transparency: 0 is opaque, 100 fully transparent.");
65   fHFrame->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 0, 0, 2, 0));
66   fTransparency->Connect
67     ("ValueSet(Long_t)",
68      "Reve::RenderElementEditor", this, "DoTransparency()");
69
70   AddFrame(fHFrame, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));    
71
72   fHMTrans = new ZTransSubEditor(this);
73   fHMTrans->Connect("UseTrans()",     "Reve::RenderElementEditor", this, "Update()");
74   fHMTrans->Connect("TransChanged()", "Reve::RenderElementEditor", this, "Update()");
75   AddFrame(fHMTrans, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 0, 0));
76 }
77
78 RenderElementEditor::~RenderElementEditor()
79 {}
80
81 /**************************************************************************/
82
83 void RenderElementEditor::SetModel(TObject* obj)
84 {
85   fRE = dynamic_cast<RenderElement*>(obj);
86
87   if (fRE->CanEditRnrElement()) {
88     fRnrSelf->SetState(fRE->GetRnrSelf() ? kButtonDown : kButtonUp);
89     fRnrChildren->SetState(fRE->GetRnrChildren() ? kButtonDown : kButtonUp);
90     fRnrSelf->MapWindow();
91     fRnrChildren->MapWindow();
92   } else {
93     fRnrSelf->UnmapWindow();
94     fRnrChildren->UnmapWindow();
95   }
96
97   if (fRE->CanEditMainColor()) {
98     fMainColor->SetColor(TColor::Number2Pixel(fRE->GetMainColor()), kFALSE);
99     fMainColor->MapWindow();
100   } else {
101     fMainColor->UnmapWindow();
102   }
103   if (fRE->CanEditMainTransparency()) {
104     fTransparency->SetNumber(fRE->GetMainTransparency());
105     fTransparency->MapWindow();
106   } else {
107     fTransparency->UnmapWindow();
108   }
109   if (fRE->CanEditMainHMTrans()) {
110     fHMTrans->SetDataFromTrans(fRE->PtrMainHMTrans());
111     fHMTrans->MapWindow();
112   } else {
113     fHMTrans->UnmapWindow();
114   }
115
116   fHFrame->Layout();
117 }
118
119 /**************************************************************************/
120
121
122 void RenderElementEditor::DoRnrSelf()
123 {
124   fRE->SetRnrSelf(fRnrSelf->IsOn());
125   Update();
126 }
127
128
129 void RenderElementEditor::DoRnrChildren()
130 {
131   fRE->SetRnrChildren(fRnrChildren->IsOn());
132   Update();
133 }
134
135 void RenderElementEditor::DoMainColor(Pixel_t color)
136 {
137   fRE->SetMainColor(color);
138   Update();
139 }
140
141 void RenderElementEditor::DoTransparency()
142 {
143   fRE->SetMainTransparency((UChar_t)(fTransparency->GetNumber()));
144   Update();
145 }