GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
LevelEditor.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2004 by Olivier Stezowski *
3  * stezow(AT)ipnl.in2p3.fr *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ***************************************************************************/
20 
23 // root include's
24 #ifndef ROOT_TGColorSelect
25 #include <TGColorSelect.h>
26 #endif
27 #ifndef ROOT_TGColorDialog
28 #include <TGColorDialog.h>
29 #endif
30 #ifndef ROOT_TGClient
31 #include <TGClient.h>
32 #endif
33 #ifndef ROOT_TGComboBox
34 #include <TGComboBox.h>
35 #endif
36 #ifndef ROOT_TColor
37 #include <TColor.h>
38 #endif
39 #ifndef ROOT_TVirtualPad
40 #include <TVirtualPad.h>
41 #endif
42 #ifndef ROOT_TGTextEntry
43 #include <TGTextEntry.h>
44 #endif
45 #ifndef ROOT_TGNumberEntry
46 #include <TGNumberEntry.h>
47 #endif
48 #ifndef ROOT_TGLabel
49 #include <TGLabel.h>
50 #endif
51 
52 // gw include's
53 #ifndef GW_LEVELEDITOR_H
54 #include "LevelEditor.h"
55 #endif
56 
57 using namespace Gw;
58 
60 
61 enum ELineWid {
62  kCOLOR,
63  kLINE_WIDTH,
64  kLINE_STYLE
65 };
66 
67 
68 LevelEditor::LevelEditor(const TGWindow *p, Int_t /*id*/)
69 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
70  : TGedFrame(p)
71 #else
72  : TGedFrame(p, id)
73 #endif
74 {
75  fLevel = 0;
76 
77  MakeTitle("Label0");
78 
79  TGCompositeFrame *f2 = new TGCompositeFrame(this, 150, 20, kHorizontalFrame);
80  AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
81 
82  fColorSelect0 = new TGColorSelect(f2, 0, kCOLOR);
83  f2->AddFrame(fColorSelect0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
84  //fColorSelect0->Associate(this);
85  fTextEntry0 = new TGTextEntry(f2); fTextEntry0->Resize(70,20);
86  f2->AddFrame(fTextEntry0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
87  //fTextEntry0->Associate(this);
88 
89  TGCompositeFrame *f2bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
90  AddFrame(f2bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
91  TGLabel *fOffsetLblX0 = new TGLabel(f2bis, "DX ");
92  f2bis->AddFrame(fOffsetLblX0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
93  fOffsetX0 = new TGNumberEntry(f2bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX0->Resize(50,20);
94  f2bis->AddFrame(fOffsetX0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
95  TGLabel *fOffsetLblY0 = new TGLabel(f2bis, " DY ");
96  f2bis->AddFrame(fOffsetLblY0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
97  fOffsetY0 = new TGNumberEntry(f2bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY0->Resize(50,20);
98  f2bis->AddFrame(fOffsetY0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
99 
100  MakeTitle("Label1");
101 
102  TGCompositeFrame *f3 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
103  AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
104 
105  fColorSelect1 = new TGColorSelect(f3, 0, kCOLOR);
106  f3->AddFrame(fColorSelect1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
107  //fColorSelect1->Associate(this);
108  fTextEntry1 = new TGTextEntry(f3); fTextEntry1->Resize(70,20);
109  f3->AddFrame(fTextEntry1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
110  //fTextEntry1->Associate(this);
111 
112  TGCompositeFrame *f3bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
113  AddFrame(f3bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
114  TGLabel *fOffsetLblX1 = new TGLabel(f3bis, "DX ");
115  f3bis->AddFrame(fOffsetLblX1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
116  fOffsetX1 = new TGNumberEntry(f3bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX1->Resize(50,20);
117  f3bis->AddFrame(fOffsetX1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
118  TGLabel *fOffsetLblY1 = new TGLabel(f3bis, " DY ");
119  f3bis->AddFrame(fOffsetLblY1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
120  fOffsetY1 = new TGNumberEntry(f3bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY1->Resize(50,20);
121  f3bis->AddFrame(fOffsetY1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
122 
123  MakeTitle("Label2");
124 
125  TGCompositeFrame *f4 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
126  AddFrame(f4, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
127 
128  fColorSelect2 = new TGColorSelect(f4, 0, kCOLOR);
129  f4->AddFrame(fColorSelect2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
130  //fColorSelect2->Associate(this);
131  fTextEntry2 = new TGTextEntry(f4); fTextEntry2->Resize(70,20);
132  f4->AddFrame(fTextEntry2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
133  //fTextEntry2->Associate(this);
134 
135  TGCompositeFrame *f4bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
136  AddFrame(f4bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
137  TGLabel *fOffsetLblX2 = new TGLabel(f4bis, "DX ");
138  f4bis->AddFrame(fOffsetLblX2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
139  fOffsetX2 = new TGNumberEntry(f4bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX2->Resize(50,20);
140  f4bis->AddFrame(fOffsetX2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
141  TGLabel *fOffsetLblY2 = new TGLabel(f4bis, " DY ");
142  f4bis->AddFrame(fOffsetLblY2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
143  fOffsetY2 = new TGNumberEntry(f4bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY2->Resize(50,20);
144  f4bis->AddFrame(fOffsetY2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
145 
146  MakeTitle("Label3");
147 
148  TGCompositeFrame *f5 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
149  AddFrame(f5, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
150 
151  fColorSelect3 = new TGColorSelect(f5, 0, kCOLOR);
152  f5->AddFrame(fColorSelect3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
153  //ColorSelect3->Associate(this);
154  fTextEntry3 = new TGTextEntry(f5); fTextEntry3->Resize(70,20);
155  f5->AddFrame(fTextEntry3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
156  //fTextEntry3->Associate(this);
157 
158  TGCompositeFrame *f5bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
159  AddFrame(f5bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
160  TGLabel *fOffsetLblX3 = new TGLabel(f5bis, "DX ");
161  f5bis->AddFrame(fOffsetLblX3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
162  fOffsetX3 = new TGNumberEntry(f5bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX3->Resize(50,20);
163  f5bis->AddFrame(fOffsetX3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
164  TGLabel *fOffsetLblY3 = new TGLabel(f5bis, " DY ");
165  f5bis->AddFrame(fOffsetLblY3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
166  fOffsetY3 = new TGNumberEntry(f5bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY3->Resize(50,20);
167  f5bis->AddFrame(fOffsetY3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
168 
169 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
170 #else
171  TClass *cl = Level::Class();
172  TGedElement *ge = new TGedElement;
173  ge->fGedFrame = this;
174  ge->fCanvas = 0;
175  cl->GetEditorList()->Add(ge);
176 #endif
177 }
178 
179 
180 LevelEditor::LevelEditor(const TGWindow *p)
181 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
182  : TGedFrame(p)
183 #else
184  : TGedFrame(p,0)
185 #endif
186 {
187  fLevel = 0;
188 
189  MakeTitle("Label0");
190 
191  TGCompositeFrame *f2 = new TGCompositeFrame(this, 150, 20, kHorizontalFrame);
192  AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
193 
194  fColorSelect0 = new TGColorSelect(f2, 0, kCOLOR);
195  f2->AddFrame(fColorSelect0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
196  //fColorSelect0->Associate(this);
197  fTextEntry0 = new TGTextEntry(f2); fTextEntry0->Resize(70,20);
198  f2->AddFrame(fTextEntry0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
199  //fTextEntry0->Associate(this);
200 
201  TGCompositeFrame *f2bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
202  AddFrame(f2bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
203  TGLabel *fOffsetLblX0 = new TGLabel(f2bis, "DX ");
204  f2bis->AddFrame(fOffsetLblX0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
205  fOffsetX0 = new TGNumberEntry(f2bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX0->Resize(50,20);
206  f2bis->AddFrame(fOffsetX0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
207  TGLabel *fOffsetLblY0 = new TGLabel(f2bis, " DY ");
208  f2bis->AddFrame(fOffsetLblY0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
209  fOffsetY0 = new TGNumberEntry(f2bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY0->Resize(50,20);
210  f2bis->AddFrame(fOffsetY0, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
211 
212  MakeTitle("Label1");
213 
214  TGCompositeFrame *f3 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
215  AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
216 
217  fColorSelect1 = new TGColorSelect(f3, 0, kCOLOR);
218  f3->AddFrame(fColorSelect1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
219  //fColorSelect1->Associate(this);
220  fTextEntry1 = new TGTextEntry(f3); fTextEntry1->Resize(70,20);
221  f3->AddFrame(fTextEntry1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
222  //fTextEntry1->Associate(this);
223 
224  TGCompositeFrame *f3bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
225  AddFrame(f3bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
226  TGLabel *fOffsetLblX1 = new TGLabel(f3bis, "DX ");
227  f3bis->AddFrame(fOffsetLblX1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
228  fOffsetX1 = new TGNumberEntry(f3bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX1->Resize(50,20);
229  f3bis->AddFrame(fOffsetX1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
230  TGLabel *fOffsetLblY1 = new TGLabel(f3bis, " DY ");
231  f3bis->AddFrame(fOffsetLblY1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
232  fOffsetY1 = new TGNumberEntry(f3bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY1->Resize(50,20);
233  f3bis->AddFrame(fOffsetY1, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
234 
235  MakeTitle("Label2");
236 
237  TGCompositeFrame *f4 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
238  AddFrame(f4, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
239 
240  fColorSelect2 = new TGColorSelect(f4, 0, kCOLOR);
241  f4->AddFrame(fColorSelect2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
242  //fColorSelect2->Associate(this);
243  fTextEntry2 = new TGTextEntry(f4); fTextEntry2->Resize(70,20);
244  f4->AddFrame(fTextEntry2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
245  //fTextEntry2->Associate(this);
246 
247  TGCompositeFrame *f4bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
248  AddFrame(f4bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
249  TGLabel *fOffsetLblX2 = new TGLabel(f4bis, "DX ");
250  f4bis->AddFrame(fOffsetLblX2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
251  fOffsetX2 = new TGNumberEntry(f4bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX2->Resize(50,20);
252  f4bis->AddFrame(fOffsetX2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
253  TGLabel *fOffsetLblY2 = new TGLabel(f4bis, " DY ");
254  f4bis->AddFrame(fOffsetLblY2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
255  fOffsetY2 = new TGNumberEntry(f4bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY2->Resize(50,20);
256  f4bis->AddFrame(fOffsetY2, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
257 
258  MakeTitle("Label3");
259 
260  TGCompositeFrame *f5 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
261  AddFrame(f5, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
262 
263  fColorSelect3 = new TGColorSelect(f5, 0, kCOLOR);
264  f5->AddFrame(fColorSelect3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
265  //ColorSelect3->Associate(this);
266  fTextEntry3 = new TGTextEntry(f5); fTextEntry3->Resize(70,20);
267  f5->AddFrame(fTextEntry3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
268  //fTextEntry3->Associate(this);
269 
270  TGCompositeFrame *f5bis = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
271  AddFrame(f5bis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
272  TGLabel *fOffsetLblX3 = new TGLabel(f5bis, "DX ");
273  f5bis->AddFrame(fOffsetLblX3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
274  fOffsetX3 = new TGNumberEntry(f5bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetX3->Resize(50,20);
275  f5bis->AddFrame(fOffsetX3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
276  TGLabel *fOffsetLblY3 = new TGLabel(f5bis, " DY ");
277  f5bis->AddFrame(fOffsetLblY3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
278  fOffsetY3 = new TGNumberEntry(f5bis,0.00,6,-1,TGNumberFormat::kNESRealTwo); fOffsetY3->Resize(50,20);
279  f5bis->AddFrame(fOffsetY3, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
280 
281 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
282 #else
283  TClass *cl = Level::Class();
284  TGedElement *ge = new TGedElement;
285  ge->fGedFrame = this;
286  ge->fCanvas = 0;
287  cl->GetEditorList()->Add(ge);
288 #endif
289 }
290 
292 {
293 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
294 #else
295  TGFrameElement *el;
296  TIter next(GetList());
297 
298  while ((el = (TGFrameElement *)next())) {
299  if (!strcmp(el->fFrame->ClassName(), "TGCompositeFrame"))
300  ((TGCompositeFrame *)el->fFrame)->Cleanup();
301  }
302  Cleanup();
303 #endif
304 }
305 
307 {
308  fColorSelect0->Connect("ColorSelected(Pixel_t)", "Gw::LevelEditor", this, "DoTextColor0(Pixel_t)");
309  fColorSelect1->Connect("ColorSelected(Pixel_t)", "Gw::LevelEditor", this, "DoTextColor1(Pixel_t)");
310  fColorSelect2->Connect("ColorSelected(Pixel_t)", "Gw::LevelEditor", this, "DoTextColor2(Pixel_t)");
311  fColorSelect3->Connect("ColorSelected(Pixel_t)", "Gw::LevelEditor", this, "DoTextColor3(Pixel_t)");
312 
313  fTextEntry0->Connect("TextChanged(Char_t*)", "Gw::LevelEditor", this, "DoTextEntry0(Char_t*)");
314  fTextEntry1->Connect("TextChanged(Char_t*)", "Gw::LevelEditor", this, "DoTextEntry1(Char_t*)");
315  fTextEntry2->Connect("TextChanged(Char_t*)", "Gw::LevelEditor", this, "DoTextEntry2(Char_t*)");
316  fTextEntry3->Connect("TextChanged(Char_t*)", "Gw::LevelEditor", this, "DoTextEntry3(Char_t*)");
317 
318  fOffsetX0->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetX0()");
319  fOffsetY0->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetY0()");
320  fOffsetX1->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetX1()");
321  fOffsetY1->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetY1()");
322  fOffsetX2->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetX2()");
323  fOffsetY2->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetY2()");
324  fOffsetX3->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetX3()");
325  fOffsetY3->Connect("ValueSet(Long_t)","Gw::LevelEditor", this, "DoOffsetY3()");
326 
327  fInit = kFALSE;
328 }
329 
330 
331 // NEW
332 void LevelEditor::SetModel(TObject* obj)
333 {
334 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
335 #else
336  fModel = 0; fPad = 0;
337 
338  if ( !obj || !obj->InheritsFrom(Level::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
339  SetActive(kFALSE);
340  return;
341  }
342  fModel = obj; fPad = TVirtualPad::Pad();
343 #endif
344 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
345  fLevel = dynamic_cast<Level *>(obj); fAvoidSignal = kTRUE;
346 #else
347  fLevel = dynamic_cast<Level *>(fModel);
348 #endif
349 
350  Color_t c; Pixel_t p;
351  c = fLevel->GetLabel(0).GetTextColor();
352  p = TColor::Number2Pixel(c);
353  fColorSelect0->SetColor(p);
354  c = fLevel->GetLabel(1).GetTextColor();
355  p = TColor::Number2Pixel(c);
356  fColorSelect1->SetColor(p);
357  c = fLevel->GetLabel(2).GetTextColor();
358  p = TColor::Number2Pixel(c);
359  fColorSelect2->SetColor(p);
360  c = fLevel->GetLabel(3).GetTextColor();
361  p = TColor::Number2Pixel(c);
362  fColorSelect3->SetColor(p);
363 
364  fTextEntry0->SetText(fLevel->GetLabel(0).GetTitle());
365  fTextEntry1->SetText(fLevel->GetLabel(1).GetTitle());
366  fTextEntry2->SetText(fLevel->GetLabel(2).GetTitle());
367  fTextEntry3->SetText(fLevel->GetLabel(3).GetTitle());
368 
369 
370  if (TVirtualPad::Pad()) {
371  Float_t echX,echY;
372  echX = TVirtualPad::Pad()->GetUxmax() - TVirtualPad::Pad()->GetUxmin();
373  echY = TVirtualPad::Pad()->GetUymax() - TVirtualPad::Pad()->GetUymin();
374  fOffsetX0->SetNumber((fLevel->GetLabel(0).GetX() - fLevel->GetX1()) / echX);
375  fOffsetY0->SetNumber((fLevel->GetLabel(0).GetY() - fLevel->GetY1()) / echY);
376  fOffsetX1->SetNumber((fLevel->GetLabel(1).GetX() - fLevel->GetX2()) / echX);
377  fOffsetY1->SetNumber((fLevel->GetLabel(1).GetY() - fLevel->GetY1()) / echY);
378  fOffsetX2->SetNumber((fLevel->GetLabel(2).GetX() - fLevel->GetX2()) / echX);
379  fOffsetY2->SetNumber((fLevel->GetLabel(2).GetY() - fLevel->GetY1()) / echY);
380  fOffsetX3->SetNumber((fLevel->GetLabel(3).GetX() - fLevel->GetX1()) / echX);
381  fOffsetY3->SetNumber((fLevel->GetLabel(3).GetY() - fLevel->GetY1()) / echY);
382  }
383 
384  if (fInit) ConnectSignals2Slots();
385 
386 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
387  fAvoidSignal = kFALSE;
388 #else
389  SetActive();
390 #endif
391 }
392 
393 
394 void LevelEditor::SetModel(TVirtualPad* /*pad*/, TObject* obj, Int_t)
395 {
396 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
397 #else
398  fModel = 0; fPad = 0;
399 
400  if ( !obj || !obj->InheritsFrom(Level::Class()) || obj->InheritsFrom(TVirtualPad::Class())) {
401  SetActive(kFALSE);
402  return;
403  }
404  fModel = obj; fPad = pad;
405 #endif
406 
407 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
408  fLevel = dynamic_cast<Level *>(obj); fAvoidSignal = kTRUE;
409 #else
410  fLevel = dynamic_cast<Level *>(fModel);
411 #endif
412 
413  Color_t c; Pixel_t p;
414  c = fLevel->GetLabel(0).GetTextColor();
415  p = TColor::Number2Pixel(c);
416  fColorSelect0->SetColor(p);
417  c = fLevel->GetLabel(1).GetTextColor();
418  p = TColor::Number2Pixel(c);
419  fColorSelect1->SetColor(p);
420  c = fLevel->GetLabel(2).GetTextColor();
421  p = TColor::Number2Pixel(c);
422  fColorSelect2->SetColor(p);
423  c = fLevel->GetLabel(3).GetTextColor();
424  p = TColor::Number2Pixel(c);
425  fColorSelect3->SetColor(p);
426 
427  fTextEntry0->SetText(fLevel->GetLabel(0).GetTitle());
428  fTextEntry1->SetText(fLevel->GetLabel(1).GetTitle());
429  fTextEntry2->SetText(fLevel->GetLabel(2).GetTitle());
430  fTextEntry3->SetText(fLevel->GetLabel(3).GetTitle());
431 
432 
433  if (TVirtualPad::Pad()) {
434  Float_t echX,echY;
435  echX = TVirtualPad::Pad()->GetUxmax() - TVirtualPad::Pad()->GetUxmin();
436  echY = TVirtualPad::Pad()->GetUymax() - TVirtualPad::Pad()->GetUymin();
437  fOffsetX0->SetNumber((fLevel->GetLabel(0).GetX() - fLevel->GetX1()) / echX);
438  fOffsetY0->SetNumber((fLevel->GetLabel(0).GetY() - fLevel->GetY1()) / echY);
439  fOffsetX1->SetNumber((fLevel->GetLabel(1).GetX() - fLevel->GetX2()) / echX);
440  fOffsetY1->SetNumber((fLevel->GetLabel(1).GetY() - fLevel->GetY1()) / echY);
441  fOffsetX2->SetNumber((fLevel->GetLabel(2).GetX() - fLevel->GetX2()) / echX);
442  fOffsetY2->SetNumber((fLevel->GetLabel(2).GetY() - fLevel->GetY1()) / echY);
443  fOffsetX3->SetNumber((fLevel->GetLabel(3).GetX() - fLevel->GetX1()) / echX);
444  fOffsetY3->SetNumber((fLevel->GetLabel(3).GetY() - fLevel->GetY1()) / echY);
445  }
446 
447  if (fInit) ConnectSignals2Slots();
448 
449 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,14,0)
450  fAvoidSignal = kFALSE;
451 #else
452  SetActive();
453 #endif
454 }
455 
456 
457 void LevelEditor::DoTextColor0(Pixel_t color)
458 {
459  // Slot connected to the label0 text color.
460  fLevel->GetLabel(0).SetTextColor(TColor::GetColor(color));
461  Update();
462 }
463 
464 
465 void LevelEditor::DoTextColor1(Pixel_t color)
466 {
467  // Slot connected to the label1 text color.
468  fLevel->GetLabel(1).SetTextColor(TColor::GetColor(color));
469  Update();
470 }
471 
472 
473 void LevelEditor::DoTextColor2(Pixel_t color)
474 {
475  // Slot connected to the label2 text color.
476  fLevel->GetLabel(2).SetTextColor(TColor::GetColor(color));
477  Update();
478 }
479 
480 
481 void LevelEditor::DoTextColor3(Pixel_t color)
482 {
483  // Slot connected to the label3 text color.
484  fLevel->GetLabel(3).SetTextColor(TColor::GetColor(color));
485  Update();
486 }
487 
488 
489 void LevelEditor::DoTextEntry0(const Char_t *name)
490 {
491  // Slot connected to the label0 text field.
492  fLevel->GetLabel(0).SetTitle(name);
493  Update();
494 }
495 
496 
497 void LevelEditor::DoTextEntry1(const Char_t *name)
498 {
499  // Slot connected to the label1 text field.
500  fLevel->GetLabel(1).SetTitle(name);
501  Update();
502 }
503 
504 
505 void LevelEditor::DoTextEntry2(const Char_t *name)
506 {
507  // Slot connected to the label2 text field.
508  fLevel->GetLabel(2).SetTitle(name);
509  Update();
510 }
511 
512 
513 void LevelEditor::DoTextEntry3(const Char_t *name)
514 {
515  // Slot connected to the label3 text field.
516  fLevel->GetLabel(3).SetTitle(name);
517  Update();
518 }
519 
520 
522 {
523  // Slot connected to the Label0 offset in X axis.
524  if (TVirtualPad::Pad()) {
525  Float_t offset = fOffsetX0->GetNumber() * (TVirtualPad::Pad()->GetUxmax() - TVirtualPad::Pad()->GetUxmin());
526  fLevel->GetLabel(0).SetX(fLevel->GetX1() + offset);
527  Update();
528  }
529 }
530 
531 
533 {
534  // Slot connected to the Label0 offset in Y axis.
535  if (TVirtualPad::Pad()) {
536  Float_t offset = fOffsetY0->GetNumber() * (TVirtualPad::Pad()->GetUymax() - TVirtualPad::Pad()->GetUymin());
537  fLevel->GetLabel(0).SetY(fLevel->GetY1() + offset);
538  Update();
539  }
540 }
541 
542 
544 {
545  // Slot connected to the Label1 offset in X axis.
546  if (TVirtualPad::Pad()) {
547  Float_t offset = fOffsetX1->GetNumber() * (TVirtualPad::Pad()->GetUxmax() - TVirtualPad::Pad()->GetUxmin());
548  fLevel->GetLabel(1).SetX(fLevel->GetX2() + offset);
549  Update();
550  }
551 }
552 
553 
555 {
556  // Slot connected to the Label1 offset in Y axis.
557  if (TVirtualPad::Pad()) {
558  Float_t offset = fOffsetY1->GetNumber() * (TVirtualPad::Pad()->GetUymax() - TVirtualPad::Pad()->GetUymin());
559  fLevel->GetLabel(1).SetY(fLevel->GetY1() + offset);
560  Update();
561  }
562 }
563 
564 
566 {
567  // Slot connected to the Label2 offset in X axis.
568  if (TVirtualPad::Pad()) {
569  Float_t offset = fOffsetX2->GetNumber() * (TVirtualPad::Pad()->GetUxmax() - TVirtualPad::Pad()->GetUxmin());
570  fLevel->GetLabel(2).SetX(fLevel->GetX2() + offset);
571  Update();
572  }
573 }
574 
575 
577 {
578  // Slot connected to the Label2 offset in Y axis.
579  if (TVirtualPad::Pad()) {
580  Float_t offset = fOffsetY2->GetNumber() * (TVirtualPad::Pad()->GetUymax() - TVirtualPad::Pad()->GetUymin());
581  fLevel->GetLabel(2).SetY(fLevel->GetY1() + offset);
582  Update();
583  }
584 }
585 
586 
588 {
589  // Slot connected to the Label3 offset in X axis.
590  if (TVirtualPad::Pad()) {
591  Float_t offset = fOffsetX3->GetNumber() * (TVirtualPad::Pad()->GetUxmax() - TVirtualPad::Pad()->GetUxmin());
592  fLevel->GetLabel(3).SetX(fLevel->GetX1() + offset);
593  Update();
594  }
595 }
596 
597 
599 {
600  // Slot connected to the Label3 offset in Y axis.
601  if (TVirtualPad::Pad()) {
602  Float_t offset = fOffsetY3->GetNumber() * (TVirtualPad::Pad()->GetUymax() - TVirtualPad::Pad()->GetUymin());
603  fLevel->GetLabel(3).SetY(fLevel->GetY1() + offset);
604  Update();
605  }
606 }
virtual ~LevelEditor()
TGNumberEntry * fOffsetX0
Definition: LevelEditor.h:69
TGNumberEntry * fOffsetX1
Definition: LevelEditor.h:71
virtual void DoOffsetY0()
Level GUI Editor : The goal of the level editor is to change graphical attributes for a level...
Definition: LevelEditor.h:54
virtual void DoOffsetX3()
TGColorSelect * fColorSelect3
Definition: LevelEditor.h:62
TGNumberEntry * fOffsetY3
Definition: LevelEditor.h:76
TGNumberEntry * fOffsetX2
Definition: LevelEditor.h:73
TGColorSelect * fColorSelect1
Definition: LevelEditor.h:60
virtual void ConnectSignals2Slots()
virtual void DoOffsetY3()
TGNumberEntry * fOffsetY2
Definition: LevelEditor.h:74
TGTextEntry * fTextEntry3
Definition: LevelEditor.h:67
TGNumberEntry * fOffsetX3
Definition: LevelEditor.h:75
TGTextEntry * fTextEntry2
Definition: LevelEditor.h:66
virtual void DoTextEntry3(const Char_t *name="")
virtual void DoOffsetY2()
Level * fLevel
Definition: LevelEditor.h:57
virtual void DoOffsetX2()
virtual TLatex & GetLabel(Int_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:251
TGColorSelect * fColorSelect2
Definition: LevelEditor.h:61
TGTextEntry * fTextEntry1
Definition: LevelEditor.h:65
virtual void DoTextColor0(Pixel_t color)
TGNumberEntry * fOffsetY1
Definition: LevelEditor.h:72
LevelEditor(const TGWindow *p=0)
virtual void DoOffsetX0()
header file for a Level GUI Editor
ClassImp(LevelEditor) enum ELineWid
Definition: LevelEditor.cpp:59
virtual void DoTextColor2(Pixel_t color)
TGTextEntry * fTextEntry0
Definition: LevelEditor.h:64
virtual void DoTextEntry1(const Char_t *name="")
virtual void DoOffsetX1()
virtual void DoTextEntry0(const Char_t *name="")
virtual void DoTextColor1(Pixel_t color)
virtual void DoTextColor3(Pixel_t color)
TGColorSelect * fColorSelect0
Definition: LevelEditor.h:59
virtual void DoOffsetY1()
virtual void SetModel(TObject *obj)
to connect the current Level to the Editor (for ROOTVERSION > 5.12)
virtual void DoTextEntry2(const Char_t *name="")
TGNumberEntry * fOffsetY0
Definition: LevelEditor.h:70
Base class describing a general level.
Definition: Level.h:53