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