]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/Alieve/TPCLoaderEditor.cxx
Use new naming conventions from QuadSet; increase x-width of SDD digits.
[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
a8600b56 28TPCLoaderEditor::TPCLoaderEditor(const TGWindow *p,
265ecb21 29 Int_t width, Int_t height,
e9a38ea3 30 UInt_t options, Pixel_t back) :
a8600b56 31 TGedFrame(p, width, height, options | kVerticalFrame, back),
265ecb21 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 }
e9a38ea3 101}
102
103TPCLoaderEditor::~TPCLoaderEditor()
104{}
105
106/**************************************************************************/
107
a8600b56 108void TPCLoaderEditor::SetModel(TObject* obj)
e9a38ea3 109{
a8600b56 110 fM = dynamic_cast<TPCLoader*>(obj);
e9a38ea3 111
89ec258e 112 // !!!! order changed, need TGTextEntry::SetText NO BLOODY EMIT.
113 fFile->SetToolTipText(gSystem->DirName(fM->fFile));
114 fFile->SetText(gSystem->BaseName(fM->fFile));
e9a38ea3 115 fEvent->SetValue(fM->fEvent);
116 fEvent->SetEnabled(fM->fEvent >= 0);
6e91772d 117 fDoubleSR->SetState(fM->fDoubleSR ? kButtonDown : kButtonUp);
e9a38ea3 118}
119
120/**************************************************************************/
121/**************************************************************************/
122
123namespace {
124const char *tpcfiletypes[] = {
125 "Root files", "*.root",
126 "All files", "*.*",
127 0, 0
128};
129}
130
131void TPCLoaderEditor::FileSelect()
132{
133 TGFileInfo fi;
fda47a05 134 fi.fIniDir = StrDup(gSystem->DirName (fM->fFile));
135 fi.fFilename = StrDup(gSystem->BaseName(fM->fFile));
e9a38ea3 136 fi.fFileTypes = tpcfiletypes;
89ec258e 137
e9a38ea3 138 new TGFileDialog(fClient->GetRoot(), gReve, kFDOpen, &fi);
89ec258e 139 if (!fi.fFilename)
140 return;
141
142 fFile->SetToolTipText(gSystem->DirName (fi.fFilename));
143 fFile->SetText (gSystem->BaseName(fi.fFilename));
e9a38ea3 144}
145
146void TPCLoaderEditor::FileChanged()
147{
89ec258e 148 fM->fFile = Form("%s/%s", fFile->GetToolTip()->GetText()->Data(),
149 fFile->GetText());
e9a38ea3 150}
151
152void TPCLoaderEditor::DoOpen()
153{
154 fM->OpenFile();
a8600b56 155 SetModel(fM);
e9a38ea3 156}
157
158/**************************************************************************/
159
160void TPCLoaderEditor::DoEvent()
161{
162 fM->GotoEvent((Int_t) fEvent->GetValue());
a8600b56 163 SetModel(fM);
e9a38ea3 164}
165
6e91772d 166void TPCLoaderEditor::DoDoubleSR()
167{
168 fM->SetDoubleSR(fDoubleSR->IsOn());
169 Update();
170}
171
e9a38ea3 172/**************************************************************************/
173
174void TPCLoaderEditor::DoUpdateSectors()
175{
176 fM->UpdateSectors();
177}
178
179void TPCLoaderEditor::DoCreateSectors3D()
180{
181 fM->CreateSectors3D();
182}
183
184
185void TPCLoaderEditor::DoDeleteSectors3D()
186{
187 fM->DeleteSectors3D();
188}
189