]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveBase/AliEveConfigManager.cxx
AliEveConfigManager
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveConfigManager.cxx
1 // $Id$
2 // Author: Matevz Tadel 2009
3
4 /**************************************************************************
5  * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #include "AliEveConfigManager.h"
11
12 #include <TEveManager.h>
13 #include <TEveBrowser.h>
14 #include <TGMenu.h>
15
16 #include <RVersion.h>
17
18 //______________________________________________________________________________
19 // Full description of AliEveConfigManager
20 //
21
22 ClassImp(AliEveConfigManager)
23
24 AliEveConfigManager* AliEveConfigManager::fgMaster = 0;
25
26 namespace
27 {
28  enum EAliEveMenu_e
29  {
30    kAEMTest
31  };
32 }
33  
34 //______________________________________________________________________________
35 AliEveConfigManager* AliEveConfigManager::InitializeMaster()
36 {
37   // Get main instance.
38
39   static const TEveException kEH("AliEveConfigManager::InitializeMaster ");
40
41   if (fgMaster)
42     throw kEH + "Master already initialized.";
43
44   fgMaster = new AliEveConfigManager;
45   return fgMaster;
46 }
47
48 //______________________________________________________________________________
49 AliEveConfigManager* AliEveConfigManager::GetMaster()
50 {
51   // Get main instance.
52
53   static const TEveException kEH("AliEveConfigManager::GetMaster ");
54
55   if (!fgMaster)
56     throw kEH + "Master not initialized.";
57
58   return fgMaster;
59 }
60
61 //______________________________________________________________________________
62 AliEveConfigManager::AliEveConfigManager() :
63   TObject(),
64   fAliEvePopup(0)
65 {
66   // Constructor.
67   // Expected TEveManager is already initialized.
68
69   fAliEvePopup = new TGPopupMenu(gClient->GetRoot());
70   fAliEvePopup->AddEntry("&Test", kAEMTest);
71
72   fAliEvePopup->AddSeparator();
73
74   fAliEvePopup->Connect("Activated(Int_t)", "AliEveConfigManager",
75                         this, "AliEvePopupHandler(Int_t)");
76
77   TGMenuBar *mBar = 0;
78 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4) || defined XXX_LATEST_ROOT
79   mBar = gEve->GetBrowser()->GetMenuBar();
80 #else
81   // Uber hack as TRootBrowser does not provede manu-bar getter.
82   TGFrameElement   *xxFE = (TGFrameElement*)   gEve->GetBrowser()->GetList()->First();
83   TGCompositeFrame *xxCF = (TGCompositeFrame*) xxFE->fFrame;
84   xxFE = (TGFrameElement*)   xxCF->GetList()->First();
85   xxCF = (TGCompositeFrame*) xxFE->fFrame;
86   xxFE = (TGFrameElement*)   xxCF->GetList()->First();
87   xxCF = (TGCompositeFrame*) xxFE->fFrame;
88   xxFE = (TGFrameElement*)   xxCF->GetList()->First();
89   mBar = (TGMenuBar*) xxFE->fFrame;
90 #endif
91   mBar->AddPopup("&AliEve", fAliEvePopup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
92   ((TGCompositeFrame*)mBar->GetParent()->GetParent())->Layout();
93 }
94
95 //==============================================================================
96
97 void AliEveConfigManager::AliEvePopupHandler(Int_t id)
98 {
99   // Handle user selections from AliEve popup.
100
101   static const TEveException kEH("AliEveConfigManager::AliEvePopupHandler ");
102
103   switch (id)
104   {
105     case kAEMTest:
106     {
107       printf("Test!\n");
108       break;
109     }
110
111     default:
112     {
113       Warning(kEH, "Unknown menu entry.");
114       break;
115     }
116   }
117 }