DataObjectPtr PSD::makeDuplicate() const { PSDPtr powerspectrum = store()->createObject<PSD>(); Q_ASSERT(powerspectrum); powerspectrum->writeLock(); powerspectrum->setVector(_inputVectors[INVECTOR]); powerspectrum->setFrequency(_Frequency); powerspectrum->setAverage(_Average); powerspectrum->setLength(_averageLength); powerspectrum->setApodize(_Apodize); powerspectrum->setRemoveMean(_RemoveMean); powerspectrum->setVectorUnits(_vectorUnits); powerspectrum->setRateUnits(_rateUnits); powerspectrum->setApodizeFxn(_apodizeFxn); powerspectrum->setGaussianSigma(_gaussianSigma); powerspectrum->setOutput(_Output); powerspectrum->setInterpolateHoles(_interpolateHoles); if (descriptiveNameIsManual()) { powerspectrum->setDescriptiveName(descriptiveName()); } powerspectrum->registerChange(); powerspectrum->unlock(); return DataObjectPtr(powerspectrum); }
ObjectPtr PowerSpectrumDialog::createNewDataObject() const { Q_ASSERT(_document && _document->objectStore()); ObjectTag tag = _document->objectStore()->suggestObjectTag<PSD>(tagString(), ObjectTag::globalTagContext); PSDPtr powerspectrum = _document->objectStore()->createObject<PSD>(tag); Q_ASSERT(powerspectrum); powerspectrum->setVector(_powerSpectrumTab->vector()); powerspectrum->setFreq(_powerSpectrumTab->FFTOptionsWidget()->sampleRate()); powerspectrum->setAverage(_powerSpectrumTab->FFTOptionsWidget()->interleavedAverage()); powerspectrum->setLen(_powerSpectrumTab->FFTOptionsWidget()->FFTLength()); powerspectrum->setApodize(_powerSpectrumTab->FFTOptionsWidget()->apodize()); powerspectrum->setRemoveMean(_powerSpectrumTab->FFTOptionsWidget()->removeMean()); powerspectrum->setVUnits(_powerSpectrumTab->FFTOptionsWidget()->vectorUnits()); powerspectrum->setRUnits(_powerSpectrumTab->FFTOptionsWidget()->rateUnits()); powerspectrum->setApodizeFxn(_powerSpectrumTab->FFTOptionsWidget()->apodizeFunction()); powerspectrum->setGaussianSigma(_powerSpectrumTab->FFTOptionsWidget()->sigma()); powerspectrum->setOutput(_powerSpectrumTab->FFTOptionsWidget()->output()); powerspectrum->setInterpolateHoles(_powerSpectrumTab->FFTOptionsWidget()->interpolateOverHoles()); powerspectrum->writeLock(); powerspectrum->update(0); powerspectrum->unlock(); //FIXME this should be a command... //FIXME need some smart placement... tag = _document->objectStore()->suggestObjectTag<Curve>(powerspectrum->tag().tagString(), ObjectTag::globalTagContext); CurvePtr curve = _document->objectStore()->createObject<Curve>(tag); Q_ASSERT(curve); curve->setXVector(powerspectrum->vX()); curve->setYVector(powerspectrum->vY()); curve->setColor(_powerSpectrumTab->curveAppearance()->color()); curve->setHasPoints(_powerSpectrumTab->curveAppearance()->showPoints()); curve->setHasLines(_powerSpectrumTab->curveAppearance()->showLines()); curve->setHasBars(_powerSpectrumTab->curveAppearance()->showBars()); curve->setLineWidth(_powerSpectrumTab->curveAppearance()->lineWidth()); curve->setLineStyle(_powerSpectrumTab->curveAppearance()->lineStyle()); curve->pointType = _powerSpectrumTab->curveAppearance()->pointType(); curve->setPointDensity(_powerSpectrumTab->curveAppearance()->pointDensity()); curve->setBarStyle(_powerSpectrumTab->curveAppearance()->barStyle()); curve->writeLock(); curve->update(0); curve->unlock(); PlotItem *plotItem = 0; switch (_powerSpectrumTab->curvePlacement()->place()) { case CurvePlacement::NoPlot: break; case CurvePlacement::ExistingPlot: { plotItem = static_cast<PlotItem*>(_powerSpectrumTab->curvePlacement()->existingPlot()); break; } case CurvePlacement::NewPlot: { CreatePlotForCurve *cmd = new CreatePlotForCurve( _powerSpectrumTab->curvePlacement()->createLayout(), _powerSpectrumTab->curvePlacement()->appendToLayout()); cmd->createItem(); plotItem = static_cast<PlotItem*>(cmd->item()); break; } default: break; } PlotRenderItem *renderItem = plotItem->renderItem(PlotRenderItem::Cartesian); renderItem->addRelation(kst_cast<Relation>(curve)); plotItem->update(); return ObjectPtr(powerspectrum.data()); }