]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveBase/AliEveMacroEditor.cxx
AliEveEventManager
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveMacroEditor.cxx
1 // @(#)root/eve:$Id$
2 // Author: Matevz Tadel 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #include "AliEveMacroEditor.h"
11 #include "AliEveMacro.h"
12
13 #include "TVirtualPad.h"
14
15 // Cleanup these includes:
16 #include "TGLabel.h"
17 #include "TGNumberEntry.h"
18 #include "TGColorSelect.h"
19 #include "TGTextEntry.h"
20
21 #include "TGComboBox.h"
22
23 //______________________________________________________________________________
24 // GUI editor for AliEveMacro.
25 //
26
27 ClassImp(AliEveMacroEditor)
28
29 //______________________________________________________________________________
30 AliEveMacroEditor::AliEveMacroEditor(const TGWindow *p, Int_t width, Int_t height,
31                                      UInt_t options, Pixel_t back) :
32   TGedFrame(p, width, height, options | kVerticalFrame, back),
33   fM(0),
34   fSources(0),
35   fTags(0),
36   fMacro(0),
37   fFunc(0),
38   fArgs(0),
39   fActive(0)
40 {
41   // Constructor.
42
43   MakeTitle("AliEveMacro");
44
45   TGHorizontalFrame *f = 0;
46   //TGLabel           *l = 0;
47   Int_t labelW = 48;
48   {
49     f = MkHFrame();
50     MkLabel(f, "Active: ", labelW);
51
52     fActive = new TGCheckButton(f);
53     f->AddFrame(fActive); // new TGLayoutHints());
54     fActive->Connect("Clicked()", "AliEveMacroEditor", this,
55                      "DoActive()");
56
57     MkLabel(f, "Source: ", 56);
58     fSources = new TGComboBox(f);
59     f->AddFrame(fSources); // new TGLayoutHints());
60     fSources->AddEntry("None",      AliEveMacro::kNone);
61     fSources->AddEntry("RunLoader", AliEveMacro::kRunLoader);
62     fSources->AddEntry("ESD",       AliEveMacro::kESD);
63     fSources->AddEntry("ESDfriend", AliEveMacro::kESDfriend);
64     fSources->AddEntry("RawReader", AliEveMacro::kRawReader);
65     {
66       TGListBox* lb = fSources->GetListBox();
67       lb->Resize(lb->GetWidth(), 5*16);
68     }
69     fSources->Resize(92, 20);
70     fSources->Connect("Selected(Int_t)", "AliEveMacroEditor", this,
71                       "DoSources(Int_t)");
72
73     MkLabel(f, "Tags: ", 40);
74     fTags = new TGTextEntry(f);
75     f->AddFrame(fTags, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
76     fTags->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
77                     "DoTags()");
78   }
79   {
80     f = MkHFrame();
81     MkLabel(f, "Macro: ", labelW);
82     fMacro = new TGTextEntry(f);
83     f->AddFrame(fMacro, new TGLayoutHints(kLHintsNormal));//|kLHintsExpandX));
84     fMacro->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
85                     "DoMacro()");
86
87     MkLabel(f, "Func: ", labelW);
88     fFunc = new TGTextEntry(f);
89     f->AddFrame(fFunc, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
90     fFunc->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
91                    "DoFunc()");
92   }
93   {
94     f = MkHFrame();
95     MkLabel(f, "Args: ", labelW);
96     fArgs = new TGTextEntry(f);
97     f->AddFrame(fArgs, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
98     fArgs->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
99                    "DoArgs()");
100   }
101 }
102
103 /******************************************************************************/
104
105 //______________________________________________________________________________
106 void AliEveMacroEditor::SetModel(TObject* obj)
107 {
108   // Set model object.
109
110   fM = dynamic_cast<AliEveMacro*>(obj);
111
112   fSources->Select  (fM->GetSources(), kFALSE);
113   // TGTextEntry emits a signal no matter what ...
114   TQObject::BlockAllSignals(kTRUE);
115   fTags   ->SetText (fM->GetTags());
116   fMacro  ->SetText (fM->GetMacro());
117   fFunc   ->SetText (fM->GetFunc());
118   fArgs   ->SetText (fM->GetArgs());
119   TQObject::BlockAllSignals(kFALSE);
120   fActive ->SetState(fM->fActive ? kButtonDown : kButtonUp);
121 }
122
123 //______________________________________________________________________________
124 void AliEveMacroEditor::DoSources(Int_t v)
125 {
126    // Slot for Sources.
127
128    fM->SetSources(v);
129    Update();
130 }
131
132 //______________________________________________________________________________
133 void AliEveMacroEditor::DoTags()
134 {
135    // Slot for Tags.
136
137    fM->SetTags(fTags->GetText());
138    Update();
139 }
140
141 //______________________________________________________________________________
142 void AliEveMacroEditor::DoMacro()
143 {
144    // Slot for Macro.
145
146    fM->SetMacro(fMacro->GetText());
147    Update();
148 }
149
150 //______________________________________________________________________________
151 void AliEveMacroEditor::DoFunc()
152 {
153    // Slot for Func.
154
155    fM->SetFunc(fFunc->GetText());
156    Update();
157 }
158 //______________________________________________________________________________
159 void AliEveMacroEditor::DoArgs()
160 {
161    // Slot for Args.
162
163    fM->SetArgs(fArgs->GetText());
164    Update();
165 }
166
167 //______________________________________________________________________________
168 void AliEveMacroEditor::DoActive()
169 {
170    // Slot for Active.
171
172    fM->SetActive(fActive->IsOn());
173    Update();
174 }
175
176 /******************************************************************************/
177
178 TGHorizontalFrame* AliEveMacroEditor::MkHFrame(TGCompositeFrame* p)
179 {
180   // Make standard horizontal frame.
181
182   if (p == 0)
183     p = this;
184   TGHorizontalFrame* f = new TGHorizontalFrame(p);
185   p->AddFrame(f, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
186   return f;
187 }
188
189 TGLabel* AliEveMacroEditor::MkLabel(TGCompositeFrame* p, const char* txt, Int_t width,
190                                     Int_t lo, Int_t ro, Int_t to, Int_t bo)
191 {
192   // Make standard label.
193
194   TGLabel *l = new TGLabel(p, txt);
195   p->AddFrame(l, new TGLayoutHints(kLHintsNormal, lo,ro,to,bo));
196   l->SetTextJustify(kTextRight);
197   l->SetWidth(width);
198   l->ChangeOptions(l->GetOptions() | kFixedWidth);
199   return l;
200 }