]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/Alieve/TPCLoaderEditor.cxx
Fix effc++ warnings.
[u/mrichter/AliRoot.git] / EVE / Alieve / TPCLoaderEditor.cxx
CommitLineData
e9a38ea3 1// $Header$
2
3#include "TPCLoaderEditor.h"
4#include <Alieve/TPCLoader.h>
5#include <Reve/RGTopFrame.h>
6#include <Reve/RGValuators.h>
7
8#include <TSystem.h>
9#include <TVirtualPad.h>
10#include <TColor.h>
11
12#include <TGLabel.h>
13#include <TGButton.h>
14#include <TGTextEntry.h>
15#include <TGNumberEntry.h>
16#include <TGFileDialog.h>
89ec258e 17#include <TGToolTip.h>
e9a38ea3 18
19using namespace Reve;
20using namespace Alieve;
21
22//______________________________________________________________________
23// TPCLoaderEditor
24//
25
26ClassImp(TPCLoaderEditor)
27
265ecb21 28TPCLoaderEditor::TPCLoaderEditor(const TGWindow *p, Int_t id,
29 Int_t width, Int_t height,
e9a38ea3 30 UInt_t options, Pixel_t back) :
265ecb21 31 TGedFrame(p, id, width, height, options | kVerticalFrame, back),
32
33 fM (0),
34
35 fFile (0),
36 fOpenFile (0),
37
38 fEvent (0),
39 fDoubleSR (0),
40
41 fUpdateSectors (0),
42 fCreateSectors3D (0),
43 fDeleteSectors3D (0)
e9a38ea3 44{
e9a38ea3 45 MakeTitle("TPCLoader");
46
47 Int_t labelW = 42;
48 {
49 TGHorizontalFrame* f = new TGHorizontalFrame(this);
50 TGHorizontalFrame* g = new TGHorizontalFrame(f, labelW, 0, kFixedWidth);
51 TGLabel* l = new TGLabel(g, "File: ");
52 g->AddFrame(l, new TGLayoutHints(kLHintsLeft, 0,0,4,0));
53 f->AddFrame(g);
54 fFile = new TGTextEntry(f);
55 fFile->SetWidth(140);
56 f->AddFrame(fFile);
57 fFile->Connect("DoubleClicked()",
58 "Alieve::TPCLoaderEditor", this, "FileSelect()");
59 fFile->Connect("TextChanged(const char *)",
60 "Alieve::TPCLoaderEditor", this, "FileChanged()");
61 fOpenFile = new TGTextButton(f, "Open");
62 f->AddFrame(fOpenFile);
63 fOpenFile->Connect("Clicked()",
64 "Alieve::TPCLoaderEditor", this, "DoOpen()");
65 AddFrame(f);
66 }
67
68 fEvent = new RGValuator(this, "Event:", 110, 0);
69 fEvent->SetShowSlider(kFALSE);
70 fEvent->SetLabelWidth(labelW);
71 fEvent->SetNELength(6);
72 fEvent->Build();
73 fEvent->SetLimits(0, 1000);
74 fEvent->SetToolTip("Current event number");
75 fEvent->Connect("ValueSet(Double_t)",
76 "Alieve::TPCLoaderEditor", this, "DoEvent()");
6e91772d 77 // Reuse Event for DoubleSR button
78 fDoubleSR = new TGCheckButton(fEvent, "Double SR");
79 fDoubleSR->SetToolTipText("Double sampling rate");
80 fEvent->AddFrame(fDoubleSR, new TGLayoutHints(kLHintsLeft, 12, 0, 1, 0));
b6b01ba3 81 fDoubleSR->Connect("Toggled(Bool_t)",
82 "Alieve::TPCLoaderEditor", this, "DoDoubleSR()");
e9a38ea3 83 AddFrame(fEvent);
84
85 fUpdateSectors = new TGTextButton(this, "Update Sectors");
86 AddFrame(fUpdateSectors, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
87 fUpdateSectors->Connect("Clicked()",
88 "Alieve::TPCLoaderEditor", this, "DoUpdateSectors()");
89 {
90 TGHorizontalFrame* f = new TGHorizontalFrame(this);
91 fCreateSectors3D = new TGTextButton(f, "Create 3D");
92 f->AddFrame(fCreateSectors3D, new TGLayoutHints(kLHintsExpandX, 0,4,0,0));
93 fCreateSectors3D->Connect("Clicked()",
94 "Alieve::TPCLoaderEditor", this, "DoCreateSectors3D()");
95 fDeleteSectors3D = new TGTextButton(f, "Delete 3D");
96 f->AddFrame(fDeleteSectors3D, new TGLayoutHints(kLHintsExpandX, 4,0,0,0));
97 fDeleteSectors3D->Connect("Clicked()",
98 "Alieve::TPCLoaderEditor", this, "DoDeleteSectors3D()");
99 AddFrame(f, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
100 }
101
102 // Register the editor.
103 TClass *cl = TPCLoader::Class();
104 TGedElement *ge = new TGedElement;
105 ge->fGedFrame = this;
106 ge->fCanvas = 0;
107 cl->GetEditorList()->Add(ge);
108}
109
110TPCLoaderEditor::~TPCLoaderEditor()
111{}
112
113/**************************************************************************/
114
115void TPCLoaderEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t /*event*/)
116{
117 fModel = 0;
118 fPad = 0;
119
120 if (!obj || !obj->InheritsFrom(TPCLoader::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
121 SetActive(kFALSE);
122 return;
123 }
124
125 fModel = obj;
126 fPad = pad;
127
128 fM = dynamic_cast<TPCLoader*>(fModel);
129
89ec258e 130 // !!!! order changed, need TGTextEntry::SetText NO BLOODY EMIT.
131 fFile->SetToolTipText(gSystem->DirName(fM->fFile));
132 fFile->SetText(gSystem->BaseName(fM->fFile));
e9a38ea3 133 fEvent->SetValue(fM->fEvent);
134 fEvent->SetEnabled(fM->fEvent >= 0);
6e91772d 135 fDoubleSR->SetState(fM->fDoubleSR ? kButtonDown : kButtonUp);
136
e9a38ea3 137 SetActive();
138}
139
140/**************************************************************************/
141/**************************************************************************/
142
143namespace {
144const char *tpcfiletypes[] = {
145 "Root files", "*.root",
146 "All files", "*.*",
147 0, 0
148};
149}
150
151void TPCLoaderEditor::FileSelect()
152{
153 TGFileInfo fi;
fda47a05 154 fi.fIniDir = StrDup(gSystem->DirName (fM->fFile));
155 fi.fFilename = StrDup(gSystem->BaseName(fM->fFile));
e9a38ea3 156 fi.fFileTypes = tpcfiletypes;
89ec258e 157
e9a38ea3 158 new TGFileDialog(fClient->GetRoot(), gReve, kFDOpen, &fi);
89ec258e 159 if (!fi.fFilename)
160 return;
161
162 fFile->SetToolTipText(gSystem->DirName (fi.fFilename));
163 fFile->SetText (gSystem->BaseName(fi.fFilename));
e9a38ea3 164}
165
166void TPCLoaderEditor::FileChanged()
167{
89ec258e 168 fM->fFile = Form("%s/%s", fFile->GetToolTip()->GetText()->Data(),
169 fFile->GetText());
e9a38ea3 170}
171
172void TPCLoaderEditor::DoOpen()
173{
174 fM->OpenFile();
175 SetModel(fPad, fModel, 0);
176}
177
178/**************************************************************************/
179
180void TPCLoaderEditor::DoEvent()
181{
182 fM->GotoEvent((Int_t) fEvent->GetValue());
183 SetModel(fPad, fModel, 0);
184}
185
6e91772d 186void TPCLoaderEditor::DoDoubleSR()
187{
188 fM->SetDoubleSR(fDoubleSR->IsOn());
189 Update();
190}
191
e9a38ea3 192/**************************************************************************/
193
194void TPCLoaderEditor::DoUpdateSectors()
195{
196 fM->UpdateSectors();
197}
198
199void TPCLoaderEditor::DoCreateSectors3D()
200{
201 fM->CreateSectors3D();
202}
203
204
205void TPCLoaderEditor::DoDeleteSectors3D()
206{
207 fM->DeleteSectors3D();
208}
209