ROOT logo
// @(#)root/eve:$Id: TEveGedEditor.cxx 24004 2008-05-24 20:08:56Z matevz $
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TEveGedEditor.h"
#include "TEveElement.h"
#include "TEveManager.h"

#include "TGedFrame.h"
#include "TGCanvas.h"
#include "TCanvas.h"

#include "TClass.h"

//==============================================================================
// TEveGedEditor
//==============================================================================

//______________________________________________________________________________
//
// Specialization of TGedEditor for proper update propagation to
// TEveManager.

ClassImp(TEveGedEditor);

//______________________________________________________________________________
TEveGedEditor::TEveGedEditor(TCanvas* canvas, Int_t width, Int_t height) :
   TGedEditor(canvas),
   fElement  (0),
   fObject   (0)
{
   // Constructor.

   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)
         Warning("TEveGedEditor::TEveGedEditor", "Can't fix priority for TAttMarkerEditor.\n");
      else
         * (Int_t*) (((char*)frame) + off) = 1;
   }
   SetFrameCreator(0);
   fClient->SetRoot(exroot);
   fFrameMap.Add(amClass, frame);
}

//______________________________________________________________________________
TEveElement* TEveGedEditor::GetEveElement() const
{
   // Return eve-element if it is the model object.

   return (fModel == fObject) ? fElement : 0;
}

//______________________________________________________________________________
void TEveGedEditor::DisplayElement(TEveElement* re)
{
   // Show a TEveElement in editor.

   static const TEveException eh("TEveGedEditor::DisplayElement ");

   fElement = re;
   fObject  = fElement ? fElement->GetEditorObject(eh) : 0;
   TGedEditor::SetModel(fPad, fObject, kButton1Down);
}

//______________________________________________________________________________
void TEveGedEditor::DisplayObject(TObject* obj)
{
   // Show a TObject in editor.

   fElement = dynamic_cast<TEveElement*>(obj);
   fObject  = obj;
   TGedEditor::SetModel(fPad, obj, kButton1Down);
}

/******************************************************************************/

//______________________________________________________________________________
void TEveGedEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t event)
{
   // Set model object.

   // !!!! do something so that such calls from elswhere will also
   // now the render element

   fElement = dynamic_cast<TEveElement*>(obj);
   fObject  = obj;
   TGedEditor::SetModel(pad, obj, event);
}

//______________________________________________________________________________
void TEveGedEditor::Update(TGedFrame* /*gframe*/)
{
   // Virtual method from TGedEditor, called on every change.
   // Propagates changes to TEveElement and TEveManager.

   if (fElement) {
      fElement->ElementChanged();
      fElement->PropagateVizParamsToProjecteds();
   }

   gEve->Redraw3D();
}

/******************************************************************************/

/*
// Attempt to enable mouse-wheel in geditor -- failed.
Bool_t TEveGedEditor::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);
}
}
*/
 TEveGedEditor.cxx:1
 TEveGedEditor.cxx:2
 TEveGedEditor.cxx:3
 TEveGedEditor.cxx:4
 TEveGedEditor.cxx:5
 TEveGedEditor.cxx:6
 TEveGedEditor.cxx:7
 TEveGedEditor.cxx:8
 TEveGedEditor.cxx:9
 TEveGedEditor.cxx:10
 TEveGedEditor.cxx:11
 TEveGedEditor.cxx:12
 TEveGedEditor.cxx:13
 TEveGedEditor.cxx:14
 TEveGedEditor.cxx:15
 TEveGedEditor.cxx:16
 TEveGedEditor.cxx:17
 TEveGedEditor.cxx:18
 TEveGedEditor.cxx:19
 TEveGedEditor.cxx:20
 TEveGedEditor.cxx:21
 TEveGedEditor.cxx:22
 TEveGedEditor.cxx:23
 TEveGedEditor.cxx:24
 TEveGedEditor.cxx:25
 TEveGedEditor.cxx:26
 TEveGedEditor.cxx:27
 TEveGedEditor.cxx:28
 TEveGedEditor.cxx:29
 TEveGedEditor.cxx:30
 TEveGedEditor.cxx:31
 TEveGedEditor.cxx:32
 TEveGedEditor.cxx:33
 TEveGedEditor.cxx:34
 TEveGedEditor.cxx:35
 TEveGedEditor.cxx:36
 TEveGedEditor.cxx:37
 TEveGedEditor.cxx:38
 TEveGedEditor.cxx:39
 TEveGedEditor.cxx:40
 TEveGedEditor.cxx:41
 TEveGedEditor.cxx:42
 TEveGedEditor.cxx:43
 TEveGedEditor.cxx:44
 TEveGedEditor.cxx:45
 TEveGedEditor.cxx:46
 TEveGedEditor.cxx:47
 TEveGedEditor.cxx:48
 TEveGedEditor.cxx:49
 TEveGedEditor.cxx:50
 TEveGedEditor.cxx:51
 TEveGedEditor.cxx:52
 TEveGedEditor.cxx:53
 TEveGedEditor.cxx:54
 TEveGedEditor.cxx:55
 TEveGedEditor.cxx:56
 TEveGedEditor.cxx:57
 TEveGedEditor.cxx:58
 TEveGedEditor.cxx:59
 TEveGedEditor.cxx:60
 TEveGedEditor.cxx:61
 TEveGedEditor.cxx:62
 TEveGedEditor.cxx:63
 TEveGedEditor.cxx:64
 TEveGedEditor.cxx:65
 TEveGedEditor.cxx:66
 TEveGedEditor.cxx:67
 TEveGedEditor.cxx:68
 TEveGedEditor.cxx:69
 TEveGedEditor.cxx:70
 TEveGedEditor.cxx:71
 TEveGedEditor.cxx:72
 TEveGedEditor.cxx:73
 TEveGedEditor.cxx:74
 TEveGedEditor.cxx:75
 TEveGedEditor.cxx:76
 TEveGedEditor.cxx:77
 TEveGedEditor.cxx:78
 TEveGedEditor.cxx:79
 TEveGedEditor.cxx:80
 TEveGedEditor.cxx:81
 TEveGedEditor.cxx:82
 TEveGedEditor.cxx:83
 TEveGedEditor.cxx:84
 TEveGedEditor.cxx:85
 TEveGedEditor.cxx:86
 TEveGedEditor.cxx:87
 TEveGedEditor.cxx:88
 TEveGedEditor.cxx:89
 TEveGedEditor.cxx:90
 TEveGedEditor.cxx:91
 TEveGedEditor.cxx:92
 TEveGedEditor.cxx:93
 TEveGedEditor.cxx:94
 TEveGedEditor.cxx:95
 TEveGedEditor.cxx:96
 TEveGedEditor.cxx:97
 TEveGedEditor.cxx:98
 TEveGedEditor.cxx:99
 TEveGedEditor.cxx:100
 TEveGedEditor.cxx:101
 TEveGedEditor.cxx:102
 TEveGedEditor.cxx:103
 TEveGedEditor.cxx:104
 TEveGedEditor.cxx:105
 TEveGedEditor.cxx:106
 TEveGedEditor.cxx:107
 TEveGedEditor.cxx:108
 TEveGedEditor.cxx:109
 TEveGedEditor.cxx:110
 TEveGedEditor.cxx:111
 TEveGedEditor.cxx:112
 TEveGedEditor.cxx:113
 TEveGedEditor.cxx:114
 TEveGedEditor.cxx:115
 TEveGedEditor.cxx:116
 TEveGedEditor.cxx:117
 TEveGedEditor.cxx:118
 TEveGedEditor.cxx:119
 TEveGedEditor.cxx:120
 TEveGedEditor.cxx:121
 TEveGedEditor.cxx:122
 TEveGedEditor.cxx:123
 TEveGedEditor.cxx:124
 TEveGedEditor.cxx:125
 TEveGedEditor.cxx:126
 TEveGedEditor.cxx:127
 TEveGedEditor.cxx:128
 TEveGedEditor.cxx:129
 TEveGedEditor.cxx:130
 TEveGedEditor.cxx:131
 TEveGedEditor.cxx:132
 TEveGedEditor.cxx:133
 TEveGedEditor.cxx:134
 TEveGedEditor.cxx:135
 TEveGedEditor.cxx:136
 TEveGedEditor.cxx:137