2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
10 #include "AliEveTRDLoaderManager.h"
11 #include "AliEveTRDLoader.h"
12 #include "AliEveTRDLoaderImp.h"
14 #include <TEveManager.h>
18 #include <TGComboBox.h>
19 #include <TGListBox.h>
20 #include <TGListTree.h>
22 #include <TGToolTip.h>
23 #include <TClonesArray.h>
27 ClassImp(AliEveTRDLoaderManager)
28 ClassImp(AliEveTRDLoaderManagerEditor)
30 ///////////////////////////////////////////////////////////
31 ///////// AliEveTRDLoaderManager //////////////
32 ///////////////////////////////////////////////////////////
35 //______________________________________________________________________________
36 AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) :
42 //______________________________________________________________________________
43 AliEveTRDLoaderManager::~AliEveTRDLoaderManager()
48 //______________________________________________________________________________
49 void AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title)
51 //Info("Add()", Form("type %d, name %s, title %s", type, name, title));
52 AliEveTRDLoader *trdl = 0x0;
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);
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);
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);
81 //______________________________________________________________________________
82 void AliEveTRDLoaderManager::Paint(Option_t *option)
84 List_i ichmb = fChildren.begin();
85 while(ichmb != fChildren.end()){
86 (dynamic_cast<AliEveTRDLoader*>(*ichmb))->Paint(option);
91 //______________________________________________________________________________
92 void AliEveTRDLoaderManager::Remove(Int_t entry)
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);
101 ///////////////////////////////////////////////////////////
102 ////////// AliEveTRDLoaderManagerEditor ///////////
103 ///////////////////////////////////////////////////////////
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)
112 MakeTitle("AliEveTRDLoaderManager");
114 // control frame - always there
115 TGHorizontalFrame *fHorizontalFrame539 = new TGHorizontalFrame(this, 300, 26, kHorizontalFrame);
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));
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));
132 fAdd = new TGTextButton(fHorizontalFrame539, "Add");
133 fAdd->SetTextJustify(36);
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));
144 //______________________________________________________________________________
145 AliEveTRDLoaderManagerEditor::~AliEveTRDLoaderManagerEditor()
151 //______________________________________________________________________________
152 void AliEveTRDLoaderManagerEditor::Add()
154 TGTextLBEntry *entry = (TGTextLBEntry*)fSelector->GetSelectedEntry();
156 AliWarning("Select first the loader type that you want to use from the drop down list.");
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));
167 fRemove = new TClonesArray("TGTextButton", 3);
170 char *title[] = {"MC loader", "Single file loader", "Raw data loader"};
171 // char *color[] = {"#ff0000", "#0000ff", "#59d454"};
172 int id = fSelector->GetSelected(), type;
190 TGHorizontalFrame *fHorizontalFrame = new TGHorizontalFrame(fGroupFrame, 264, 26, kHorizontalFrame);
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);
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));
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));
217 fGroupFrame->AddFrame(fHorizontalFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
221 Resize(GetDefaultSize());
224 fM->Add(id, entry->GetText()->GetString(), title[type]);
228 //______________________________________________________________________________
229 void AliEveTRDLoaderManagerEditor::Remove(Int_t entry)
231 TIterator *it = fGroupFrame->GetList()->MakeIterator();
233 while(/*TGFrame *f=(TGFrame*)*/it->Next()){
234 //printf("%s\n", f->IsA()->GetName());
236 //fGroupFrame->RemoveFrame(f);
244 Resize(GetDefaultSize());
250 //______________________________________________________________________________
251 void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj)
253 fM = dynamic_cast<AliEveTRDLoaderManager*>(obj);