]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Reve/RGEditor.cxx
First big commit of the mchview program and its accompanying library,
[u/mrichter/AliRoot.git] / EVE / Reve / RGEditor.cxx
1 // $Header$
2
3 #include "RGEditor.h"
4 #include "RenderElement.h"
5 #include "ReveManager.h"
6
7 #include <TGedFrame.h>
8 #include <TGCanvas.h>
9 #include <TCanvas.h>
10
11 //______________________________________________________________________
12 // RGEditor
13 //
14
15 using namespace Reve;
16
17 ClassImp(RGEditor)
18
19 RGEditor::RGEditor(TCanvas* canvas, Int_t width, Int_t height) :
20   TGedEditor(canvas),
21   fRnrElement(0),
22   fObject    (0)
23 {
24   Resize(width, height);
25
26   // Fix priority for TAttMarkerEditor.
27   TClass* amClass = TClass::GetClass("TAttMarker");
28   TClass* edClass = TClass::GetClass("TAttMarkerEditor");
29   TGWindow *exroot = (TGWindow*) fClient->GetRoot();
30   fClient->SetRoot(fTabContainer);
31   SetFrameCreator(this);
32   TGedFrame *frame = reinterpret_cast<TGedFrame*>(edClass->New());
33   frame->SetModelClass(amClass);
34   {
35     Int_t off = edClass->GetDataMemberOffset("fPriority");
36     if(off == 0)
37       printf("ojej!\n");
38     else
39       * (Int_t*) (((char*)frame) + off) = 1;
40   }
41   SetFrameCreator(0);
42   fClient->SetRoot(exroot);
43   fFrameMap.Add(amClass, frame);
44 }
45
46 RenderElement* RGEditor::GetRnrElement() const
47 {
48   return (fModel == fObject) ? fRnrElement : 0;
49 }
50
51 void RGEditor::DisplayRenderElement(RenderElement* re)
52 {
53   fRnrElement = re;
54   fObject     = fRnrElement ? fRnrElement->GetEditorObject() : 0;
55   TGedEditor::SetModel(fPad, fObject, kButton1Down);
56 }
57
58 void RGEditor::DisplayObject(TObject* obj)
59 {
60   fRnrElement = dynamic_cast<RenderElement*>(obj);
61   fObject     = obj;
62   TGedEditor::SetModel(fPad, obj, kButton1Down);
63 }
64
65 /**************************************************************************/
66
67 void RGEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t event)
68 {
69   // !!!! do something so that such calls from elswhere will also
70   // now the render element
71
72   fRnrElement = dynamic_cast<RenderElement*>(obj);
73   fObject     = obj;
74   TGedEditor::SetModel(pad, obj, event);
75 }
76
77 void RGEditor::Update(TGedFrame* /*gframe*/)
78 {
79   // Virtual method from TGedEditor ... called on every change.
80
81   if (fRnrElement) {
82     fRnrElement->UpdateItems();
83     fRnrElement->ElementChanged();
84   }
85
86   gReve->Redraw3D();
87 }
88
89 /**************************************************************************/
90
91 /*
92 // Attempt to enable mouse-wheel in geditor -- failed.
93 Bool_t RGEditor::HandleButton(Event_t *event)
94 {
95   // Handle mouse button event in container.
96
97   printf("odfjgsf\n");
98   if (event->fCode == kButton4 || event->fCode == kButton5) {
99     return fCan->GetContainer()->HandleButton(event);
100   } else {
101     return TGedEditor::HandleButton(event);
102   }
103 }
104 */