30 ClassImp(TEveParamList);
35 TEveParamList::TEveParamList(
const char* n,
const char* t, Bool_t doColor) :
39 if (doColor) SetMainColorPtr(&fColor);
45 TEveParamList::FloatConfig_t TEveParamList::GetFloatParameter(
const TString& name)
47 static const TEveException eh(
"TEveParamList::GetFloatParameter ");
49 for (FloatConfigVec_ci itr = fFloatParameters.begin(); itr != fFloatParameters.end(); ++itr)
50 if (itr->fName.CompareTo(name)==0 )
return *itr;
51 Error(eh,
"parameter not found.");
52 return FloatConfig_t();
58 TEveParamList::IntConfig_t TEveParamList::GetIntParameter(
const TString& name)
60 static const TEveException eh(
"TEveParamList::GetIntParameter ");
62 for (IntConfigVec_ci itr = fIntParameters.begin(); itr != fIntParameters.end(); ++itr)
63 if (itr->fName.CompareTo(name) == 0)
return *itr;
64 Error(eh,
"parameter not found.");
71 Bool_t TEveParamList::GetBoolParameter(
const TString& name)
73 static const TEveException eh(
"TEveParamList::GetBoolParameter ");
75 for (BoolConfigVec_ci itr = fBoolParameters.begin(); itr != fBoolParameters.end(); ++itr)
76 if ( itr->fName.CompareTo(name)==0 )
return itr->fValue;
77 Error(eh,
"parameter not found.");
84 void TEveParamList::ParamChanged(
const char* name)
86 Emit(
"ParamChanged(char*)", name);
104 ClassImp(TEveParamListEditor);
109 TEveParamListEditor::TEveParamListEditor(
const TGWindow *p, Int_t width, Int_t height,
110 UInt_t options, Pixel_t back) :
111 TGedFrame(p, width, height, options | kVerticalFrame, back),
115 MakeTitle(
"TEveParamList");
121 void TEveParamListEditor::InitModel(TObject* obj)
123 fM =
dynamic_cast<TEveParamList*
>(obj);
126 fParamFrame->UnmapWindow();
127 RemoveFrame(fParamFrame);
128 fParamFrame->DestroyWindow();
131 fParamFrame =
new TGVerticalFrame(
this);
132 AddFrame(fParamFrame);
135 fIntParameters.clear();
136 for (UInt_t i = 0; i < fM->fIntParameters.size(); ++i)
138 TGCompositeFrame* frame =
new TGHorizontalFrame(fParamFrame);
141 TGNumberEntry* widget =
new TGNumberEntry
142 (frame, fM->fIntParameters[i].fValue,
145 TGNumberFormat::kNESInteger,
146 TGNumberFormat::kNEAAnyNumber,
147 TGNumberFormat::kNELLimitMinMax,
148 fM->fIntParameters[i].fMin,
149 fM->fIntParameters[i].fMax);
150 frame->AddFrame(widget,
new TGLayoutHints(kLHintsLeft|kLHintsCenterY, 2,8,2,2));
151 widget->Connect(
"ValueSet(Long_t)",
"TEveParamListEditor",
this,
"DoIntUpdate()");
152 fIntParameters.push_back(widget);
155 frame->AddFrame(
new TGLabel(frame,fM->fIntParameters[i].fName.Data()),
156 new TGLayoutHints(kLHintsLeft|kLHintsCenterY));
158 fParamFrame->AddFrame(frame,
new TGLayoutHints(kLHintsTop));
163 fFloatParameters.clear();
164 for (UInt_t i = 0; i < fM->fFloatParameters.size(); ++i)
166 TGCompositeFrame* frame =
new TGHorizontalFrame(fParamFrame);
169 TGNumberEntry* widget =
new TGNumberEntry
170 (frame, fM->fFloatParameters[i].fValue,
173 TGNumberFormat::kNESReal,
174 TGNumberFormat::kNEAAnyNumber,
175 TGNumberFormat::kNELLimitMinMax,
176 fM->fFloatParameters[i].fMin,
177 fM->fFloatParameters[i].fMax);
178 frame->AddFrame(widget,
new TGLayoutHints(kLHintsLeft|kLHintsCenterY, 2,8,2,2));
179 widget->Connect(
"ValueSet(Long_t)",
"TEveParamListEditor",
this,
"DoFloatUpdate()");
180 fFloatParameters.push_back( widget );
183 frame->AddFrame(
new TGLabel(frame,fM->fFloatParameters[i].fName.Data()),
184 new TGLayoutHints(kLHintsLeft|kLHintsCenterY) );
186 fParamFrame->AddFrame(frame,
new TGLayoutHints(kLHintsTop));
190 fBoolParameters.clear();
191 for (UInt_t i = 0; i < fM->fBoolParameters.size(); ++i)
193 TGCheckButton* widget =
new TGCheckButton(fParamFrame,
194 fM->fBoolParameters[i].fName.Data(),
196 widget->Connect(
"Clicked()",
"TEveParamListEditor",
this,
"DoBoolUpdate()");
197 fBoolParameters.push_back(widget);
199 fParamFrame->AddFrame(widget,
new TGLayoutHints(kLHintsTop,2,0,1,1));
207 void TEveParamListEditor::SetModel(TObject* obj)
211 for (UInt_t i = 0; i < fIntParameters.size(); ++i)
212 fIntParameters[i]->GetNumberEntry()->SetIntNumber(fM->fIntParameters[i].fValue);
214 for (UInt_t i = 0; i < fFloatParameters.size(); ++i)
215 fFloatParameters[i]->GetNumberEntry()->SetNumber(fM->fFloatParameters[i].fValue);
217 for (UInt_t i = 0; i < fBoolParameters.size(); ++i)
218 fBoolParameters[i]->SetState( fM->fBoolParameters[i].fValue ? kButtonDown : kButtonUp);
224 void TEveParamListEditor::DoIntUpdate()
226 TGNumberEntry *widget = (TGNumberEntry*) gTQSender;
227 Int_t
id = widget->WidgetId();
228 if (id < 0 || id >= (
int) fM->fIntParameters.size())
return;
229 fM->fIntParameters[id].fValue = widget->GetNumberEntry()->GetIntNumber();
231 fM->ParamChanged(fM->fIntParameters[
id].fName);
232 gTQSender = (
void*) widget;
238 void TEveParamListEditor::DoFloatUpdate()
240 TGNumberEntry *widget = (TGNumberEntry*) gTQSender;
241 Int_t
id = widget->WidgetId();
242 if (id < 0 || id >= (
int) fM->fFloatParameters.size())
return;
243 fM->fFloatParameters[id].fValue = widget->GetNumberEntry()->GetNumber();
245 fM->ParamChanged(fM->fFloatParameters[
id].fName);
246 gTQSender = (
void*) widget;
252 void TEveParamListEditor::DoBoolUpdate()
254 TGCheckButton *widget = (TGCheckButton*) gTQSender;
255 Int_t
id = widget->WidgetId();
256 if (id < 0 || id >= (
int) fM->fBoolParameters.size())
return;
257 fM->fBoolParameters[id].fValue = widget->IsOn();
259 fM->ParamChanged(fM->fBoolParameters[
id].fName);
260 gTQSender = (
void*) widget;