]>
Commit | Line | Data |
---|---|---|
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 * | |
7 | * full copyright notice. * | |
8 | **************************************************************************/ | |
9 | #include "AliEveTRDLoaderManager.h" | |
10 | #include "AliEveTRDLoader.h" | |
11 | #include "AliEveTRDLoaderImp.h" | |
edf0c4a0 | 12 | |
84aff7a4 | 13 | #include <TEveManager.h> |
edf0c4a0 | 14 | |
15 | #include <TGLabel.h> | |
16 | #include <TGButton.h> | |
17 | #include <TGComboBox.h> | |
18 | #include <TGListBox.h> | |
19 | #include <TGListTree.h> | |
20 | #include <TGString.h> | |
21 | #include <TGToolTip.h> | |
22 | #include <TClonesArray.h> | |
23 | ||
24 | #include "AliLog.h" | |
d810d0de | 25 | |
edf0c4a0 | 26 | using namespace std; |
27 | ||
28 | ||
d810d0de | 29 | ClassImp(AliEveTRDLoaderManager) |
30 | ClassImp(AliEveTRDLoaderManagerEditor) | |
edf0c4a0 | 31 | |
32 | /////////////////////////////////////////////////////////// | |
d810d0de | 33 | ///////////// AliEveTRDLoaderManager ////////////// |
edf0c4a0 | 34 | /////////////////////////////////////////////////////////// |
35 | ||
36 | ||
37 | //________________________________________________________ | |
d810d0de | 38 | AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) : TEveElementList(n, t) |
edf0c4a0 | 39 | { |
40 | ||
41 | } | |
42 | ||
43 | //________________________________________________________ | |
d810d0de | 44 | AliEveTRDLoaderManager::~AliEveTRDLoaderManager() |
edf0c4a0 | 45 | { |
46 | ||
47 | } | |
48 | ||
49 | //________________________________________________________ | |
d810d0de | 50 | void AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title) |
edf0c4a0 | 51 | { |
52 | //Info("Add()", Form("type %d, name %s, title %s", type, name, title)); | |
d810d0de | 53 | AliEveTRDLoader *trdl = 0x0; |
edf0c4a0 | 54 | switch(type){ |
55 | case 0: | |
d810d0de | 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); | |
edf0c4a0 | 59 | break; |
60 | case 1: | |
61 | case 2: | |
62 | case 3: | |
d810d0de | 63 | //fChildren.push_back(new AliEveTRDLoader(name, title)); |
64 | gEve->AddElement(trdl = new AliEveTRDLoader(name, title), this); | |
84aff7a4 | 65 | trdl->FindListTreeItem(gEve->GetListTree())->SetTipText(title); |
d810d0de | 66 | trdl->SetDataType((TRDDataTypes)type); |
edf0c4a0 | 67 | break; |
68 | case 4: | |
69 | case 5: | |
d810d0de | 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); | |
edf0c4a0 | 74 | break; |
75 | } | |
76 | ||
84aff7a4 | 77 | gEve->Redraw3D(); |
edf0c4a0 | 78 | } |
79 | ||
80 | ||
81 | ||
82 | //________________________________________________________ | |
d810d0de | 83 | void AliEveTRDLoaderManager::Paint(Option_t *option) |
edf0c4a0 | 84 | { |
85 | List_i ichmb = fChildren.begin(); | |
86 | while(ichmb != fChildren.end()){ | |
d810d0de | 87 | (dynamic_cast<AliEveTRDLoader*>(*ichmb))->Paint(option); |
edf0c4a0 | 88 | ichmb++; |
89 | } | |
90 | } | |
91 | ||
92 | //________________________________________________________ | |
d810d0de | 93 | void AliEveTRDLoaderManager::Remove(Int_t entry) |
edf0c4a0 | 94 | { |
d810d0de | 95 | //printf("AliEveTRDLoaderManager::Remove(%d)\n", entry); |
edf0c4a0 | 96 | List_i it = fChildren.begin(); |
97 | for(int i=0; i<entry; i++) it++; | |
84aff7a4 | 98 | gEve->RemoveElement((*it), this); |
edf0c4a0 | 99 | fChildren.erase(it); |
100 | } | |
101 | ||
102 | /////////////////////////////////////////////////////////// | |
d810d0de | 103 | ///////////// AliEveTRDLoaderManagerEditor ////////////// |
edf0c4a0 | 104 | /////////////////////////////////////////////////////////// |
105 | ||
106 | //________________________________________________________ | |
d810d0de | 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) |
edf0c4a0 | 108 | { |
d810d0de | 109 | MakeTitle("AliEveTRDLoaderManager"); |
edf0c4a0 | 110 | |
111 | // gClient->GetColorByName("#ffffff", bg); | |
112 | // ChangeBackground(bg); | |
113 | ||
114 | // control frame - always there | |
115 | TGHorizontalFrame *fHorizontalFrame539 = new TGHorizontalFrame(this, 300, 26, kHorizontalFrame);//, bg); | |
116 | ||
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)); | |
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"); | |
d810d0de | 136 | fAdd->Connect("Clicked()", "AliEveTRDLoaderManagerEditor", this, "Add()"); |
edf0c4a0 | 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 = 0x0; | |
141 | fRemove = 0x0; | |
142 | } | |
143 | ||
144 | //________________________________________________________ | |
d810d0de | 145 | AliEveTRDLoaderManagerEditor::~AliEveTRDLoaderManagerEditor() |
edf0c4a0 | 146 | { |
147 | ||
148 | } | |
149 | ||
150 | ||
151 | //_________________________________________________________ | |
d810d0de | 152 | void AliEveTRDLoaderManagerEditor::Add() |
edf0c4a0 | 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());//, bg); | |
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);//, bg); | |
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*/);//, bg); | |
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); | |
d810d0de | 213 | fRemoveButton->Connect("Clicked()", "AliEveTRDLoaderManagerEditor", this, Form("Remove(=%d)", nbutton)); |
edf0c4a0 | 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 | //_________________________________________________________ | |
d810d0de | 229 | void AliEveTRDLoaderManagerEditor::Remove(Int_t entry) |
edf0c4a0 | 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 | //_________________________________________________________ | |
d810d0de | 251 | void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj) |
edf0c4a0 | 252 | { |
d810d0de | 253 | fM = dynamic_cast<AliEveTRDLoaderManager*>(obj); |
edf0c4a0 | 254 | } |
255 |