]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Alieve/AliEveTRDLoaderManager.cxx
Put all classes in Alieve/ sub-module out of the Alieve namespace and
[u/mrichter/AliRoot.git] / EVE / Alieve / AliEveTRDLoaderManager.cxx
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"
12
13 #include <TEveManager.h>
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"
25
26 using namespace std;
27
28
29 ClassImp(AliEveTRDLoaderManager)
30 ClassImp(AliEveTRDLoaderManagerEditor)
31
32 ///////////////////////////////////////////////////////////
33 /////////////         AliEveTRDLoaderManager       //////////////
34 ///////////////////////////////////////////////////////////
35
36
37 //________________________________________________________
38 AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) : TEveElementList(n, t)
39 {
40
41 }
42
43 //________________________________________________________
44 AliEveTRDLoaderManager::~AliEveTRDLoaderManager()
45 {
46
47 }
48
49 //________________________________________________________
50 void    AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title)
51 {
52         //Info("Add()", Form("type %d, name %s, title %s", type, name, title));
53         AliEveTRDLoader *trdl = 0x0;
54         switch(type){
55         case 0:
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);
59                 break;  
60         case 1:
61         case 2:
62         case 3:
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);
67                 break;
68         case 4:
69         case 5:
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);
74                 break;
75         }
76         
77         gEve->Redraw3D();
78 }
79
80
81
82 //________________________________________________________
83 void AliEveTRDLoaderManager::Paint(Option_t *option)
84 {
85         List_i ichmb = fChildren.begin();
86         while(ichmb != fChildren.end()){
87                 (dynamic_cast<AliEveTRDLoader*>(*ichmb))->Paint(option);
88                 ichmb++;
89         }
90 }
91
92 //________________________________________________________
93 void    AliEveTRDLoaderManager::Remove(Int_t entry)
94 {
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);
99         fChildren.erase(it);
100 }
101
102 ///////////////////////////////////////////////////////////
103 /////////////   AliEveTRDLoaderManagerEditor       //////////////
104 ///////////////////////////////////////////////////////////
105
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)
108 {
109         MakeTitle("AliEveTRDLoaderManager");
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");
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));
139
140         fGroupFrame = 0x0;
141         fRemove     = 0x0;
142 }
143
144 //________________________________________________________
145 AliEveTRDLoaderManagerEditor::~AliEveTRDLoaderManagerEditor()
146 {
147         
148 }
149
150
151 //_________________________________________________________
152 void AliEveTRDLoaderManagerEditor::Add()
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);
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));
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 //_________________________________________________________
229 void AliEveTRDLoaderManagerEditor::Remove(Int_t entry)
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 //_________________________________________________________
251 void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj)
252 {
253         fM = dynamic_cast<AliEveTRDLoaderManager*>(obj);
254 }
255