]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveDet/AliEveTRDLoaderManager.cxx
From Massimo: remove usage of AliITSgeom, use AliITSgeomTGeo instead.
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDLoaderManager.cxx
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, 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 "AliEveTRDLoaderManager.h"
11 #include "AliEveTRDLoader.h"
12 #include "AliEveTRDLoaderImp.h"
13
14 #include <TEveManager.h>
15
16 #include <TGLabel.h>
17 #include <TGButton.h>
18 #include <TGComboBox.h>
19 #include <TGListBox.h>
20 #include <TGListTree.h>
21 #include <TGString.h>
22 #include <TGToolTip.h>
23 #include <TClonesArray.h>
24
25 #include "AliLog.h"
26
27 ClassImp(AliEveTRDLoaderManager)
28 ClassImp(AliEveTRDLoaderManagerEditor)
29
30 ///////////////////////////////////////////////////////////
31 /////////        AliEveTRDLoaderManager      //////////////
32 ///////////////////////////////////////////////////////////
33
34
35 //______________________________________________________________________________
36 AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) :
37   TEveElementList(n, t)
38 {
39   // Constructor. Noop.
40 }
41
42 //______________________________________________________________________________
43 AliEveTRDLoaderManager::~AliEveTRDLoaderManager()
44 {
45   // Destructor. Noop.
46 }
47
48 //______________________________________________________________________________
49 void AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title)
50 {
51   //Info("Add()", Form("type %d, name %s, title %s", type, name, title));
52   AliEveTRDLoader *trdl = 0x0;
53   switch(type){
54     case 0:
55       //fChildren.push_back(new AliEveTRDLoaderSim(name, title));
56       gEve->AddElement(trdl = new AliEveTRDLoaderSim(name, title), this);
57       ((AliEveTRDLoaderSim*)trdl)->FindListTreeItem(gEve->GetListTree())->SetTipText(title);
58       break;
59     case 1:
60     case 2:
61     case 3:
62       //fChildren.push_back(new AliEveTRDLoader(name, title));
63       gEve->AddElement(trdl = new AliEveTRDLoader(name, title), this);
64       trdl->FindListTreeItem(gEve->GetListTree())->SetTipText(title);
65       trdl->SetDataType((AliEveTRDLoader::TRDDataTypes)type);
66       break;
67     case 4:
68     case 5:
69       //fChildren.push_back(new AliEveTRDLoaderRaw(name, title));
70       gEve->AddElement(trdl = new AliEveTRDLoaderRaw(name, title), this);
71       ((AliEveTRDLoaderRaw*)trdl)->FindListTreeItem(gEve->GetListTree())->SetTipText(title);
72       trdl->SetDataType((AliEveTRDLoader::TRDDataTypes)type);
73       break;
74   }
75
76   gEve->Redraw3D();
77 }
78
79
80
81 //______________________________________________________________________________
82 void AliEveTRDLoaderManager::Paint(Option_t *option)
83 {
84   List_i ichmb = fChildren.begin();
85   while(ichmb != fChildren.end()){
86     (dynamic_cast<AliEveTRDLoader*>(*ichmb))->Paint(option);
87     ichmb++;
88   }
89 }
90
91 //______________________________________________________________________________
92 void AliEveTRDLoaderManager::Remove(Int_t entry)
93 {
94   //printf("AliEveTRDLoaderManager::Remove(%d)\n", entry);
95   List_i it = fChildren.begin();
96   for(int i=0; i<entry; i++) it++;
97   gEve->RemoveElement((*it), this);
98   fChildren.erase(it);
99 }
100
101 ///////////////////////////////////////////////////////////
102 //////////   AliEveTRDLoaderManagerEditor       ///////////
103 ///////////////////////////////////////////////////////////
104
105 //______________________________________________________________________________
106 AliEveTRDLoaderManagerEditor::
107 AliEveTRDLoaderManagerEditor(const TGWindow* p, Int_t width, Int_t height,
108                              UInt_t options, Pixel_t back) :
109   TGedFrame(p, width, height, options | kVerticalFrame, back),
110   fM(0), fSelector(0), fAdd(0), fRemoveButton(0), fGroupFrame(0), fRemove(0)
111 {
112   MakeTitle("AliEveTRDLoaderManager");
113
114   // control frame - always there
115   TGHorizontalFrame *fHorizontalFrame539 = new TGHorizontalFrame(this, 300, 26, kHorizontalFrame);
116
117   TGLabel *fLabel546 = new TGLabel(fHorizontalFrame539,"Register Loader",TGLabel::GetDefaultGC()(),TGLabel::GetDefaultFontStruct(),kChildFrame);
118   fLabel546->SetTextJustify(36);
119   fHorizontalFrame539->AddFrame(fLabel546, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY,2,2,2,2));
120
121   // combo box
122   fSelector = new TGComboBox(fHorizontalFrame539,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
123   fSelector->AddEntry("MC (gAlice) ",0);
124   fSelector->AddEntry("Digits ",1);
125   fSelector->AddEntry("Clusters ",2);
126   fSelector->AddEntry("Tracklets ",3);
127   fSelector->AddEntry("Raw (ROOT) ",4);
128   fSelector->AddEntry("Raw (DATE) ",5);
129   fSelector->Resize(136,22);
130   fHorizontalFrame539->AddFrame(fSelector, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY,2,2,2,2));
131
132   fAdd = new TGTextButton(fHorizontalFrame539, "Add");
133   fAdd->SetTextJustify(36);
134   fAdd->Resize(31,22);
135   fAdd->SetToolTipText("Add selected loader to list");
136   fAdd->Connect("Clicked()", "AliEveTRDLoaderManagerEditor", this, "Add()");
137   fHorizontalFrame539->AddFrame(fAdd, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2));
138   AddFrame(fHorizontalFrame539, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
139
140   fGroupFrame = 0;
141   fRemove     = 0;
142 }
143
144 //______________________________________________________________________________
145 AliEveTRDLoaderManagerEditor::~AliEveTRDLoaderManagerEditor()
146 {
147
148 }
149
150
151 //______________________________________________________________________________
152 void AliEveTRDLoaderManagerEditor::Add()
153 {
154   TGTextLBEntry *entry = (TGTextLBEntry*)fSelector->GetSelectedEntry();
155   if(!entry){
156     AliWarning("Select first the loader type that you want to use from the drop down list.");
157     return;
158   }
159
160   if(!fGroupFrame){
161     // "TRD Loaders" group frame
162     fGroupFrame = new TGGroupFrame(this,"TRD Loaders",kVerticalFrame,TGGroupFrame::GetDefaultGC()(),TGGroupFrame::GetDefaultFontStruct());
163     fGroupFrame->SetLayoutManager(new TGVerticalLayout(fGroupFrame));
164     fGroupFrame->Resize(300,128);
165     AddFrame(fGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX, 2,2,2,2));
166
167     fRemove = new TClonesArray("TGTextButton", 3);
168   }
169
170   char *title[] = {"MC loader", "Single file loader", "Raw data loader"};
171   // char *color[] = {"#ff0000", "#0000ff", "#59d454"};
172   int id = fSelector->GetSelected(), type;
173   switch(id){
174     case 1:
175     case 2:
176     case 3:
177       type = 1;
178       break;
179     case 4:
180     case 5:
181       type = 2;
182       break;
183     default:
184       type = 0;
185       break;
186   }
187
188
189   // horizontal frame
190   TGHorizontalFrame *fHorizontalFrame = new TGHorizontalFrame(fGroupFrame, 264, 26, kHorizontalFrame);
191
192   //    TGFont *ufont = gClient->GetFont("-*-helvetica-(null)-*-*-0-*-*-*-*-*-*-*");
193   //    TGGC   *uGC;           // will reflect user GC changes
194   //    // graphics context changes
195   //    GCValues_t vall717;
196   //    vall717.fMask = kGCForeground | kGCBackground | kGCFillStyle | kGCFont | kGCGraphicsExposures;
197   //    gClient->GetColorByName(color[type], vall717.fForeground);
198   //    gClient->GetColorByName("#c0c0c0", vall717.fBackground);
199   //    vall717.fFillStyle = kFillSolid;
200   //    vall717.fFont = ufont->GetFontHandle();
201   //    vall717.fGraphicsExposures = kFALSE;
202   //    uGC = gClient->GetGC(&vall717, kTRUE);
203
204   TGLabel *fLabel717 = new TGLabel(fHorizontalFrame, entry->GetText()->GetString()/*, uGC->GetGC(), ufont->GetFontStruct(), kChildFrame*/);
205   fLabel717->SetTextJustify(36);
206   fHorizontalFrame->AddFrame(fLabel717, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
207
208
209   Int_t nbutton = fM->fChildren.size();
210   fRemoveButton = new((*fRemove)[nbutton]) TGTextButton(fHorizontalFrame, "Remove", nbutton);
211   fRemoveButton->SetTextJustify(36);
212   fRemoveButton->Resize(53,22);
213   fRemoveButton->Connect("Clicked()", "AliEveTRDLoaderManagerEditor", this, Form("Remove(=%d)", nbutton));
214   fRemoveButton->SetToolTipText(Form("Remove %s Loader", entry->GetText()->GetString()));
215   fHorizontalFrame->AddFrame(fRemoveButton, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2));
216
217   fGroupFrame->AddFrame(fHorizontalFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
218
219
220   MapSubwindows();
221   Resize(GetDefaultSize());
222   MapWindow();
223
224   fM->Add(id, entry->GetText()->GetString(), title[type]);
225 }
226
227
228 //______________________________________________________________________________
229 void AliEveTRDLoaderManagerEditor::Remove(Int_t entry)
230 {
231   TIterator *it = fGroupFrame->GetList()->MakeIterator();
232   int ientry = 0;
233   while(/*TGFrame *f=(TGFrame*)*/it->Next()){
234     //printf("%s\n", f->IsA()->GetName());
235     if(entry == ientry){
236       //fGroupFrame->RemoveFrame(f);
237       break;
238     }
239     ientry++;
240   }
241
242
243   MapSubwindows();
244   Resize(GetDefaultSize());
245   MapWindow();
246
247   //fM->Remove(entry);
248 }
249
250 //______________________________________________________________________________
251 void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj)
252 {
253   fM = dynamic_cast<AliEveTRDLoaderManager*>(obj);
254 }
255