]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/Reve/RGEditor.cxx
Merged EVE-dev-after-merge to EVE-dev into HEAD. Requires ROOT-5.17.04.
[u/mrichter/AliRoot.git] / EVE / Reve / RGEditor.cxx
index cc98a3e2ec24e6a75c4bd8dfc8fca1912ebaef4d..ee51a68d031f82e9c2ad4c5eebc699fab0efd126 100644 (file)
@@ -2,7 +2,7 @@
 
 #include "RGEditor.h"
 #include "RenderElement.h"
-#include "RGTopFrame.h"
+#include "ReveManager.h"
 
 #include <TGedFrame.h>
 #include <TGCanvas.h>
@@ -16,22 +16,62 @@ using namespace Reve;
 
 ClassImp(RGEditor)
 
-RGEditor::RGEditor(TCanvas* canvas) :
+RGEditor::RGEditor(TCanvas* canvas, Int_t width, Int_t height) :
   TGedEditor(canvas),
-  fRnrElement(0)
-{}
+  fRnrElement(0),
+  fObject    (0)
+{
+  Resize(width, height);
+
+  // Fix priority for TAttMarkerEditor.
+  TClass* amClass = TClass::GetClass("TAttMarker");
+  TClass* edClass = TClass::GetClass("TAttMarkerEditor");
+  TGWindow *exroot = (TGWindow*) fClient->GetRoot();
+  fClient->SetRoot(fTabContainer);
+  SetFrameCreator(this);
+  TGedFrame *frame = reinterpret_cast<TGedFrame*>(edClass->New());
+  frame->SetModelClass(amClass);
+  {
+    Int_t off = edClass->GetDataMemberOffset("fPriority");
+    if(off == 0)
+      printf("ojej!\n");
+    else
+      * (Int_t*) (((char*)frame) + off) = 1;
+  }
+  SetFrameCreator(0);
+  fClient->SetRoot(exroot);
+  fFrameMap.Add(amClass, frame);
+}
+
+RenderElement* RGEditor::GetRnrElement() const
+{
+  return (fModel == fObject) ? fRnrElement : 0;
+}
 
 void RGEditor::DisplayRenderElement(RenderElement* re)
 {
   fRnrElement = re;
-  TObject* obj = fRnrElement ? fRnrElement->GetObject() : 0;
-  SetModel(fPad, obj, kButton1Down);
+  fObject     = fRnrElement ? fRnrElement->GetEditorObject() : 0;
+  TGedEditor::SetModel(fPad, fObject, kButton1Down);
 }
 
 void RGEditor::DisplayObject(TObject* obj)
 {
-  fRnrElement = 0;
-  SetModel(fPad, obj, kButton1Down);
+  fRnrElement = dynamic_cast<RenderElement*>(obj);
+  fObject     = obj;
+  TGedEditor::SetModel(fPad, obj, kButton1Down);
+}
+
+/**************************************************************************/
+
+void RGEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t event)
+{
+  // !!!! do something so that such calls from elswhere will also
+  // now the render element
+
+  fRnrElement = dynamic_cast<RenderElement*>(obj);
+  fObject     = obj;
+  TGedEditor::SetModel(pad, obj, event);
 }
 
 void RGEditor::Update(TGedFrame* /*gframe*/)
@@ -40,7 +80,25 @@ void RGEditor::Update(TGedFrame* /*gframe*/)
 
   if (fRnrElement) {
     fRnrElement->UpdateItems();
+    fRnrElement->ElementChanged();
   }
 
   gReve->Redraw3D();
 }
+
+/**************************************************************************/
+
+/*
+// Attempt to enable mouse-wheel in geditor -- failed.
+Bool_t RGEditor::HandleButton(Event_t *event)
+{
+  // Handle mouse button event in container.
+
+  printf("odfjgsf\n");
+  if (event->fCode == kButton4 || event->fCode == kButton5) {
+    return fCan->GetContainer()->HandleButton(event);
+  } else {
+    return TGedEditor::HandleButton(event);
+  }
+}
+*/