Waiting for a tagged version of Root. All the development is in EVE-dev
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 27 Sep 2006 15:13:58 +0000 (15:13 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 27 Sep 2006 15:13:58 +0000 (15:13 +0000)
29 files changed:
EVE/Alieve/ChangeLog
EVE/Alieve/TPCLoaderEditor.cxx
EVE/Alieve/TPCLoaderEditor.h
EVE/Alieve/TPCSector2DEditor.cxx
EVE/Alieve/TPCSector2DEditor.h
EVE/Alieve/TPCSector3DEditor.cxx
EVE/Alieve/TPCSector3DEditor.h
EVE/Alieve/TPCSectorVizEditor.cxx
EVE/Alieve/TPCSectorVizEditor.h
EVE/ChangeLog
EVE/Reve/ChangeLog
EVE/Reve/PointSetArrayEditor.cxx
EVE/Reve/PointSetArrayEditor.h
EVE/Reve/RGBrowser.cxx
EVE/Reve/RGEditor.cxx
EVE/Reve/RGEditor.h
EVE/Reve/RGTopFrame.cxx
EVE/Reve/RGTopFrame.h
EVE/Reve/RGeoNodeEditors.cxx
EVE/Reve/RGeoNodeEditors.h
EVE/Reve/RenderElement.cxx
EVE/Reve/RenderElementEditor.cxx
EVE/Reve/RenderElementEditor.h
EVE/Reve/TrackEditors.cxx
EVE/Reve/TrackEditors.h
EVE/Reve/VSDSelector.cxx
EVE/alice-macros/clusters_from_label.C
EVE/alice-macros/primary_vertex.C
EVE/libReve.pkg

index 3d3901770043d8471fde80e0881e23ab71364929..6fba1239420bc6cf7c4bb1d08fd0b2cd5f62663f 100644 (file)
@@ -1,15 +1,3 @@
-2006-09-26  Matevz Tadel  <matevz.tadel@cern.ch>
-
-       * TPCLoaderEditor.cxx:
-       * TPCLoaderEditor.h:
-       * TPCSector2DEditor.cxx:
-       * TPCSector2DEditor.h:
-       * TPCSector3DEditor.cxx:
-       * TPCSector3DEditor.h:
-       * TPCSectorVizEditor.cxx:
-       * TPCSectorVizEditor.h:
-       Conform to new TGedFrame paradigm in ROOT.
-
 2006-09-06  Matevz Tadel  <matevz.tadel@cern.ch>
 
        * MUONDigitsInfo.cxx:
index 1a3add64bc49b8c77e9c867ba8fe5dcd4c6b834b..bef26f50aee144daef1e1e401c19b4fc58588364 100644 (file)
@@ -25,10 +25,10 @@ using namespace Alieve;
 
 ClassImp(TPCLoaderEditor)
 
-TPCLoaderEditor::TPCLoaderEditor(const TGWindow *p,
+TPCLoaderEditor::TPCLoaderEditor(const TGWindow *p, Int_t id,
                                  Int_t width, Int_t height,
                                 UInt_t options, Pixel_t back) :
-  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
 
   fM (0),
 
@@ -98,6 +98,13 @@ TPCLoaderEditor::TPCLoaderEditor(const TGWindow *p,
                     "Alieve::TPCLoaderEditor", this, "DoDeleteSectors3D()");
     AddFrame(f, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
   }
+
+  // Register the editor.
+  TClass *cl = TPCLoader::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 TPCLoaderEditor::~TPCLoaderEditor()
@@ -105,9 +112,20 @@ TPCLoaderEditor::~TPCLoaderEditor()
 
 /**************************************************************************/
 
-void TPCLoaderEditor::SetModel(TObject* obj)
+void TPCLoaderEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t /*event*/)
 {
-  fM = dynamic_cast<TPCLoader*>(obj);
+  fModel = 0;
+  fPad   = 0;
+
+  if (!obj || !obj->InheritsFrom(TPCLoader::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+
+  fM = dynamic_cast<TPCLoader*>(fModel);
 
   // !!!! order changed, need TGTextEntry::SetText NO BLOODY EMIT.
   fFile->SetToolTipText(gSystem->DirName(fM->fFile));
@@ -115,6 +133,8 @@ void TPCLoaderEditor::SetModel(TObject* obj)
   fEvent->SetValue(fM->fEvent);
   fEvent->SetEnabled(fM->fEvent >= 0);
   fDoubleSR->SetState(fM->fDoubleSR  ? kButtonDown : kButtonUp);
+
+  SetActive();
 }
 
 /**************************************************************************/
@@ -152,7 +172,7 @@ void TPCLoaderEditor::FileChanged()
 void TPCLoaderEditor::DoOpen()
 {
   fM->OpenFile();
-  SetModel(fM);
+  SetModel(fPad, fModel, 0);
 }
 
 /**************************************************************************/
@@ -160,7 +180,7 @@ void TPCLoaderEditor::DoOpen()
 void TPCLoaderEditor::DoEvent()
 {
   fM->GotoEvent((Int_t) fEvent->GetValue());
-  SetModel(fM);
+  SetModel(fPad, fModel, 0);
 }
 
 void TPCLoaderEditor::DoDoubleSR()
index b3ea62cefc8e62a5bfb90b795c67e0c9577fc25a..79fc364c35819ac4b42d89ccf3cbea2936300126 100644 (file)
@@ -38,11 +38,10 @@ protected:
   TGTextButton* fDeleteSectors3D;
 
 public:
-  TPCLoaderEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                 UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  TPCLoaderEditor(const TGWindow* p=0, Int_t id=-1, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   ~TPCLoaderEditor();
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void FileSelect();
   void FileChanged();
index 865f3c10ca262982ec3262f42146be076bd32651..dcd2ebb121699ac1dc6b039946b98007142b4f77 100644 (file)
@@ -22,10 +22,10 @@ using namespace Alieve;
 
 ClassImp(TPCSector2DEditor)
 
-TPCSector2DEditor::TPCSector2DEditor(const TGWindow *p,
+TPCSector2DEditor::TPCSector2DEditor(const TGWindow *p, Int_t id,
                                      Int_t width, Int_t height,
                                     UInt_t options, Pixel_t back) :
-  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
   fM(0),
   fShowMax(0), fAverage(0), fUseTexture(0)
 {
@@ -46,6 +46,13 @@ TPCSector2DEditor::TPCSector2DEditor(const TGWindow *p,
     fAverage->Connect("Toggled(Bool_t)","Alieve::TPCSector2DEditor", this, "DoAverage()");
     AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
   }
+
+  // Register the editor.
+  TClass *cl = TPCSector2DEditor::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 TPCSector2DEditor::~TPCSector2DEditor()
@@ -53,14 +60,27 @@ TPCSector2DEditor::~TPCSector2DEditor()
 
 /**************************************************************************/
 
-void TPCSector2DEditor::SetModel(TObject* obj)
+void TPCSector2DEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
 {
-  fM = dynamic_cast<TPCSector2D*>(obj);
+  fModel = 0;
+  fPad   = 0;
+
+  if (!obj || !obj->InheritsFrom(TPCSector2D::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+
+  fM = dynamic_cast<TPCSector2D*>(fModel);
 
   fShowMax->SetState(fM->fShowMax ? kButtonDown : kButtonUp);
   SetupAverage();
 
   fUseTexture->SetState(fM->fUseTexture ? kButtonDown : kButtonUp);
+
+  SetActive();
 }
 
 /**************************************************************************/
index 7e07c2e74396ff101dc2d0f749c8f952680e5c4d..c26af5b1d25687f05fb426d3cb15ab285fdf24ea 100644 (file)
@@ -30,11 +30,10 @@ protected:
   TGCheckButton*   fUseTexture;
 
 public:
-  TPCSector2DEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                   UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  TPCSector2DEditor(const TGWindow* p, Int_t id, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   ~TPCSector2DEditor();
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoShowMax();
   void DoAverage();
index 580aea7723b38849011aa43563bf75885895c8ff..27fcd1ab844f04b9b259d1b581f305fde09676a6 100644 (file)
@@ -24,10 +24,10 @@ using namespace Alieve;
 
 ClassImp(TPCSector3DEditor)
 
-TPCSector3DEditor::TPCSector3DEditor(const TGWindow *p,
+TPCSector3DEditor::TPCSector3DEditor(const TGWindow *p, Int_t id,
                                      Int_t width, Int_t height,
                                      UInt_t options, Pixel_t back) :
-  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
   fM(0),
   fRnrFrame(0), fDriftVel(0), fPointFrac(0), fPointSize(0)
 {
@@ -73,6 +73,13 @@ TPCSector3DEditor::TPCSector3DEditor(const TGWindow *p,
   fPointSize->Connect("ValueSet(Double_t)",
                      "Alieve::TPCSector3DEditor", this, "DoPointSize()");
   AddFrame(fPointSize, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
+
+  // Register the editor.
+  TClass *cl = TPCSector3D::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 TPCSector3DEditor::~TPCSector3DEditor()
@@ -80,15 +87,28 @@ TPCSector3DEditor::~TPCSector3DEditor()
 
 /**************************************************************************/
 
-void TPCSector3DEditor::SetModel(TObject* obj)
+void TPCSector3DEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t /*event*/)
 {
-  fM = dynamic_cast<TPCSector3D*>(obj);
+  fModel = 0;
+  fPad   = 0;
+
+  if (!obj || !obj->InheritsFrom(TPCSector3D::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+
+  fM = dynamic_cast<TPCSector3D*>(fModel);
 
   fRnrFrame->SetState(fM->fRnrFrame ? kButtonDown : kButtonUp);
   fDriftVel->SetValue(fM->fDriftVel);
 
   fPointFrac->SetValue(fM->fPointFrac);
   fPointSize->SetValue(fM->fPointSize);
+
+  SetActive();
 }
 
 /**************************************************************************/
index 6fda513f61c94a2818f33b107740a739038b57b1..ca556490729eb6db932f563897e5a358cc8e1af7 100644 (file)
@@ -33,11 +33,11 @@ protected:
   Reve::RGValuator* fPointSize;
 
 public:
-  TPCSector3DEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
+  TPCSector3DEditor(const TGWindow* p, Int_t id, Int_t width=170, Int_t height=30,
                    UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());  
   virtual ~TPCSector3DEditor();
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoRnrFrame();
   void DoDriftVel();
index bb845537fabe129d489aef05a2190dc15c1814fe..0f43865ca4c6e2336d535b183f08f60159aeb8e5 100644 (file)
@@ -24,10 +24,10 @@ using namespace Alieve;
 
 ClassImp(TPCSectorVizEditor)
 
-TPCSectorVizEditor::TPCSectorVizEditor(const TGWindow *p,
+TPCSectorVizEditor::TPCSectorVizEditor(const TGWindow *p, Int_t id,
                                        Int_t width, Int_t height,
                                        UInt_t options, Pixel_t back) :
-  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
   fM(0),
   fSectorID  (0), fTrans   (0),
   fRnrInn    (0), fRnrOut1 (0), fRnrOut2(0),
@@ -101,6 +101,14 @@ TPCSectorVizEditor::TPCSectorVizEditor(const TGWindow *p,
   fTime->Connect("ValueSet()",
                 "Alieve::TPCSectorVizEditor", this, "DoTime()");
   AddFrame(fTime, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
+
+
+  // Register the editor.
+  TClass *cl = TPCSectorViz::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 TPCSectorVizEditor::~TPCSectorVizEditor()
@@ -108,9 +116,20 @@ TPCSectorVizEditor::~TPCSectorVizEditor()
 
 /**************************************************************************/
 
-void TPCSectorVizEditor::SetModel(TObject* obj)
+void TPCSectorVizEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t /*event*/)
 {
-  fM = dynamic_cast<TPCSectorViz*>(obj);
+  fModel = 0;
+  fPad   = 0;
+
+  if (!obj || !obj->InheritsFrom(TPCSectorViz::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+
+  fM = dynamic_cast<TPCSectorViz*>(fModel);
 
   fSectorID->SetValue(fM->fSectorID);
   fTrans->SetState(fM->fTrans  ? kButtonDown : kButtonUp);
@@ -123,6 +142,8 @@ void TPCSectorVizEditor::SetModel(TObject* obj)
   fMaxVal->SetValue(fM->fMaxVal);
 
   fTime->SetValues(fM->fMinTime, fM->fMaxTime);
+
+  SetActive();
 }
 
 /**************************************************************************/
index df0c463f03aeafd25cdb996f88ba35b585235747..ac9a97c1e93c42f473d351f1cdd4e1b2af94414d 100644 (file)
@@ -41,11 +41,10 @@ protected:
   Reve::RGDoubleValuator* fTime;
 
 public:
-  TPCSectorVizEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                    UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  TPCSectorVizEditor(const TGWindow* p, Int_t id, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   ~TPCSectorVizEditor();
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoSectorID();
   void DoTrans();
index 0e546d139116fcb1523598e91ad3669033a66c60..9eecf3f87f1c528168f2ce9787ff6e379ae6e476 100644 (file)
@@ -1,18 +1,3 @@
-2006-09-27  Matevz TADEL  <matevz.tadel@ijs.si>
-
-       Merged HEAD to EVE-dev. Tagged EVE-dev(EVE-dev-after-merge).
-
-2006-09-26  Matevz Tadel  <matevz.tadel@cern.ch>
-
-       * alice-macros/clusters_from_label.C:
-       Add point-set containing clusters directly as render element (it
-       was wrapped in a RenderElementObjPtr by mistake (not fixed when
-       changing it from TPolyMarker3D)).
-
-       * alice-macros/primary_vertex.C:
-       Removed code that gave vertex markers some volume (to avoid being
-       discarded by a too smart GLViewer).
-
 2006-09-04  Matevz Tadel  <matevz.tadel@cern.ch>
 
        * alice-macros/its_hits.C:
index b0d76083cb1d63f56fab720a0cedfbeca961d516..1979a2ede6f65989a8e713e650af04f172a0d55e 100644 (file)
@@ -1,56 +1,3 @@
-2006-09-27  Matevz Tadel  <matevz.tadel@cern.ch>
-
-       * RGTopFrame.cxx:
-       * RGTopFrame.h:
-       * VSDSelector.cxx:
-       Made GLCanvas un-editable to prevent users from drawing things
-       over 3D scene; renamed the canvas data member from fCC to
-       fGLCanvas. Renamed local variables not to dress-up as
-       data-members.
-
-2006-09-26  Matevz Tadel  <matevz.tadel@cern.ch>
-
-       * RGBrowser.cxx:
-       Hack to fix RenderElementObjPtr's colors in tree-view is no longer
-       needed.
-
-       * RGEditor.cxx:
-       * RGEditor.h:
-       Properly update items of render-elements; call gReve::Redraw3D()
-       instead of pad modified/update. Added separate method
-       DisplayRenderElement() that caches the render-element in a
-       data-member to update it on change (needed for RenderElementObjPtr).
-
-       * RGTopFrame.cxx:
-       Use RGEditor::DisplayRenderElement() instead of
-       DisplayObject(). Removed some never-used static structures.
-
-       * RenderElement.cxx:
-       Removed Redraw3D() from UpdateItems() as it can now be called from
-       RGEditor::Update(); optimized item-updates in SetRnrElement() and
-       SetMainColor().
-
-       * PointSetArrayEditor.cxx:
-       * TrackEditors.cxx:
-       Added call to Update() in SetRange() methods.
-
-2006-09-26  Matevz Tadel  <matevz.tadel@cern.ch>
-
-       * RGBrowser.cxx:
-       * RGEditor.cxx:
-       * RGEditor.h:
-       Use new functionality from TGedEditor.
-
-       * PointSetArrayEditor.cxx:
-       * PointSetArrayEditor.h:
-       * RGeoNodeEditors.cxx:
-       * RGeoNodeEditors.h:
-       * RenderElementEditor.cxx:
-       * RenderElementEditor.h:
-       * TrackEditors.cxx:
-       * TrackEditors.h:
-       Conform to new TGedFrame paradigm in ROOT.
-
 2006-09-04  Matevz Tadel  <matevz.tadel@cern.ch>
 
        * MCHelixLine.hi:
index 8fac7968bedb6692b585a7dc2564722c953f7150..019e2059045c4bcef2e4f5e51ceae8798624e63a 100644 (file)
@@ -21,10 +21,9 @@ using namespace Reve;
 
 ClassImp(PointSetArrayEditor)
 
-PointSetArrayEditor::PointSetArrayEditor(const TGWindow *p,
-                                        Int_t width, Int_t height,
-                                        UInt_t options, Pixel_t back) :
-  TGedFrame(p,width, height, options | kVerticalFrame, back),
+PointSetArrayEditor::PointSetArrayEditor(const TGWindow *p, Int_t id, Int_t width, Int_t height,
+            UInt_t options, Pixel_t back) :
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
   fM(0),
   fRange(0)
 {
@@ -39,6 +38,13 @@ PointSetArrayEditor::PointSetArrayEditor(const TGWindow *p,
   fRange->Connect("ValueSet()",
                 "Reve::PointSetArrayEditor", this, "DoRange()");
   AddFrame(fRange, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
+
+  // Register the editor.
+  TClass *cl = PointSetArray::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 PointSetArrayEditor::~PointSetArrayEditor()
@@ -46,15 +52,28 @@ PointSetArrayEditor::~PointSetArrayEditor()
 
 /**************************************************************************/
 
-void PointSetArrayEditor::SetModel(TObject* obj)
+void PointSetArrayEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
 {
-  fM = dynamic_cast<PointSetArray*>(obj);
+  fModel = 0;
+  fPad   = 0;
+
+  if (!obj || !obj->InheritsFrom(PointSetArray::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+
+  fM = dynamic_cast<PointSetArray*>(fModel);
 
   // printf("FullRange(%f, %f) Selected(%f,%f)\n",
   //        fM->GetMin(), fM->GetMax(), fM->GetCurMin(), fM->GetCurMax());
 
   fRange->SetLimits(fM->fMin, fM->fMax, TGNumberFormat::kNESRealTwo);
   fRange->SetValues(fM->fCurMin, fM->fCurMax);
+
+  SetActive();
 }
 
 /**************************************************************************/
@@ -62,5 +81,4 @@ void PointSetArrayEditor::SetModel(TObject* obj)
 void PointSetArrayEditor::DoRange()
 {
   fM->SetRange(fRange->GetMin(), fRange->GetMax());
-  Update();
 }
index db7f0b03912e02caa4c90219632f93b571de6dc9..f79a587b565d579f7f5b5d372aac0295dfa2d7a1 100644 (file)
@@ -27,11 +27,10 @@ protected:
   Reve::RGDoubleValuator* fRange;
 
 public:
-  PointSetArrayEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                     UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  PointSetArrayEditor(const TGWindow* p, Int_t id, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   ~PointSetArrayEditor();
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoRange();
 
index 48d9d04e0d16ccc2e87d47f0efefd32f127e05ab..0cfc80e88a9015e7a1b1e7b4f91b8a412f7e8c7d 100644 (file)
@@ -160,7 +160,7 @@ void RGBrowser::SetupClassicLook(RGEditor*& editor, TCanvas* glpad)
   fV2->MapSubwindows();
 
   editor = new RGEditor(glpad);
-  editor->GetTGCanvas()->ChangeOptions(0);
+  editor->GetCan()->ChangeOptions(0);
   editor->SetWindowName("Reve Editor");
 }
 
@@ -168,7 +168,7 @@ void RGBrowser::SetupEditorLook(RGEditor*& editor, TCanvas* glpad)
 {
   fClient->SetRoot(fV2);
   editor = new RGEditor(glpad);
-  editor->GetTGCanvas()->ChangeOptions(0);
+  editor->GetCan()->ChangeOptions(0);
   fV2->RemoveFrame(editor);
   fV2->AddFrame(editor, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 0, 0, 2, 2));
   fClient->SetRoot();
@@ -202,7 +202,7 @@ void RGBrowser::SetupGLViewerLook(RGEditor*& editor, TCanvas* glpad)
 
   fClient->SetRoot(fV1);
   editor = new RGEditor(glpad);
-  editor->GetTGCanvas()->ChangeOptions(0);
+  editor->GetCan()->ChangeOptions(0);
   editor->ChangeOptions(editor->GetOptions() | kFixedHeight);
   fV1->RemoveFrame(editor);
   fV1->AddFrame(editor, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,2,2,2));
@@ -244,6 +244,13 @@ void RGBrowser::ItemClicked(TGListTreeItem *item, Int_t btn, Int_t x, Int_t y)
   if(re == 0) return;
   TObject* obj = re->GetObject();
 
+  // A pathetic hack to get at least a bit of color coordination
+  // for RenderElementObjPtr.
+  if(item->GetColor() != re->GetMainColor()) {
+    item->SetColor(re->GetMainColor());
+    fListTree->GetClient()->NeedRedraw(fListTree);
+  }
+
   if(btn == 3) {
     if (obj) {
       fCtxMenu->Popup(x, y, obj);
index 42433e896e4961f79daa02ebbfb53c8af91cd473..4d564383ca46918db864f213ebbb15a23cb502f8 100644 (file)
@@ -1,8 +1,6 @@
 // $Header$
 
 #include "RGEditor.h"
-#include "RenderElement.h"
-#include "RGTopFrame.h"
 
 #include <TGedFrame.h>
 #include <TGCanvas.h>
@@ -19,26 +17,25 @@ ClassImp(RGEditor)
 RGEditor::RGEditor(TCanvas* canvas) : TGedEditor(canvas)
 {}
 
-void RGEditor::DisplayRenderElement(RenderElement* re)
-{
-  fRnrElement = re;
-  TObject* obj = fRnrElement ? fRnrElement->GetObject() : 0;
-  SetModel(fPad, obj, kButton1Down);
-}
-
 void RGEditor::DisplayObject(TObject* obj)
 {
-  fRnrElement = 0;
-  SetModel(fPad, obj, kButton1Down);
-}
-
-void RGEditor::Update(TGedFrame* /*gframe*/)
-{
-  // Virtual method from TGedEditor ... called on every change.
-
-  if (fRnrElement) {
-    fRnrElement->UpdateItems();
+  fModel = obj;
+
+  if(obj) {
+    if(obj->IsA() != fClass && !obj->IsA()->InheritsFrom(fClass)) {
+      fClass = obj->IsA();
+      GetEditors();
+    }
+  } else {
+    fCan->UnmapWindow();
+    return;
   }
 
-  gReve->Redraw3D();
+  TGFrameElement *el;
+  TIter next(fStyle->GetList());
+  while ((el = (TGFrameElement *) next())) {
+    if ((el->fFrame)->InheritsFrom(TGedFrame::Class()))
+      ((TGedFrame *)(el->fFrame))->SetModel(fPad, fModel, 0);
+  }
+  fCan->MapWindow();
 }
index f247eeba3e214fb4fba260ab27f2a3cf6f105ea9..d13143cba3c28a8169e2ca581f21e03adf8f4e21 100644 (file)
@@ -7,21 +7,16 @@
 
 namespace Reve {
 
-class RenderElement;
-
 class RGEditor : public TGedEditor
 {
 protected:
-  RenderElement* fRnrElement;
 
 public:
   RGEditor(TCanvas* canvas=0);
   virtual ~RGEditor() {}
   
-  void DisplayRenderElement(RenderElement* re);
   void DisplayObject(TObject* obj);
-
-  virtual void Update(TGedFrame* gframe=0);
+  TGCanvas * GetCan() const {return fCan;}
 
   ClassDef(RGEditor, 1);
 }; // endclass RGEditor
index 6723a437fe7fd05f3fbffe77e78d860c9fdce3f6..f2b64ab8e9e8629e13c71765ef18fcbd8e0abe0d 100644 (file)
@@ -44,12 +44,37 @@ using namespace Reve;
 
 Reve::RGTopFrame* gReve = 0;
 
+namespace {
+
+enum RGBrowserMT {
+  M_LAYOUT_1,
+  M_LAYOUT_2,
+  M_LAYOUT_3
+};
+
+const char *xpm_names[] = {
+    "lay1.xpm",
+    "lay2.xpm",
+    "lay3.xpm",
+    0
+};
+
+ToolBarData_t tb_data[] = {
+  { "", "Standard list layout",     kFALSE, M_LAYOUT_1,        NULL },
+  { "", "TParticle latout",         kFALSE, M_LAYOUT_2,        NULL },
+  { "", "TGeo layout",              kFALSE, M_LAYOUT_3,        NULL },
+  { NULL,            NULL,          0,      0,                 NULL }
+};
+
+} // unnamed namespace
+
 /**************************************************************************/
 
 RGTopFrame::RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look) :
   TGMainFrame(p, w, h),
 
-  fGLCanvas    (0),
+  fCC          (0),
+  fHistoCanvas (0),
   fSelector    (0),
   fBrowser     (0),
   fStatusBar   (0),
@@ -79,44 +104,54 @@ RGTopFrame::RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look) :
 
   // Build GUI
 
-  TGLayoutHints *lay0 = new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandY | kLHintsExpandX);
-  TGLayoutHints *lay1 = new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandY | kLHintsExpandX, 2, 0, 2, 2);
-  TGLayoutHints *lay2 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 2, 2, 2, 2);
-
-  TGCompositeFrame*  mainFrame = new TGCompositeFrame(this, w, h, kHorizontalFrame | kRaisedFrame);
-  TGVerticalFrame* fV2 = new TGVerticalFrame(mainFrame, GetWidth()-40, GetHeight()-40, kSunkenFrame);
+  TGLayoutHints *fL0 = new TGLayoutHints(kLHintsCenterX |kLHintsCenterY | kLHintsExpandY|  kLHintsExpandX);
+  TGLayoutHints *fL1 = new TGLayoutHints(kLHintsCenterX |kLHintsCenterY | kLHintsExpandY|  kLHintsExpandX,2,0,2,2);
+  TGLayoutHints* fL2 = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY,
+                                        2, 2, 2, 2);
+  TGCompositeFrame*  fMainFrame = new TGCompositeFrame(this, w, h,kHorizontalFrame | kRaisedFrame);
+  fMainFrame->SetCleanup(kDeepCleanup);
+  TGVerticalFrame* fV2 = new TGVerticalFrame(fMainFrame, GetWidth()-40, GetHeight()-40, kSunkenFrame);
 
-  mainFrame->AddFrame(fV2, lay1);
+  fMainFrame->AddFrame(fV2, fL1);
 
-  TGTab* mainTab = new TGTab(fV2, GetWidth(), GetHeight());  
+  // ??? TGCanvas* fCanvasWindow = new TGCanvas(fV2,w,h);
+  TGTab*    fDisplayFrame = new TGTab(fV2, GetWidth(), GetHeight());  
 
   // browser tab
-  TGCompositeFrame* tframe1 = mainTab->AddTab("Object Browser");
-  fBrowser = new RGBrowser(tframe1, w, h);
-  tframe1->AddFrame(fBrowser, lay2);
+  TGCompositeFrame* tFrame1 = fDisplayFrame->AddTab("Object Browser");
+  fBrowser = new RGBrowser(tFrame1, w, h);
+  tFrame1->AddFrame(fBrowser, fL2);
 
   // tree selection tab
-  TGCompositeFrame* tframe2 = mainTab->AddTab("Tree Selections");  
-  fSelector = new VSDSelector(fBrowser->GetListTree(), tframe2);
+  TGCompositeFrame* tFrame2 = fDisplayFrame->AddTab("Tree Selections");  
+  fSelector = new VSDSelector(fBrowser->GetListTree(), tFrame2);
 
-  // gl-canvas
+  // canvas
   Reve::PushPad();
-  TGCompositeFrame* tframe3 = mainTab->AddTab("GLCanvas");
-  TRootEmbeddedCanvas* ecanvas3 = new TRootEmbeddedCanvas("GLCanvas", tframe3, 580, 360);
-  tframe3->AddFrame(ecanvas3, lay2);
-  fGLCanvas = ecanvas3->GetCanvas();
-  fGLCanvas->SetEditable(kFALSE);
+  TGCompositeFrame* tFrame3 = fDisplayFrame->AddTab("Canvas");
+  TRootEmbeddedCanvas* fEmbeddedCanvas3 = new TRootEmbeddedCanvas("fEmbeddedCanvas3", tFrame3, 580, 360);
+  tFrame3->AddFrame(fEmbeddedCanvas3, fL2);
+  fEmbeddedCanvas3->GetCanvas()->SetBorderMode(0);
+  fCC = fEmbeddedCanvas3->GetCanvas();
+  // fCC->SetFillColor(1);
   Reve::PopPad();
 
-  fV2->AddFrame(mainTab, lay0);
-  AddFrame(mainFrame, lay0);
+  // histo canvas
+  TGCompositeFrame* frame4 = fDisplayFrame->AddTab("HistoCanvas");
+  TRootEmbeddedCanvas* ecanvas4 = new TRootEmbeddedCanvas("HistoCanvas", frame4, 580, 360);
+  frame4->AddFrame(ecanvas4, fL2);
+  fHistoCanvas =  ecanvas4->GetCanvas();
+  fHistoCanvas->SetBorderMode(0);
+
+  fV2->AddFrame(fDisplayFrame, fL0);
+  AddFrame(fMainFrame, fL0);
    
   // Create status bar
   Int_t parts[] = {45, 45, 10};
   fStatusBar = new TGStatusBar(this, 50, 10, kHorizontalFrame);
   fStatusBar->SetParts(parts, 3);
-  TGLayoutHints* lay6 = new TGLayoutHints(kLHintsBottom| kLHintsExpandX, 0, 0, 0, 0);
-  AddFrame(fStatusBar, lay6);
+  TGLayoutHints* fL6 = new TGLayoutHints(kLHintsBottom| kLHintsExpandX, 0, 0, 0, 0);
+  AddFrame(fStatusBar, fL6);
   fStatusBar->SetText("GUI created", 0);
 
   MapSubwindows();
@@ -124,21 +159,22 @@ RGTopFrame::RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look) :
   /**************************************************************************/
   /**************************************************************************/
   
+
   switch(look) {
   case LT_Classic: {
-    fBrowser->SetupClassicLook(fEditor, fGLCanvas);
-    fGLCanvas->GetViewer3D("ogl");
+    fBrowser->SetupClassicLook(fEditor, fCC);
+    fCC->GetViewer3D("ogl");
     break;
   }
 
   case LT_Editor: {
-    fBrowser->SetupEditorLook(fEditor, fGLCanvas);
-    fGLCanvas->GetViewer3D("ogl");
+    fBrowser->SetupEditorLook(fEditor, fCC);
+    fCC->GetViewer3D("ogl");
     break;
   }
 
   case LT_GLViewer: {
-    fBrowser->SetupGLViewerLook(fEditor, fGLCanvas);
+    fBrowser->SetupGLViewerLook(fEditor, fCC);
     break;
   }
 
@@ -148,7 +184,7 @@ RGTopFrame::RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look) :
   }
   }
 
-  TGLViewer* glv = dynamic_cast<TGLViewer*>(fGLCanvas->GetViewer3D());
+  TGLViewer* glv = dynamic_cast<TGLViewer*>(fCC->GetViewer3D());
   if(glv) {
     glv->SetSmartRefresh(kTRUE);
     glv->SetResetCamerasOnUpdate(kFALSE);
@@ -197,7 +233,9 @@ void RGTopFrame::EditRenderElement(RenderElement* rnr_element)
 {
   static const Exc_t eH("RGTopFrame::EditRenderElement ");
 
-  fEditor->DisplayRenderElement(rnr_element);
+  TObject* tobj = 0;
+  if(rnr_element) tobj = rnr_element->GetObject();
+  fEditor->DisplayObject(tobj);
 }
 
 /**************************************************************************/
@@ -214,12 +252,11 @@ void RGTopFrame::DoRedraw3D()
 {
   // printf("RGTopFrame::DoRedraw3D redraw triggered\n");
   if (fResetCameras) {
-    fGLCanvas->GetViewer3D()->ResetCamerasAfterNextUpdate();
+    fCC->GetViewer3D()->ResetCamerasAfterNextUpdate();
     fResetCameras = kFALSE;
   }
-
-  fGLCanvas->Modified();
-  fGLCanvas->Update();
+  fCC->Modified();
+  fCC->Update();
   fTimerActive = kFALSE;
 }
 
@@ -243,7 +280,6 @@ int RGTopFrame::SpawnGuiAndRun(int argc, char **argv)
   TRint theApp("App", &argc, argv);
 
   /* gReve = */ new RGTopFrame(gClient->GetRoot(), w, h, revemode);
-
  run_loop:
   try {
     theApp.Run();
@@ -329,19 +365,16 @@ void RGTopFrame::RemoveRenderElement(RenderElement* parent,
 
 void RGTopFrame::DrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad)
 {
-  if(pad == 0) pad = fGLCanvas;
-
+  if(pad == 0) pad = GetCC();
   { Reve::PadHolder pHolder(false, pad);
-    if (pad == fGLCanvas) fGLCanvas->SetEditable(kTRUE);
     rnr_element->GetObject()->Draw();
-    if (pad == fGLCanvas) fGLCanvas->SetEditable(kFALSE);
   }
   Redraw3D();
 }
 
 void RGTopFrame::UndrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad)
 {
-  if(pad == 0) pad = fGLCanvas;
+  if(pad == 0) pad = GetCC();
   { Reve::PadHolder pHolder(false, pad);
     pad->GetListOfPrimitives()->Remove(rnr_element->GetObject());
   }
@@ -357,7 +390,6 @@ void RGTopFrame::RenderElementChecked(TObject* obj, Bool_t state)
 
   RenderElement* rnrEl = (RenderElement*) obj;
   rnrEl->SetRnrElement(state);
-  Redraw3D();
 }
 
 /**************************************************************************/
index 14a005e89018a032564b1472d2a80ce0052087cb..2af233f6c27ba23b45e5ba268aac19291477f52d 100644 (file)
@@ -37,7 +37,8 @@ public:
   enum LookType_e { LT_Classic, LT_Editor, LT_GLViewer };
 
 private:
-  TCanvas             *fGLCanvas;
+  TCanvas             *fCC;
+  TCanvas             *fHistoCanvas;
   VSDSelector         *fSelector;
   RGBrowser           *fBrowser;
   TGStatusBar         *fStatusBar;
@@ -63,7 +64,7 @@ protected:
 public:
   RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look=LT_Classic);
 
-  TCanvas*     GetGLCanvas()   { return fGLCanvas; }
+  TCanvas*     GetCC()         { return fCC; }
   VSDSelector* GetSelector()   { return fSelector; }
   RGBrowser*   GetBrowser()    { return fBrowser; }
   TGStatusBar* GetStatusBar()  { return fStatusBar; }
index 137495879a831cf51d964b5410b7e20cf94b4cf1..3bbd6652c5642bfffb5edc8e78ebc6fc9c5a4ace 100644 (file)
@@ -22,10 +22,10 @@ using namespace Reve;
 
 ClassImp(GeoNodeRnrElEditor)
 
-GeoNodeRnrElEditor::GeoNodeRnrElEditor(const TGWindow *p,
+GeoNodeRnrElEditor::GeoNodeRnrElEditor(const TGWindow *p, Int_t id,
                                        Int_t width, Int_t height,
                                        UInt_t options, Pixel_t back) :
-  TGedFrame(p,width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
 
   fNodeRE (0),
 
@@ -81,13 +81,32 @@ GeoNodeRnrElEditor::GeoNodeRnrElEditor(const TGWindow *p,
                           "Reve::GeoNodeRnrElEditor", this, "DoTransparency()");
     AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
   }
+
+
+  // What is this crap?
+  TClass *cl = GeoNodeRnrEl::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 /**************************************************************************/
 
-void GeoNodeRnrElEditor::SetModel(TObject* obj)
+void GeoNodeRnrElEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
 {
-  fNodeRE = dynamic_cast<GeoNodeRnrEl*>(obj);
+  fModel = 0;
+  fPad = 0;
+
+  if (!obj || !obj->InheritsFrom(GeoNodeRnrEl::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad = pad;
+   
+  fNodeRE = dynamic_cast<GeoNodeRnrEl*>(fModel);
   TGeoNode*  node = fNodeRE->fNode;
   TGeoVolume* vol = node->GetVolume();
 
@@ -97,6 +116,8 @@ void GeoNodeRnrElEditor::SetModel(TObject* obj)
   fVizVolumeDaughters->SetState(vol->IsVisDaughters() ? kButtonDown : kButtonUp);
 
   fTransparency->SetNumber(vol->GetTransparency());
+
+  SetActive();
 }
 
 /**************************************************************************/
@@ -143,10 +164,10 @@ void GeoNodeRnrElEditor::DoTransparency()
 
 ClassImp(GeoTopNodeRnrElEditor)
 
-GeoTopNodeRnrElEditor::GeoTopNodeRnrElEditor(const TGWindow *p,
+GeoTopNodeRnrElEditor::GeoTopNodeRnrElEditor(const TGWindow *p, Int_t id,
                                              Int_t width, Int_t height,
                                             UInt_t options, Pixel_t back) :
-  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
 
   fTopNodeRE (0),
   fVisOption (0),
@@ -183,16 +204,37 @@ GeoTopNodeRnrElEditor::GeoTopNodeRnrElEditor(const TGWindow *p,
                        "Reve::GeoTopNodeRnrElEditor", this, "DoVisLevel()");
     AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
   }
+
+
+  // What is this crap?
+  TClass *cl = GeoNodeRnrEl::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 /**************************************************************************/
 
-void GeoTopNodeRnrElEditor::SetModel(TObject* obj)
+void GeoTopNodeRnrElEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
 {
-  fTopNodeRE = dynamic_cast<GeoTopNodeRnrEl*>(obj);
+  fModel = 0;
+  fPad = 0;
+
+  if (!obj || !obj->InheritsFrom(GeoTopNodeRnrEl::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+   
+  fTopNodeRE = dynamic_cast<GeoTopNodeRnrEl*>(fModel);
 
   fVisOption->SetNumber(fTopNodeRE->GetVisOption());
   fVisLevel->SetNumber(fTopNodeRE->GetVisLevel());
+
+  SetActive();
 }
 
 /**************************************************************************/
index 68cf131931bff3c476942e66646054889403cf1a..c42dd992c25f7c79e3cd7c36aa2bbf7c762e8948 100644 (file)
@@ -31,11 +31,10 @@ protected:
   TGNumberEntry*  fTransparency;
 
 public:
-  GeoNodeRnrElEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                    UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  GeoNodeRnrElEditor(const TGWindow* p, Int_t id, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   virtual ~GeoNodeRnrElEditor() {}
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoVizNode();
   void DoVizNodeDaughters();
@@ -61,11 +60,10 @@ protected:
   TGNumberEntry*     fVisLevel;
 
 public:
-  GeoTopNodeRnrElEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                       UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  GeoTopNodeRnrElEditor(const TGWindow* p, Int_t id, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   virtual ~GeoTopNodeRnrElEditor() {}
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoVisOption();
   void DoVisLevel();
index 19589a9870b0bd776dc8ed2d88ea18b5ec2b16a6..6b25d6c4f485722aa97730989127be938a84f411 100644 (file)
@@ -195,6 +195,7 @@ void RenderElement::UpdateItems()
     if(fMainColorPtr != 0) i->fItem->SetColor(GetMainColor());
     gClient->NeedRedraw(i->fTree);
   }
+  gReve->Redraw3D(); // This will go away once editor can notify ALL changes.
 }
 
 /**************************************************************************/
@@ -241,12 +242,7 @@ void RenderElement::SetRnrElement(Bool_t rnr)
 {
   if(rnr != fRnrElement) {
     fRnrElement = rnr;
-    for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
-      if (i->fItem->IsChecked() != rnr) {
-        i->fItem->CheckItem(fRnrElement);
-        gClient->NeedRedraw(i->fTree);
-      }
-    }
+    UpdateItems();
   }
 }
 
@@ -256,12 +252,7 @@ void RenderElement::SetMainColor(Color_t color)
 {
   if (fMainColorPtr) {
     *fMainColorPtr = color;
-    for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
-      if(i->fItem->GetColor() != color) {
-        i->fItem->SetColor(GetMainColor());
-        gClient->NeedRedraw(i->fTree);
-      }
-    }
+    UpdateItems();
   }
 }
 
index 1fcc4f3c9bbeea0e6e3acdb31f283ffb4aded66a..6ec7425c6db39b6db307c14a52969f5627a05d12 100644 (file)
@@ -20,10 +20,10 @@ using namespace Reve;
 
 ClassImp(RenderElementEditor)
 
-RenderElementEditor::RenderElementEditor(const TGWindow *p,
+RenderElementEditor::RenderElementEditor(const TGWindow *p, Int_t id,
                                          Int_t width, Int_t height,
                                          UInt_t options, Pixel_t back) :
-  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
 
   fRE         (0),
   fHFrame     (0),
@@ -48,6 +48,13 @@ RenderElementEditor::RenderElementEditor(const TGWindow *p,
      "Reve::RenderElementEditor", this, "DoRnrElement()");
 
   AddFrame(fHFrame, new TGLayoutHints(kLHintsTop, 0, 0, 1, 1));    
+
+  // Register the editor.
+  TClass *cl = RenderElement::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 RenderElementEditor::~RenderElementEditor()
@@ -55,9 +62,20 @@ RenderElementEditor::~RenderElementEditor()
 
 /**************************************************************************/
 
-void RenderElementEditor::SetModel(TObject* obj)
+void RenderElementEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
 {
-  fRE = dynamic_cast<RenderElement*>(obj);
+  fModel = 0;
+  fPad   = 0;
+
+  if (!obj || !obj->InheritsFrom(RenderElement::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+
+  fRE = dynamic_cast<RenderElement*>(fModel);
 
   if (fRE->CanEditRnrElement()) {
     fRnrElement->SetState(fRE->GetRnrElement() ? kButtonDown : kButtonUp);
@@ -74,6 +92,8 @@ void RenderElementEditor::SetModel(TObject* obj)
   }
 
   fHFrame->Layout();
+
+  SetActive();
 }
 
 /**************************************************************************/
index 1bf489f00b8e4057c3b647f2518a9cdd59a756c9..2916585c68b38e778489b05d17758e8b67d4446d 100644 (file)
@@ -26,11 +26,10 @@ protected:
   TGColorSelect*     fMainColor;
 
 public:
-  RenderElementEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                     UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  RenderElementEditor(const TGWindow* p, Int_t id, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   ~RenderElementEditor();
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoRnrElement();
   void DoMainColor(Pixel_t color);
index 2bab8e469a3ae0299bf3621def9cf16ed8529433..95cfa64b7059bd2562a036631da08bea39af3968 100644 (file)
@@ -22,10 +22,10 @@ using namespace Reve;
 
 ClassImp(TrackListEditor)
 
-TrackListEditor::TrackListEditor(const TGWindow *p,
+TrackListEditor::TrackListEditor(const TGWindow *p, Int_t id,
                                  Int_t width, Int_t height,
                                  UInt_t options, Pixel_t back) :
-  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  TGedFrame(p, id, width, height, options | kVerticalFrame, back),
 
   fTC (0),
 
@@ -151,6 +151,13 @@ TrackListEditor::TrackListEditor(const TGWindow *p,
   fPtRange->Connect("ValueSet()",
                     "Reve::TrackListEditor", this, "DoPtRange()");
   AddFrame(fPtRange, new TGLayoutHints(kLHintsTop, 1, 1, 2, 1));
+
+  // Register the editor.
+  TClass *cl = TrackList::Class();
+  TGedElement *ge = new TGedElement;
+  ge->fGedFrame = this;
+  ge->fCanvas = 0;
+  cl->GetEditorList()->Add(ge);
 }
 
 TrackListEditor::~TrackListEditor()
@@ -158,9 +165,20 @@ TrackListEditor::~TrackListEditor()
 
 /**************************************************************************/
 
-void TrackListEditor::SetModel(TObject* obj)
+void TrackListEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
 {
-  fTC = dynamic_cast<TrackList*>(obj);
+  fModel = 0;
+  fPad   = 0;
+
+  if (!obj || !obj->InheritsFrom(TrackList::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
+    SetActive(kFALSE);
+    return;
+  }
+
+  fModel = obj;
+  fPad   = pad;
+
+  fTC = dynamic_cast<TrackList*>(fModel);
 
   fMaxR->SetNumber(fTC->GetMaxR());
   fMaxZ->SetNumber(fTC->GetMaxZ());
@@ -175,6 +193,8 @@ void TrackListEditor::SetModel(TObject* obj)
   fFitDecay->SetState(fTC->GetFitDecay() ? kButtonDown : kButtonUp);
 
   fPtRange->SetValues(0.1, 10);
+
+  SetActive();
 }
 
 /**************************************************************************/
@@ -243,5 +263,4 @@ void TrackListEditor::DoFitDecay()
 void TrackListEditor::DoPtRange()
 {
   fTC->SelectByPt(fPtRange->GetMin(), fPtRange->GetMax());
-  Update();
 }
index 6b8a2f14ab58cc6bb4d9f0c3730abed5a2d3f965..6054937b41a370c46d34efbd630a84eeed7f499a 100644 (file)
@@ -39,11 +39,10 @@ protected:
   RGDoubleValuator*  fPtRange;
 
 public:
-  TrackListEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
-                 UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  TrackListEditor(const TGWindow* p, Int_t id, Int_t width = 170, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground());
   ~TrackListEditor();
 
-  virtual void SetModel(TObject* obj);
+  virtual void SetModel(TVirtualPad* pad, TObject* obj, Int_t event);
 
   void DoMaxR();
   void DoMaxZ();
index 2551b35ce7b05ac60169769e7038bc4e3db69071..21c1142f4b6d355519550334865d65aca039cfb2 100644 (file)
@@ -207,7 +207,7 @@ void VSDSelector::SelectParticles(const Text_t* selection)
   // printf("%d entries in selection '%s'.\n", n,  selection);
 
   if(n > 0) {
-    Reve::PadHolder pHolder(true, gReve->GetGLCanvas());
+    Reve::PadHolder pHolder(true, gReve->GetCC());
     for(Int_t i=0; i<n; i++) {
       Int_t label = evl.GetEntry(i);
       mTreeK->GetEntry(label);
@@ -372,7 +372,7 @@ void VSDSelector::SelectRecTracks()
     throw (eH + "No entries found in ESD data.");
 
   if(n > 0) {
-    Reve::PadHolder pHolder(true, gReve->GetGLCanvas());
+    Reve::PadHolder pHolder(true, gReve->GetCC());
 
     TGListTreeItem* parent = fListTree->FindItemByPathname("Event0");
     TrackList* cont = new TrackList(); 
index 07a6019513c39b0f689a01d511298f70f13611cd..2bb2a6434ecbc0ef727fc66414ad5c2cbd092494 100644 (file)
@@ -27,11 +27,13 @@ void clusters_from_label(Int_t label=0)
     }
   }
   clusters->SetMarkerStyle(2);
-  clusters->SetMarkerSize(0.5);
+  clusters->SetMarkerSize(5);
   clusters->SetMarkerColor(4);
   clusters->SetName(Form("Clusters lab=%d", label));
 
   using namespace Reve;
-  gReve->AddRenderElement(clusters);
+  Color_t* colp = FindColorVar(clusters, "fMarkerColor");
+  RenderElementObjPtr* rnrEl = new RenderElementObjPtr(clusters, *colp);
+  gReve->AddRenderElement(rnrEl);
   gReve->Redraw3D();
 }
index 3eb5e5ff69c21deb98e9f1deff65244a881f93d7..0e56a5ca5310eea314f2a3f2ff1df54849950485 100644 (file)
@@ -11,6 +11,19 @@ TPolyMarker3D* make_vertex_marker(AliESDVertex* v, const Text_t* name)
 
   TPolyMarker3D* m = new TPolyMarker3D(8);
   m->SetName(name);
+
+  // Problem with volume/length suppression of objects in TGLViewer
+  /*
+  m->SetPoint(0, x[0]+e[0], x[1]+e[1], x[2]+e[2]);
+  m->SetPoint(1, x[0]+e[0], x[1]-e[1], x[2]+e[2]);
+  m->SetPoint(2, x[0]-e[0], x[1]-e[1], x[2]+e[2]);
+  m->SetPoint(3, x[0]-e[0], x[1]+e[1], x[2]+e[2]);
+
+  m->SetPoint(4, x[0]+e[0], x[1]+e[1], x[2]-e[2]);
+  m->SetPoint(5, x[0]+e[0], x[1]-e[1], x[2]-e[2]);
+  m->SetPoint(6, x[0]-e[0], x[1]+e[1], x[2]-e[2]);
+  m->SetPoint(7, x[0]-e[0], x[1]-e[1], x[2]-e[2]);
+  */
   m->SetPoint(0, x[0], x[1], x[2]);
 
   return m;
index 95c0d22c9d3732c8c9b052ca289bb02dfa6f8935..f069c67e503444e0c1507ae4df71ff77a2d67bc2 100644 (file)
@@ -5,4 +5,4 @@ SRCS     := $(patsubst EVE/%, %, ${ORGSRCS})
 HDRS     := $(SRCS:.cxx=.h)
 DHDR     := Reve/LinkDef.h
 
-all-EVE: all-Reve all-reve all-Alieve all-alieve
+all-EVE: all-Reve all-reve all-Alieve