const KstCurveHintList* KstPlugin::curveHints() const { _curveHints->clear(); if (_plugin) { for (QValueList<Plugin::Data::CurveHint>::ConstIterator i = _plugin->data()._hints.begin(); i != _plugin->data()._hints.end(); ++i) { KstVectorPtr xv = _outputVectors[(*i).x]; KstVectorPtr yv = _outputVectors[(*i).y]; if (xv && yv) { _curveHints->append(new KstCurveHint((*i).name, xv->tagName(), yv->tagName())); } } } return KstDataObject::curveHints(); }
QString BinnedMap::zTag() const { KstVectorPtr v = Z(); if (v) { return v->tagName(); } return QString::null; }
QString CrossPowerSpectrum::realTag() const { KstVectorPtr v = real(); if (v) { return v->tagName(); } return QString::null; }
QString CrossPowerSpectrum::frequencyTag() const { KstVectorPtr v = frequency(); if (v) { return v->tagName(); } return QString::null; }
QString CrossPowerSpectrum::imaginaryTag() const { KstVectorPtr v = imaginary(); if (v) { return v->tagName(); } return QString::null; }
void EventMonitorEntry::replaceDependency(KstVectorPtr oldVector, KstVectorPtr newVector) { // replace all occurences of oldTag with newTag QString newExp = _event.replace("[" + oldVector->tagName() + "]", "[" + newVector->tagName() + "]"); // also replace all occurences of vector stats for the oldVector QHashIterator<QString, KstScalar*> scalarDictIter(oldVector->scalars()); while (scalarDictIter.hasNext()) { const QString oldTag = scalarDictIter.next().value()->tagName(); const QString newTag = newVector->scalars()[scalarDictIter.key()]->tagName(); newExp = newExp.replace("[" + oldTag + "]", "[" + newTag + "]"); } setEvent(newExp); setDirty(); // events have no _inputVectors }
KstCSD::KstCSD(const QString &in_tag, KstVectorPtr in_V, double in_freq, bool in_average, bool in_removeMean, bool in_apodize, ApodizeFunction in_apodizeFxn, int in_windowSize, int in_averageLength, double in_gaussianSigma, PSDType in_outputType, const QString &in_vectorUnits, const QString &in_rateUnits) : KstDataObject() { commonConstructor(in_tag, in_V, in_freq, in_average, in_removeMean, in_apodize, in_apodizeFxn, in_windowSize, in_averageLength, in_gaussianSigma, in_vectorUnits, in_rateUnits, in_outputType, in_V->tagName()); setDirty(); }
int KST::vectorToFile(KstVectorPtr v, QFile *f) { KstApp *app = KstApp::inst(); #define BSIZE 128 char buf[BSIZE]; v->readLock(); int vSize = v->length(); double *value = v->value(); register int modval; QString saving = i18n("Saving vector %1").arg(v->tagName()); modval = QMAX(vSize/100, 100); QString ltxt = "; " + v->tagName() + '\n'; f->writeBlock(ltxt.ascii(), ltxt.length()); ltxt.fill('-'); ltxt[0] = ';'; ltxt[1] = ' '; ltxt[ltxt.length() - 1] = '\n'; f->writeBlock(ltxt.ascii(), ltxt.length()); app->slotUpdateProgress(vSize, 0, QString::null); for (int i = 0; i < vSize; i++) { int l = snprintf(buf, BSIZE, "%.15g\n", value[i]); f->writeBlock(buf, l); if (i % modval == 0) { app->slotUpdateProgress(vSize, i, saving); } } v->readUnlock(); app->slotUpdateProgress(0, 0, QString::null); #undef BSIZE return 0; }
const QString& KstIfaceImpl::loadVector(const QString& file, const QString& field) { KstDataSourcePtr src; /* generate or find the kstfile */ KST::dataSourceList.lock().writeLock(); KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(file); if (it == KST::dataSourceList.end()) { src = KstDataSource::loadSource(file); if (!src || !src->isValid()) { KST::dataSourceList.lock().unlock(); return QString::null; } if (src->isEmpty()) { KST::dataSourceList.lock().unlock(); return QString::null; } KST::dataSourceList.append(src); } else { src = *it; } src->writeLock(); KST::dataSourceList.lock().unlock(); KST::vectorList.lock().readLock(); QString vname = "V" + QString::number(KST::vectorList.count() + 1); while (KstData::self()->vectorTagNameNotUnique(vname, false)) { vname = "V" + QString::number(KST::vectorList.count() + 1); } KST::vectorList.lock().unlock(); KstVectorPtr p = new KstRVector(src, field, vname, 0, -1, 0, false, false); KST::addVectorToList(p); src->unlock(); if (p) { _doc->forceUpdate(); _doc->setModified(); return p->tagName(); } return QString::null; }
void KstQuickPSDDialogI::apply(bool autolabel) { KstDataSourcePtr file; KstVectorPtr vx; KstRVectorPtr trv; KstPlot *plot; int i_v; QString v_name, c_name; bool x_is_new; KstPSDCurvePtr curve; double new_freq; int new_len; if (KST::plotList.count() < 1) { addPlot(); return; } if (SourceVector->isChecked()) { // set vx from existing vectors i_v = Vectors->currentItem(); KstReadLocker ml(&KST::vectorList.lock()); if (i_v >= (int)KST::vectorList.count()) { return; } vx = KST::vectorList[i_v]; } else { // set vx from data file specification KstReadLocker ml(&KST::dataSourceList.lock()); /* generate or find the kstfile */ KstDataSourceList::Iterator it = KST::dataSourceList.findFileName(FileName->url()); if (it == KST::dataSourceList.end()) { file = KstDataSource::loadSource(FileName->url()); if (!file || !file->isValid()) { KMessageBox::sorry(0L, i18n("The file could not be loaded.")); return; } if (file->frameCount() < 1) { KMessageBox::sorry(0L, i18n("The file does not contain data.")); return; } KST::dataSourceList.append(file); } else { file = *it; } KstRVectorList rvl = kstObjectSubList<KstVector,KstRVector>(KST::vectorList); x_is_new = true; /**** Build the XVector ***/ /* make sure there are no vectors with the current vectors props */ for (i_v = 0; unsigned(i_v) < rvl.count(); i_v++) { trv = rvl[i_v]; if ((trv->filename() == FileName->url()) && (trv->getField() == Field->text()) && (trv->reqStartFrame() == F0->value()) && (trv->reqNumFrames() == N->value()) && (trv->skip() == Skip->value()) && (trv->doSkip() == DoSkip->isChecked()) && (trv->doAve() == DoFilter->isChecked()) && (trv->readToEOF() == ReadToEnd->isChecked()) && (trv->countFromEOF() == CountFromEnd->isChecked())) { x_is_new = false; i_v = rvl.count(); vx = trv; } } if (x_is_new) { KST::vectorList.lock().readLock(); /* If not, Generate a unique vector name */ v_name = "V" + QString::number(KST::vectorList.count()+1)+"-" + Field->text(); while (KST::vectorList.findTag(v_name) != KST::vectorList.end()) { v_name += "'"; } KST::vectorList.lock().readUnlock(); KST::dataObjectList.lock().readLock(); while (KST::dataObjectList.findTag(v_name) != KST::dataObjectList.end()) { v_name += "'"; } KST::dataObjectList.lock().readUnlock(); if (!file->isValidField(Field->text())) { KMessageBox::sorry(0L, i18n("The requested field is not defined for the requested file.")); return; } /* generate and append the vector */ trv = new KstRVector(file, Field->text(), v_name, (CountFromEnd->isChecked() ? -1 : F0->value()), (ReadToEnd->isChecked() ? -1 : N->value()), Skip->value(), DoSkip->isChecked(), DoFilter->isChecked()); KST::addVectorToList(KstVectorPtr(trv)); vx = trv; } } /**** Build the PSD ***/ /* find new_freq */ new_freq = PSDSampRate->text().toDouble(); if (new_freq <= 0) { KMessageBox::sorry(0L, i18n("The sample rate must be greater than 0.")); return; } /* find new_len */ new_len = PSDFFTLen->text().toInt(); if (new_len < 2) { KMessageBox::sorry(0L, i18n("The FFT length must be greater than 2^2.")); return; } /* create the psd curve name */ KST::dataObjectList.lock().writeLock(); c_name = "PSD"+QString::number(KST::dataObjectList.count()+1) + "-" + vx->tagName(); while (KST::dataObjectList.findTag(c_name) != KST::dataObjectList.end()) { c_name+="'"; } KST::vectorList.lock().readLock(); while (KST::vectorList.findTag(c_name) != KST::vectorList.end()) { c_name+="'"; } KST::vectorList.lock().readUnlock(); /* create the psd curve */ curve = new KstPSDCurve(c_name, vx, new_freq, new_len, PSDVectorUnits->text(), PSDRateUnits->text(), _curveAppearance->color()); curve->setHasPoints(_curveAppearance->showPoints()); curve->setHasLines(_curveAppearance->showLines()); curve->setLineWidth(_curveAppearance->lineWidth()); curve->setLineStyle(_curveAppearance->lineStyle()); curve->Point.setType(_curveAppearance->pointType()); KST::dataObjectList.append(curve.data()); KST::dataObjectList.lock().writeUnlock(); /* assign curve to plot */ plot = KST::plotList.FindKstPlot(PlotList->currentText()); plot->addCurve(curve); if (autolabel) plot->GenerateDefaultLabels(); close(); emit docChanged(); update(); }
int KST::vectorToFile(KstVectorPtr v, QFile *f) { int rc = 0; #define BSIZE 128 char buf[BSIZE]; int _size = v->length(); double *_v = v->value(); register int modval; KProgressDialog *kpd = new KProgressDialog(0L, "vector save", i18n("Saving Vector"), i18n("Saving vector %1...").arg(v->tagName())); kpd->setAllowCancel(false); kpd->progressBar()->setTotalSteps(_size); kpd->show(); modval = QMAX(_size/100, 100); for (int i = 0; i < _size; i++) { int l = snprintf(buf, BSIZE, "%d %g\n", i, _v[i]); f->writeBlock(buf, l); if (i % 100 == 0) { kpd->progressBar()->setProgress(i); kapp->processEvents(); } } kpd->progressBar()->setProgress(_size); delete kpd; #undef BSIZE return rc; }
const QString& KstIfaceImpl::generateVector(const QString& name, double from, double to, int points) { KstVectorPtr v = new KstSVector(from, to, points, name); KST::addVectorToList(v); KstReadLocker rl(v); return v->tagName(); }
void KstBasicDialogI::fillFieldsForEdit() { KstBasicPluginPtr ptr = kst_cast<KstBasicPlugin>(_dp); if (!ptr) return; //shouldn't happen ptr->readLock(); _tagName->setText(ptr->tagName()); _legendText->setText(defaultTag); //FIXME? //Update the various widgets... //input vectors... QStringList iv = ptr->inputVectorList(); QStringList::ConstIterator ivI = iv.begin(); for (; ivI != iv.end(); ++ivI) { KstVectorPtr p = ptr->inputVector(*ivI); QString t = p ? p->tagName() : QString::null; if (VectorSelector *w = vector(*ivI)) { w->setSelection(t); } } //input scalars... QStringList is = ptr->inputScalarList(); QStringList::ConstIterator isI = is.begin(); for (; isI != is.end(); ++isI) { KstScalarPtr p = ptr->inputScalar(*isI); QString t = p ? p->tagName() : QString::null; if (ScalarSelector *w = scalar(*isI)) { w->setSelection(t); } } //input strings... QStringList istr = ptr->inputStringList(); QStringList::ConstIterator istrI = istr.begin(); for (; istrI != istr.end(); ++istrI) { KstStringPtr p = ptr->inputString(*istrI); QString t = p ? p->tagName() : QString::null; if (StringSelector *w = string(*istrI)) { w->setSelection(t); } } //output vectors... QStringList ov = ptr->outputVectorList(); QStringList::ConstIterator ovI = ov.begin(); for (; ovI != ov.end(); ++ovI) { KstVectorPtr p = ptr->outputVector(*ovI); QString t = p ? p->tagName() : QString::null; if (QLineEdit *w = output(*ovI)) { w->setText(t); w->setEnabled(false); } } //output scalars... QStringList os = ptr->outputScalarList(); QStringList::ConstIterator osI = os.begin(); for (; osI != os.end(); ++osI) { KstScalarPtr p = ptr->outputScalar(*osI); QString t = p ? p->tagName() : QString::null; if (QLineEdit *w = output(*osI)) { w->setText(t); w->setEnabled(false); } } //ouput strings... QStringList ostr = ptr->outputStringList(); QStringList::ConstIterator ostrI = ostr.begin(); for (; ostrI != ostr.end(); ++ostrI) { KstStringPtr p = ptr->outputString(*ostrI); QString t = p ? p->tagName() : QString::null; if (QLineEdit *w = output(*ostrI)) { w->setText(t); w->setEnabled(false); } } ptr->unlock(); adjustSize(); resize(minimumSizeHint()); setFixedHeight(height()); }