3 #include "TPCLoaderEditor.h"
4 #include <Alieve/TPCLoader.h>
5 #include <Reve/RGTopFrame.h>
6 #include <Reve/RGValuators.h>
9 #include <TVirtualPad.h>
14 #include <TGTextEntry.h>
15 #include <TGNumberEntry.h>
16 #include <TGFileDialog.h>
19 using namespace Alieve;
21 //______________________________________________________________________
25 ClassImp(TPCLoaderEditor)
27 TPCLoaderEditor::TPCLoaderEditor(const TGWindow *p, Int_t id, Int_t width, Int_t height,
28 UInt_t options, Pixel_t back) :
29 TGedFrame(p, id, width, height, options | kVerticalFrame, back)
32 MakeTitle("TPCLoader");
36 TGHorizontalFrame* f = new TGHorizontalFrame(this);
37 TGHorizontalFrame* g = new TGHorizontalFrame(f, labelW, 0, kFixedWidth);
38 TGLabel* l = new TGLabel(g, "File: ");
39 g->AddFrame(l, new TGLayoutHints(kLHintsLeft, 0,0,4,0));
41 fFile = new TGTextEntry(f);
44 fFile->Connect("DoubleClicked()",
45 "Alieve::TPCLoaderEditor", this, "FileSelect()");
46 fFile->Connect("TextChanged(const char *)",
47 "Alieve::TPCLoaderEditor", this, "FileChanged()");
48 fOpenFile = new TGTextButton(f, "Open");
49 f->AddFrame(fOpenFile);
50 fOpenFile->Connect("Clicked()",
51 "Alieve::TPCLoaderEditor", this, "DoOpen()");
55 fEvent = new RGValuator(this, "Event:", 110, 0);
56 fEvent->SetShowSlider(kFALSE);
57 fEvent->SetLabelWidth(labelW);
58 fEvent->SetNELength(6);
60 fEvent->SetLimits(0, 1000);
61 fEvent->SetToolTip("Current event number");
62 fEvent->Connect("ValueSet(Double_t)",
63 "Alieve::TPCLoaderEditor", this, "DoEvent()");
66 fUpdateSectors = new TGTextButton(this, "Update Sectors");
67 AddFrame(fUpdateSectors, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
68 fUpdateSectors->Connect("Clicked()",
69 "Alieve::TPCLoaderEditor", this, "DoUpdateSectors()");
71 TGHorizontalFrame* f = new TGHorizontalFrame(this);
72 fCreateSectors3D = new TGTextButton(f, "Create 3D");
73 f->AddFrame(fCreateSectors3D, new TGLayoutHints(kLHintsExpandX, 0,4,0,0));
74 fCreateSectors3D->Connect("Clicked()",
75 "Alieve::TPCLoaderEditor", this, "DoCreateSectors3D()");
76 fDeleteSectors3D = new TGTextButton(f, "Delete 3D");
77 f->AddFrame(fDeleteSectors3D, new TGLayoutHints(kLHintsExpandX, 4,0,0,0));
78 fDeleteSectors3D->Connect("Clicked()",
79 "Alieve::TPCLoaderEditor", this, "DoDeleteSectors3D()");
80 AddFrame(f, new TGLayoutHints(kLHintsExpandX, 8,8,8,0));
83 // Register the editor.
84 TClass *cl = TPCLoader::Class();
85 TGedElement *ge = new TGedElement;
88 cl->GetEditorList()->Add(ge);
91 TPCLoaderEditor::~TPCLoaderEditor()
94 /**************************************************************************/
96 void TPCLoaderEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t /*event*/)
101 if (!obj || !obj->InheritsFrom(TPCLoader::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
109 fM = dynamic_cast<TPCLoader*>(fModel);
111 fFile->SetText(fM->fFile);
112 fEvent->SetValue(fM->fEvent);
113 fEvent->SetEnabled(fM->fEvent >= 0);
118 /**************************************************************************/
119 /**************************************************************************/
122 const char *tpcfiletypes[] = {
123 "Root files", "*.root",
129 void TPCLoaderEditor::FileSelect()
132 fi.fFileTypes = tpcfiletypes;
133 new TGFileDialog(fClient->GetRoot(), gReve, kFDOpen, &fi);
134 if (!fi.fFilename) return;
135 fFile->SetText(gSystem->BaseName(fi.fFilename));
138 void TPCLoaderEditor::FileChanged()
140 fM->fFile = fFile->GetText();
143 void TPCLoaderEditor::DoOpen()
146 SetModel(fPad, fModel, 0);
149 /**************************************************************************/
151 void TPCLoaderEditor::DoEvent()
153 fM->GotoEvent((Int_t) fEvent->GetValue());
154 SetModel(fPad, fModel, 0);
157 /**************************************************************************/
159 void TPCLoaderEditor::DoUpdateSectors()
164 void TPCLoaderEditor::DoCreateSectors3D()
166 fM->CreateSectors3D();
170 void TPCLoaderEditor::DoDeleteSectors3D()
172 fM->DeleteSectors3D();