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 **************************************************************************/
9 #include "AliEveTRDLoaderManager.h"
10 #include "AliEveTRDLoader.h"
11 #include "AliEveTRDLoaderImp.h"
13 #include <TEveManager.h>
17 #include <TGComboBox.h>
18 #include <TGListBox.h>
19 #include <TGListTree.h>
21 #include <TGToolTip.h>
22 #include <TClonesArray.h>
29 ClassImp(AliEveTRDLoaderManager)
30 ClassImp(AliEveTRDLoaderManagerEditor)
32 ///////////////////////////////////////////////////////////
33 ///////////// AliEveTRDLoaderManager //////////////
34 ///////////////////////////////////////////////////////////
37 //________________________________________________________
38 AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) : TEveElementList(n, t)
43 //________________________________________________________
44 AliEveTRDLoaderManager::~AliEveTRDLoaderManager()
49 //________________________________________________________
50 void AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title)
52 //Info("Add()", Form("type %d, name %s, title %s", type, name, title));
53 AliEveTRDLoader *trdl = 0x0;
56 //fChildren.push_back(new AliEveTRDLoaderSim(name, title));
57 gEve->AddElement(trdl = new AliEveTRDLoaderSim(name, title), this);
58 ((AliEveTRDLoaderSim*)trdl)->FindListTreeItem(gEve->GetListTree())->SetTipText(title);
63 //fChildren.push_back(new AliEveTRDLoader(name, title));
64 gEve->AddElement(trdl = new AliEveTRDLoader(name, title), this);
65 trdl->FindListTreeItem(gEve->GetListTree())->SetTipText(title);
66 trdl->SetDataType((TRDDataTypes)type);
70 //fChildren.push_back(new AliEveTRDLoaderRaw(name, title));
71 gEve->AddElement(trdl = new AliEveTRDLoaderRaw(name, title), this);
72 ((AliEveTRDLoaderRaw*)trdl)->FindListTreeItem(gEve->GetListTree())->SetTipText(title);
73 trdl->SetDataType((TRDDataTypes)type);
82 //________________________________________________________
83 void AliEveTRDLoaderManager::Paint(Option_t *option)
85 List_i ichmb = fChildren.begin();
86 while(ichmb != fChildren.end()){
87 (dynamic_cast<AliEveTRDLoader*>(*ichmb))->Paint(option);
92 //________________________________________________________
93 void AliEveTRDLoaderManager::Remove(Int_t entry)
95 //printf("AliEveTRDLoaderManager::Remove(%d)\n", entry);
96 List_i it = fChildren.begin();
97 for(int i=0; i<entry; i++) it++;
98 gEve->RemoveElement((*it), this);
102 ///////////////////////////////////////////////////////////
103 ///////////// AliEveTRDLoaderManagerEditor //////////////
104 ///////////////////////////////////////////////////////////
106 //________________________________________________________
107 AliEveTRDLoaderManagerEditor::AliEveTRDLoaderManagerEditor(const TGWindow* p, Int_t width, Int_t height, UInt_t options, Pixel_t back) : TGedFrame(p, width, height, options | kVerticalFrame, back)
109 MakeTitle("AliEveTRDLoaderManager");
111 // gClient->GetColorByName("#ffffff", bg);
112 // ChangeBackground(bg);
114 // control frame - always there
115 TGHorizontalFrame *fHorizontalFrame539 = new TGHorizontalFrame(this, 300, 26, kHorizontalFrame);//, bg);
117 TGLabel *fLabel546 = new TGLabel(fHorizontalFrame539,"Register Loader",TGLabel::GetDefaultGC()(),TGLabel::GetDefaultFontStruct(),kChildFrame);//, bg);
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());//, bg);
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);//, bg);
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*/);//, bg);
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);