This commit was generated by cvs2svn to compensate for changes in r13732,
[u/mrichter/AliRoot.git] / EVE / Alieve / TPCSegmentEditor.cxx
1 // $Header$
2
3 #include "TPCSegmentEditor.h"
4 #include <Alieve/TPCSegment.h>
5
6 #include <TVirtualPad.h>
7 #include <TColor.h>
8
9 #include <TGLabel.h>
10 #include <TGButton.h>
11 #include <TGNumberEntry.h>
12 #include <TGColorSelect.h>
13 #include <TGSlider.h>
14 #include <TGDoubleSlider.h>
15
16 using namespace Reve;
17 using namespace Alieve;
18
19 //______________________________________________________________________
20 // TPCSegmentEditor
21 //
22
23 ClassImp(TPCSegmentEditor)
24
25 TPCSegmentEditor::TPCSegmentEditor(const TGWindow *p, Int_t id, Int_t width, Int_t height,
26                                    UInt_t options, Pixel_t back) :
27   TGedFrame(p, id, width, height, options | kVerticalFrame, back)
28 {
29   fM = 0;
30   MakeTitle("TPCSegment");
31
32   //!!! create the widgets here ...
33
34   // Register the editor.
35   // TClass *cl = TPCSegment::Class();
36   //  TGedElement *ge = new TGedElement;
37   // ge->fGedFrame = this;
38   //  ge->fCanvas = 0;
39   //  cl->GetEditorList()->Add(ge);
40
41   fUseTexture = new TGCheckButton(this, "UseTexture");
42   AddFrame(fUseTexture, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
43   fUseTexture->Connect
44     ("Toggled(Bool_t)","Alieve::TPCSegmentEditor", this, "DoUseTexture()");
45
46   {
47     TGHorizontalFrame* f = new TGHorizontalFrame(this);
48     TGLabel *l = new TGLabel(f, "SegmentID:");
49     f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 15, 2, 1, 1));
50
51     fSegmentID = new TGNumberEntry(f, 0., 6, -1, 
52                                    TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
53                                    TGNumberFormat::kNELLimitMinMax, 0, 35);
54
55     fSegmentID->GetNumberEntry()->SetToolTipText("0-18 front plate 18-36 back plate");
56     f->AddFrame(fSegmentID, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
57     fSegmentID->Associate(this);
58     fSegmentID->Connect("ValueSet(Long_t)",
59                         "Alieve::TPCSegmentEditor", this, "DoSegmentID()");                 
60
61     AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));  
62   }
63   {
64     TGHorizontalFrame* f = new TGHorizontalFrame(this);
65     TGLabel *l = new TGLabel(f, "Treshold:");
66     f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 15, 2, 1, 1));
67
68     fTreshold = new TGHSlider(f, 150);
69     fTreshold->SetRange(0,10);
70     fTreshold->Associate(this);
71     f->AddFrame(fTreshold, new TGLayoutHints(kLHintsLeft, 0, 5));
72     fTreshold->Connect("PositionChanged(Int_t)",
73                        "Alieve::TPCSegmentEditor", this, "DoTreshold()");
74     AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
75   }
76   {
77     TGHorizontalFrame* f = new TGHorizontalFrame(this);
78     TGLabel *l = new TGLabel(f, "MaxValue:");
79     f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
80     fMaxVal = new TGHSlider(f, 150);
81     fMaxVal->SetRange(0,100);
82     fMaxVal->Associate(this);
83     f->AddFrame(fMaxVal, new TGLayoutHints(kLHintsLeft, 0, 5));
84     fMaxVal->Connect("PositionChanged(Int_t)",
85                      "Alieve::TPCSegmentEditor", this, "DoMaxVal()");
86     AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
87   }
88   fShowMax = new TGCheckButton(this, "ShowMax");
89   AddFrame(fShowMax, new TGLayoutHints(kLHintsTop, 3, 1, 1, 0));
90   fShowMax->Connect("Toggled(Bool_t)","Alieve::TPCSegmentEditor", this, "DoShowMax()");
91
92   {
93     TGHorizontalFrame* f = new TGHorizontalFrame(this);
94     TGLabel *l = new TGLabel(f, "Time Range:");
95     f->AddFrame(l, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 2, 1, 1));
96
97     fTime = new TGDoubleHSlider(f);
98     fTime->SetRange(0, 500);
99     fTime->Resize(160, 20);
100     f->AddFrame(fTime);//, new TGLayoutHints(kLHintsLeft, 0, 5));
101     fTime->Connect("PositionChanged()", "Alieve::TPCSegmentEditor",
102                    this, "DoTime()");
103     AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
104   }
105   // What is this crap?
106   TClass *cl = TPCSegmentEditor::Class();
107   TGedElement *ge = new TGedElement;
108   ge->fGedFrame = this;
109   ge->fCanvas = 0;
110   cl->GetEditorList()->Add(ge);
111 }
112
113 TPCSegmentEditor::~TPCSegmentEditor()
114 {}
115
116 /**************************************************************************/
117
118 void TPCSegmentEditor::SetModel(TVirtualPad* pad, TObject* obj, Int_t )
119 {
120   fModel = 0;
121   fPad   = 0;
122
123   if (!obj || !obj->InheritsFrom(TPCSegment::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
124     SetActive(kFALSE);
125     return;
126   }
127
128   fModel = obj;
129   fPad   = pad;
130
131   fM = dynamic_cast<TPCSegment*>(fModel);
132
133   fUseTexture->SetState(fM->fUseTexture ? kButtonDown : kButtonUp);
134   fSegmentID->SetNumber(fM->fID);
135   fTreshold->SetPosition(fM->fTreshold);//(fTreshold->GetMaxPosition()- fTreshold->GetMinPosition() ));
136
137   fMaxVal->SetPosition(fM->fMaxVal);
138   fTime->SetPosition(fM->fMinTime, fM->fMaxTime);
139
140   fShowMax->SetState(fM->fShowMax ? kButtonDown : kButtonUp);
141   //  fTime->SetPosition(fM->fMaxTime);
142   SetActive();
143 }
144
145 /**************************************************************************/
146
147 void TPCSegmentEditor::DoUseTexture()
148 {
149   fM->fUseTexture = fUseTexture->IsOn();
150   Update();
151 }
152
153 void TPCSegmentEditor::DoSegmentID()
154 {
155   fM->SetSegmentID((Int_t) fSegmentID->GetNumber());
156   Update();
157 }
158
159 void TPCSegmentEditor::DoTreshold()
160 {
161   fM->SetTreshold((Short_t) fTreshold->GetPosition());
162   printf("DoTreshold %d \n",  fM->fTreshold);
163   Update();
164 }
165
166 void TPCSegmentEditor::DoMaxVal()
167 {
168   fM->SetMaxVal((Int_t) fMaxVal->GetPosition());
169   printf("DoMaxVal %d \n",fM->fMaxVal);
170   Update();
171 }
172
173 void TPCSegmentEditor::DoShowMax()
174 {
175   fM->SetShowMax(fShowMax->IsOn());
176   Update();
177 }
178
179 void TPCSegmentEditor::DoTime()
180
181   Double_t min = fTime->GetMinPosition(), max = fTime->GetMaxPosition();
182   printf("hslidor min=%f max=%f\n", min, max);
183   fM->SetMinTime((Int_t) min);
184   fM->SetMaxTime((Int_t) max);
185   Update();
186 }