00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TEveElementEditor.h"
00013 #include "TEveElement.h"
00014 #include "TEveTransEditor.h"
00015
00016 #include "TVirtualPad.h"
00017 #include "TColor.h"
00018
00019 #include "TGLabel.h"
00020 #include "TGButton.h"
00021 #include "TGNumberEntry.h"
00022 #include "TGColorSelect.h"
00023 #include "TGDoubleSlider.h"
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 ClassImp(TEveElementEditor);
00035
00036
00037 TEveElementEditor::TEveElementEditor(const TGWindow *p,
00038 Int_t width, Int_t height,
00039 UInt_t options, Pixel_t back) :
00040 TGedFrame(p, width, height, options | kVerticalFrame, back),
00041
00042 fRE (0),
00043 fHFrame (0),
00044 fPreLabel (0),
00045 fRnrSelf (0),
00046 fRnrChildren (0),
00047 fRnrState (0),
00048 fMainColor (0),
00049 fTransparency (0),
00050 fTrans (0)
00051 {
00052
00053
00054 MakeTitle("TEveElement");
00055 fPriority = 0;
00056
00057 fHFrame = new TGHorizontalFrame(this);
00058
00059 fPreLabel = new TGLabel(fHFrame, "Show:");
00060 fHFrame->AddFrame(fPreLabel, new TGLayoutHints(kLHintsLeft, 1, 6, 2, 0));
00061 fRnrSelf = new TGCheckButton(fHFrame, "Self");
00062 fHFrame->AddFrame(fRnrSelf, new TGLayoutHints(kLHintsLeft, 0, 2, 1, 1));
00063 fRnrSelf->Connect
00064 ("Toggled(Bool_t)",
00065 "TEveElementEditor", this, "DoRnrSelf()");
00066
00067 fRnrChildren = new TGCheckButton(fHFrame, "Children");
00068 fHFrame->AddFrame(fRnrChildren, new TGLayoutHints(kLHintsLeft, 0, 1, 1, 1));
00069 fRnrChildren->Connect
00070 ("Toggled(Bool_t)",
00071 "TEveElementEditor", this, "DoRnrChildren()");
00072
00073 fRnrState = new TGCheckButton(fHFrame, "");
00074 fHFrame->AddFrame(fRnrState, new TGLayoutHints(kLHintsLeft, 1, 2, 1, 1));
00075 fRnrState->Connect
00076 ("Toggled(Bool_t)",
00077 "TEveElementEditor", this, "DoRnrState()");
00078
00079 fMainColor = new TGColorSelect(fHFrame, 0, -1);
00080 fHFrame->AddFrame(fMainColor, new TGLayoutHints(kLHintsLeft, 2, 0, -2, 0));
00081 fMainColor->Connect
00082 ("ColorSelected(Pixel_t)",
00083 "TEveElementEditor", this, "DoMainColor(Pixel_t)");
00084
00085 fTransparency = new TGNumberEntry(fHFrame, 0., 2, -1,
00086 TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
00087 TGNumberFormat::kNELLimitMinMax, 0, 100);
00088 fTransparency->SetHeight(18);
00089 fTransparency->GetNumberEntry()->SetToolTipText("Transparency: 0 is opaque, 100 fully transparent.");
00090 fHFrame->AddFrame(fTransparency, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
00091 fTransparency->Connect
00092 ("ValueSet(Long_t)",
00093 "TEveElementEditor", this, "DoTransparency()");
00094
00095 AddFrame(fHFrame, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
00096
00097 fTrans = new TEveTransSubEditor(this);
00098 fTrans->Connect("UseTrans()", "TEveElementEditor", this, "Update()");
00099 fTrans->Connect("TransChanged()", "TEveElementEditor", this, "Update()");
00100 AddFrame(fTrans, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 0, 0));
00101 }
00102
00103
00104
00105
00106 void TEveElementEditor::SetModel(TObject* obj)
00107 {
00108
00109
00110 fRE = dynamic_cast<TEveElement*>(obj);
00111
00112 fPreLabel ->UnmapWindow();
00113 fRnrSelf ->UnmapWindow();
00114 fRnrChildren->UnmapWindow();
00115 fRnrState ->UnmapWindow();
00116 if (fRE->CanEditElement()) {
00117 fPreLabel->MapWindow();
00118 if (fRE->SingleRnrState()) {
00119 fRnrState->SetState(fRE->GetRnrState() ? kButtonDown : kButtonUp);
00120 fRnrState->MapWindow();
00121 } else {
00122 fRnrSelf->SetState(fRE->GetRnrSelf() ? kButtonDown : kButtonUp);
00123 fRnrChildren->SetState(fRE->GetRnrChildren() ? kButtonDown : kButtonUp);
00124 fRnrSelf->MapWindow();
00125 fRnrChildren->MapWindow();
00126 }
00127 }
00128
00129 if (fRE->CanEditMainColor()) {
00130 fMainColor->SetColor(TColor::Number2Pixel(fRE->GetMainColor()), kFALSE);
00131 fMainColor->MapWindow();
00132 } else {
00133 fMainColor->UnmapWindow();
00134 }
00135 if (fRE->CanEditMainTransparency()) {
00136 fTransparency->SetNumber(fRE->GetMainTransparency());
00137 fTransparency->MapWindow();
00138 } else {
00139 fTransparency->UnmapWindow();
00140 }
00141 if (fRE->CanEditMainTrans()) {
00142 fTrans->SetModel(fRE->PtrMainTrans());
00143 fTrans->MapWindow();
00144 } else {
00145 fTrans->UnmapWindow();
00146 }
00147
00148 fHFrame->Layout();
00149 }
00150
00151
00152
00153
00154 void TEveElementEditor::DoRnrSelf()
00155 {
00156
00157
00158 fRE->SetRnrSelf(fRnrSelf->IsOn());
00159 Update();
00160 }
00161
00162
00163 void TEveElementEditor::DoRnrChildren()
00164 {
00165
00166
00167 fRE->SetRnrChildren(fRnrChildren->IsOn());
00168 Update();
00169 }
00170
00171
00172 void TEveElementEditor::DoRnrState()
00173 {
00174
00175
00176 fRE->SetRnrState(fRnrState->IsOn());
00177 Update();
00178 }
00179
00180
00181 void TEveElementEditor::DoMainColor(Pixel_t color)
00182 {
00183
00184
00185 fRE->SetMainColorPixel(color);
00186 Update();
00187 }
00188
00189
00190 void TEveElementEditor::DoTransparency()
00191 {
00192
00193
00194 fRE->SetMainTransparency((Char_t)(fTransparency->GetNumber()));
00195 Update();
00196 }