TEveElementEditor.cxx

Go to the documentation of this file.
00001 // @(#)root/eve:$Id: TEveElementEditor.cxx 33864 2010-06-14 09:47:19Z matevz $
00002 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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 // TEveElementEditor
00028 //==============================================================================
00029 
00030 //______________________________________________________________________________
00031 //
00032 // Editor for TEveElement class.
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    // Constructor.
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    // Set model object.
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    // Slot for RnrSelf.
00157 
00158    fRE->SetRnrSelf(fRnrSelf->IsOn());
00159    Update();
00160 }
00161 
00162 //______________________________________________________________________________
00163 void TEveElementEditor::DoRnrChildren()
00164 {
00165    // Slot for RnrChildren.
00166 
00167    fRE->SetRnrChildren(fRnrChildren->IsOn());
00168    Update();
00169 }
00170 
00171 //______________________________________________________________________________
00172 void TEveElementEditor::DoRnrState()
00173 {
00174    // Slot for RnrState.
00175 
00176    fRE->SetRnrState(fRnrState->IsOn());
00177    Update();
00178 }
00179 
00180 //______________________________________________________________________________
00181 void TEveElementEditor::DoMainColor(Pixel_t color)
00182 {
00183    // Slot for MainColor.
00184 
00185    fRE->SetMainColorPixel(color);
00186    Update();
00187 }
00188 
00189 //______________________________________________________________________________
00190 void TEveElementEditor::DoTransparency()
00191 {
00192    // Slot for Transparency.
00193 
00194    fRE->SetMainTransparency((Char_t)(fTransparency->GetNumber()));
00195    Update();
00196 }

Generated on Tue Jul 5 14:16:11 2011 for ROOT_528-00b_version by  doxygen 1.5.1