00001 #include "qseaveragerrole.h"
00002
00003
00004 #include "qsescan.h"
00005 #include "qsecolumn.h"
00006
00007 #include <QRegExp>
00008
00009 QseAveragerRole::QseAveragerRole(QObject *parent)
00010 : QObject(parent),
00011 m_Averager(NULL),
00012 m_ScanPattern("*exafsscan*", Qt::CaseInsensitive, QRegExp::Wildcard),
00013 m_EnergyPattern("energy", Qt::CaseInsensitive, QRegExp::Wildcard),
00014 m_DetectorPattern("", Qt::CaseInsensitive, QRegExp::Wildcard),
00015 m_NormalizationPattern("", Qt::CaseInsensitive, QRegExp::Wildcard),
00016 m_SecondsPattern("", Qt::CaseInsensitive, QRegExp::Wildcard),
00017 m_MinScanRowCount(""),
00018 m_MaxScanRowCount(""),
00019 m_InputEnergyUnits(1),
00020 m_OutputEnergyUnits(1)
00021 {}
00022
00023 QseAveragerRole::~QseAveragerRole()
00024 {}
00025
00026 int QseAveragerRole::matchesScan(const QseScan *s)
00027 {
00028 if (s) {
00029 QseScan::QseScanRole r = s->scanRole();
00030
00031 bool ok1, ok2;
00032
00033 double minVal = minScanRowCount().toDouble(&ok1);
00034 double maxVal = maxScanRowCount().toDouble(&ok2);
00035
00036 if (ok1 || ok2) {
00037 int nrows = s->maxRowCount();
00038
00039 if (ok1 && (nrows < minVal)) {
00040 return FALSE;
00041 }
00042
00043 if (ok2 && (nrows > maxVal)) {
00044 return FALSE;
00045 }
00046 }
00047
00048 if (r == QseScan::UnspecifiedRole) {
00049 return m_ScanPattern.exactMatch(s->scanCommand() );
00050 } else {
00051 return r == QseScan::UsedRole;
00052 }
00053 } else {
00054 return FALSE;
00055 }
00056 }
00057
00058 int QseAveragerRole::matchesEnergyColumn(const QseColumn *c)
00059 {
00060 if (c) {
00061 QseColumn::QseColumnRole r = c->columnRole();
00062
00063 if (r == QseColumn::UnspecifiedRole) {
00064 return m_EnergyPattern.exactMatch(c->name());
00065 } else {
00066 return r == QseColumn::EnergyRole;
00067 }
00068 } else {
00069 return FALSE;
00070 }
00071 }
00072
00073 int QseAveragerRole::matchesDetectorColumn(const QseColumn *c)
00074 {
00075 if (c) {
00076 QseColumn::QseColumnRole r = c->columnRole();
00077
00078 if (r == QseColumn::UnspecifiedRole) {
00079 return m_DetectorPattern.exactMatch(c->name());
00080 } else {
00081 return r == QseColumn::DetectorRole;
00082 }
00083 } else {
00084 return FALSE;
00085 }
00086 }
00087
00088 int QseAveragerRole::matchesNormalizationColumn(const QseColumn *c)
00089 {
00090 if (c) {
00091 QseColumn::QseColumnRole r = c->columnRole();
00092
00093 if (r == QseColumn::UnspecifiedRole) {
00094 return m_NormalizationPattern.exactMatch(c->name());
00095 } else {
00096 return r == QseColumn::NormalizationRole;
00097 }
00098 } else {
00099 return FALSE;
00100 }
00101 }
00102
00103 int QseAveragerRole::matchesSecondsColumn(const QseColumn *c)
00104 {
00105 if (c) {
00106 QseColumn::QseColumnRole r = c->columnRole();
00107
00108 if (r == QseColumn::UnspecifiedRole) {
00109 return m_SecondsPattern.exactMatch(c->name());
00110 } else {
00111 return r == QseColumn::SecondsRole;
00112 }
00113 } else {
00114 return FALSE;
00115 }
00116 }
00117
00118 QString QseAveragerRole::scanPattern()
00119 {
00120 return m_ScanPattern.pattern();
00121 }
00122
00123 void QseAveragerRole::setScanPattern(const QString &pattern)
00124 {
00125 if (m_ScanPattern.pattern() != pattern) {
00126 m_ScanPattern.setPattern(pattern);
00127
00128 emit changed();
00129 }
00130 }
00131
00132 QString QseAveragerRole::energyPattern()
00133 {
00134 return m_EnergyPattern.pattern();
00135 }
00136
00137 void QseAveragerRole::setEnergyPattern(const QString &pattern)
00138 {
00139 if (m_EnergyPattern.pattern() != pattern) {
00140 m_EnergyPattern.setPattern(pattern);
00141
00142 emit changed();
00143 }
00144 }
00145
00146 QString QseAveragerRole::detectorPattern()
00147 {
00148 return m_DetectorPattern.pattern();
00149 }
00150
00151 void QseAveragerRole::setDetectorPattern(const QString &pattern)
00152 {
00153 if (m_DetectorPattern.pattern() != pattern) {
00154 m_DetectorPattern.setPattern(pattern);
00155
00156 emit changed();
00157 }
00158 }
00159
00160 QString QseAveragerRole::normalizationPattern()
00161 {
00162 return m_NormalizationPattern.pattern();
00163 }
00164
00165 void QseAveragerRole::setNormalizationPattern(const QString &pattern)
00166 {
00167 if (m_NormalizationPattern.pattern() != pattern) {
00168 m_NormalizationPattern.setPattern(pattern);
00169
00170 emit changed();
00171 }
00172 }
00173
00174 QString QseAveragerRole::secondsPattern()
00175 {
00176 return m_SecondsPattern.pattern();
00177 }
00178
00179 void QseAveragerRole::setSecondsPattern(const QString &pattern)
00180 {
00181 if (m_SecondsPattern.pattern() != pattern) {
00182 m_SecondsPattern.setPattern(pattern);
00183
00184 emit changed();
00185 }
00186 }
00187
00188 QString QseAveragerRole::minScanRowCount()
00189 {
00190 return m_MinScanRowCount;
00191 }
00192
00193 void QseAveragerRole::setMinScanRowCount(const QString &ct)
00194 {
00195 if (m_MinScanRowCount != ct) {
00196 m_MinScanRowCount = ct;
00197
00198 emit changed();
00199 }
00200 }
00201
00202 QString QseAveragerRole::maxScanRowCount()
00203 {
00204 return m_MaxScanRowCount;
00205 }
00206
00207 void QseAveragerRole::setMaxScanRowCount(const QString &ct)
00208 {
00209 if (m_MaxScanRowCount != ct) {
00210 m_MaxScanRowCount = ct;
00211
00212 emit changed();
00213 }
00214 }
00215
00216 int QseAveragerRole::inputEnergyUnits()
00217 {
00218 return m_InputEnergyUnits;
00219 }
00220
00221 void QseAveragerRole::setInputEnergyUnits(int n)
00222 {
00223 if (m_InputEnergyUnits != n) {
00224 m_InputEnergyUnits = n;
00225
00226 emit changed();
00227 }
00228 }
00229
00230 int QseAveragerRole::outputEnergyUnits()
00231 {
00232 return m_OutputEnergyUnits;
00233 }
00234
00235 void QseAveragerRole::setOutputEnergyUnits(int n)
00236 {
00237 if (m_OutputEnergyUnits != n) {
00238 m_OutputEnergyUnits = n;
00239
00240 emit changed();
00241 }
00242 }
00243
00244 double QseAveragerRole::energyScalingRatio()
00245 {
00246 if (m_InputEnergyUnits == m_OutputEnergyUnits) {
00247 return 1.0;
00248 } else if (m_InputEnergyUnits == 0 && m_OutputEnergyUnits == 1) {
00249 return 0.001;
00250 } else if (m_InputEnergyUnits == 1 && m_OutputEnergyUnits == 0) {
00251 return 1000.0;
00252 } else {
00253 return 1;
00254 }
00255 }
00256
00257 bool QseAveragerRole::scanRegexp()
00258 {
00259 return m_ScanPattern.patternSyntax() == QRegExp::RegExp;
00260 }
00261
00262 bool QseAveragerRole::energyRegexp()
00263 {
00264 return m_EnergyPattern.patternSyntax() == QRegExp::RegExp;
00265 }
00266
00267 bool QseAveragerRole::detectorRegexp()
00268 {
00269 return m_DetectorPattern.patternSyntax() == QRegExp::RegExp;
00270 }
00271
00272 bool QseAveragerRole::normalizationRegexp()
00273 {
00274 return m_NormalizationPattern.patternSyntax() == QRegExp::RegExp;
00275 }
00276
00277 bool QseAveragerRole::secondsRegexp()
00278 {
00279 return m_SecondsPattern.patternSyntax() == QRegExp::RegExp;
00280 }
00281
00282 void QseAveragerRole::setScanRegexp(bool re)
00283 {
00284 QRegExp::PatternSyntax n = (re ? QRegExp::RegExp : QRegExp::Wildcard);
00285
00286 if (m_ScanPattern.patternSyntax() != n) {
00287 m_ScanPattern.setPatternSyntax(n);
00288 emit changed();
00289 }
00290 }
00291
00292 void QseAveragerRole::setEnergyRegexp(bool re)
00293 {
00294 QRegExp::PatternSyntax n = (re ? QRegExp::RegExp : QRegExp::Wildcard);
00295
00296 if (m_EnergyPattern.patternSyntax() != n) {
00297 m_EnergyPattern.setPatternSyntax(n);
00298 emit changed();
00299 }
00300 }
00301
00302 void QseAveragerRole::setDetectorRegexp(bool re)
00303 {
00304 QRegExp::PatternSyntax n = (re ? QRegExp::RegExp : QRegExp::Wildcard);
00305
00306 if (m_DetectorPattern.patternSyntax() != n) {
00307 m_DetectorPattern.setPatternSyntax(n);
00308 emit changed();
00309 }
00310 }
00311
00312 void QseAveragerRole::setNormalizationRegexp(bool re)
00313 {
00314 QRegExp::PatternSyntax n = (re ? QRegExp::RegExp : QRegExp::Wildcard);
00315
00316 if (m_NormalizationPattern.patternSyntax() != n) {
00317 m_NormalizationPattern.setPatternSyntax(n);
00318 emit changed();
00319 }
00320 }
00321
00322 void QseAveragerRole::setSecondsRegexp(bool re)
00323 {
00324 QRegExp::PatternSyntax n = (re ? QRegExp::RegExp : QRegExp::Wildcard);
00325
00326 if (m_SecondsPattern.patternSyntax() != n) {
00327 m_SecondsPattern.setPatternSyntax(n);
00328 emit changed();
00329 }
00330 }
00331
00332 ColoredTableItem *QseAveragerRole::styledScanItem(QseScan *scan)
00333 {
00334 bool override = false;
00335
00336 if (scan -> scanRole() != QseScan::UnspecifiedRole) {
00337 override = true;
00338 }
00339
00340 return NULL;
00341
00342
00343
00344
00345
00346 }
00347
00348 ColoredTableItem *QseAveragerRole::styledColumnItem(QseColumn *col)
00349 {
00350 bool override = false;
00351
00352 if (col -> columnRole() != QseColumn::UnspecifiedRole) {
00353 override = true;
00354 }
00355
00356 return NULL;
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368 }
00369