00001 // $Id: QFitParWidget.cpp 490 2009-11-04 12:30:14Z linev $ 00002 //----------------------------------------------------------------------- 00003 // The GSI Online Offline Object Oriented (Go4) Project 00004 // Experiment Data Processing at EE department, GSI 00005 //----------------------------------------------------------------------- 00006 // Copyright (C) 2000- GSI Helmholtzzentrum für Schwerionenforschung GmbH 00007 // Planckstr. 1, 64291 Darmstadt, Germany 00008 // Contact: http://go4.gsi.de 00009 //----------------------------------------------------------------------- 00010 // This software can be used under the license agreements as stated 00011 // in Go4License.txt file which is part of the distribution. 00012 //----------------------------------------------------------------------- 00013 00014 #include "QFitParWidget.h" 00015 00016 #include "QFitItem.h" 00017 #include "TGo4FitParameter.h" 00018 #include "TGo4FitParsList.h" 00019 00020 00021 QFitParWidget::QFitParWidget(QWidget *parent, const char* name) 00022 : QFitNamedWidget(parent, name) 00023 { 00024 setupUi(this); 00025 } 00026 00027 TGo4FitParameter* QFitParWidget::GetPar() { 00028 return dynamic_cast<TGo4FitParameter*> (GetObject()); 00029 } 00030 00031 void QFitParWidget::FillSpecificData() { 00032 QFitNamedWidget::FillSpecificData(); 00033 TGo4FitParameter* fxParameter = GetPar(); 00034 if (fxParameter==0) return; 00035 00036 ValueEdt->setText(QString::number(fxParameter->GetValue())); 00037 ErrorEdt->setText(QString::number(fxParameter->GetError())); 00038 FixedChk->setChecked(fxParameter->GetFixed()); 00039 00040 Double_t min, max; 00041 00042 bool b = fxParameter->GetRange(min,max); 00043 00044 RangeChk->setChecked(b); 00045 RangeMinEdt->setEnabled(b); 00046 RangeMaxEdt->setEnabled(b); 00047 00048 RangeMinEdt->setText(QString::number(min)); 00049 RangeMaxEdt->setText(QString::number(max)); 00050 00051 Double_t eps; 00052 b = fxParameter->GetEpsilon(eps); 00053 EpsilonChk->setChecked(b); 00054 EpsilonEdt->setEnabled(b); 00055 EpsilonEdt->setText(QString::number(eps)); 00056 } 00057 00058 void QFitParWidget::ValueEdt_textChanged( const QString & value) 00059 { 00060 if(!fbFillWidget && (GetPar()!=0)) { 00061 bool ok; 00062 double zn = value.toDouble(&ok); 00063 if(ok) { 00064 GetPar()->SetValue(zn); 00065 SetWidgetItemText(true); 00066 } 00067 } 00068 } 00069 00070 void QFitParWidget::ErrorEdt_textChanged( const QString & value) 00071 { 00072 if(!fbFillWidget && (GetPar()!=0)) { 00073 bool ok; 00074 double zn = value.toDouble(&ok); 00075 if(ok) GetPar()->SetError(zn); 00076 } 00077 } 00078 00079 void QFitParWidget::RangeMinEdt_textChanged( const QString & value) 00080 { 00081 if(!fbFillWidget && (GetPar()!=0)) { 00082 bool ok; 00083 double zn = value.toDouble(&ok); 00084 if(ok) GetPar()->ChangeRangeMin(zn); 00085 } 00086 } 00087 00088 00089 void QFitParWidget::RangeMaxEdt_textChanged( const QString & value) 00090 { 00091 if(!fbFillWidget && (GetPar()!=0)) { 00092 bool ok; 00093 double zn = value.toDouble(&ok); 00094 if(ok) GetPar()->ChangeRangeMax(zn); 00095 } 00096 } 00097 00098 00099 void QFitParWidget::EpsilonEdt_textChanged( const QString & value) 00100 { 00101 if(!fbFillWidget && (GetPar()!=0)) { 00102 bool ok; 00103 double zn = value.toDouble(&ok); 00104 if(ok) GetPar()->ChangeEpsilon(zn); 00105 } 00106 00107 } 00108 00109 00110 void QFitParWidget::FixedChk_toggled( bool zn) 00111 { 00112 if(!fbFillWidget && (GetPar()!=0)) 00113 GetPar()->SetFixed(zn); 00114 } 00115 00116 00117 void QFitParWidget::RangeChk_toggled( bool zn) 00118 { 00119 if(!fbFillWidget && (GetPar()!=0)) { 00120 RangeMinEdt->setEnabled(zn); 00121 RangeMaxEdt->setEnabled(zn); 00122 GetPar()->SetRangeUse(zn); 00123 } 00124 } 00125 00126 void QFitParWidget::EpsilonChk_toggled( bool zn) 00127 { 00128 if(!fbFillWidget && (GetPar()!=0)) { 00129 EpsilonEdt->setEnabled(zn); 00130 GetPar()->SetEpsilonUse(zn); 00131 } 00132 }