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