[Kst] extragear/graphics/kst/src/plugins/crossspectrum
Barth Netterfield
netterfield at astro.utoronto.ca
Wed Mar 28 17:44:33 CEST 2007
SVN commit 647523 by netterfield:
BUG: 142702
Fixes default names, fixes the math, and fixes a possible dangling lock
in a corner case.
approved by George.
M +22 -4 crosspowerspectrum.cpp
M +7 -7 crossspectrumdialog_i.cpp
--- trunk/extragear/graphics/kst/src/plugins/crossspectrum/crosspowerspectrum.cpp #647522:647523
@@ -196,22 +196,40 @@
void CrossPowerSpectrum::setReal(const QString &name) {
+ QString tname;
+ if (name.isEmpty()) {
+ tname = i18n("the real part of a complex number", "real");
+ } else {
+ tname = name;
+ }
KstWriteLocker blockVectorUpdates(&KST::vectorList.lock());
- KstVectorPtr v = new KstVector(KstObjectTag(name, tag()), 0, this, false);
+ KstVectorPtr v = new KstVector(KstObjectTag(tname, tag()), 0, this, false);
_outputVectors.insert(REAL, v);
}
void CrossPowerSpectrum::setImaginary(const QString &name) {
+ QString tname;
+ if (name.isEmpty()) {
+ tname = i18n("the imaginary part of a complex number", "imaginary");
+ } else {
+ tname = name;
+ }
KstWriteLocker blockVectorUpdates(&KST::vectorList.lock());
- KstVectorPtr v = new KstVector(KstObjectTag(name, tag()), 0, this, false);
+ KstVectorPtr v = new KstVector(KstObjectTag(tname, tag()), 0, this, false);
_outputVectors.insert(IMAGINARY, v);
}
void CrossPowerSpectrum::setFrequency(const QString &name) {
+ QString tname;
+ if (name.isEmpty()) {
+ tname = i18n("frequency");
+ } else {
+ tname = name;
+ }
KstWriteLocker blockVectorUpdates(&KST::vectorList.lock());
- KstVectorPtr v = new KstVector(KstObjectTag(name, tag()), 0, this, false);
+ KstVectorPtr v = new KstVector(KstObjectTag(tname, tag()), 0, this, false);
_outputVectors.insert(FREQUENCY, v);
}
@@ -357,7 +375,7 @@
real->value()[0] += ( a[0]*b[0] );
real->value()[xps_len-1] += ( a[1]*b[1] );
for (i_samp=1; i_samp<xps_len-1; i_samp++) {
- real->value()[i_samp]+= ( a[i_samp*2] * b[i_samp*2] -
+ real->value()[i_samp]+= ( a[i_samp*2] * b[i_samp*2] +
a[i_samp*2+1] * b[i_samp*2+1] );
imaginary->value()[i_samp]+= ( -a[i_samp*2] * b[i_samp*2+1] +
a[i_samp*2+1] * b[i_samp*2] );
--- trunk/extragear/graphics/kst/src/plugins/crossspectrum/crossspectrumdialog_i.cpp #647522:647523
@@ -80,12 +80,6 @@
//called upon clicking 'ok' in 'new' mode
//return false if the specified objects can't be made, otherwise true
- //Need to create a new object rather than use the one in KstDataObject pluginList
- CrossPowerSpectrumPtr cps = kst_cast<CrossPowerSpectrum>(KstDataObject::createPlugin("Cross Power Spectrum"));
- Q_ASSERT(cps); //should never happen...
-
- cps->writeLock();
-
QString tagName = _tagName->text();
if (tagName != defaultTag && KstData::self()->dataTagNameNotUnique(tagName, true, this)) {
@@ -93,6 +87,12 @@
return false;
}
+ //Need to create a new object rather than use the one in KstDataObject pluginList
+ CrossPowerSpectrumPtr cps = kst_cast<CrossPowerSpectrum>(KstDataObject::createPlugin("Cross Power Spectrum"));
+ Q_ASSERT(cps); //should never happen...
+
+ cps->writeLock();
+
if (tagName == defaultTag) {
tagName = KST::suggestPluginName("crosspowerspectrum");
}
@@ -111,7 +111,7 @@
cps->setFrequency(_w->_frequency->text());
if (!cps || !cps->isValid()) {
- KMessageBox::sorry(this, i18n("There is an error in the linefit you entered."));
+ KMessageBox::sorry(this, i18n("There is an error in the crosspowerspectrum you entered."));
return false;
}
More information about the Kst
mailing list