]>
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 * | |
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 | 27 | ClassImp(AliEveTRDLoaderManager) |
28 | ClassImp(AliEveTRDLoaderManagerEditor) | |
edf0c4a0 | 29 | |
30 | /////////////////////////////////////////////////////////// | |
fd31e9de | 31 | ///////// AliEveTRDLoaderManager ////////////// |
edf0c4a0 | 32 | /////////////////////////////////////////////////////////// |
33 | ||
fd31e9de | 34 | //______________________________________________________________________________ |
35 | AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) : | |
36 | TEveElementList(n, t) | |
edf0c4a0 | 37 | { |
a15e6d7d | 38 | // Constructor. |
edf0c4a0 | 39 | } |
40 | ||
fd31e9de | 41 | //______________________________________________________________________________ |
42 | void 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 | 69 | void 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 | //______________________________________________________________________________ |
81 | void 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 | //______________________________________________________________________________ |
97 | AliEveTRDLoaderManagerEditor:: | |
98 | AliEveTRDLoaderManagerEditor(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 | 139 | void 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 | 218 | void 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 | 242 | void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj) |
edf0c4a0 | 243 | { |
a15e6d7d | 244 | // Set model object. |
245 | ||
fd31e9de | 246 | fM = dynamic_cast<AliEveTRDLoaderManager*>(obj); |
edf0c4a0 | 247 | } |
248 |