ObjectPtr FilterFitDialog::createNewDataObject() { BasicPluginPtr dataObject = kst_cast<BasicPlugin>(DataObject::createPlugin(_filterFitTab->pluginName(), _document->objectStore(), _filterFitTab->configWidget())); Q_ASSERT(dataObject); if (!dataObject->isValid()) { _document->objectStore()->removeObject(dataObject); QString msg(tr("Unable to create Plugin Object using provided parameters.\n\n")); msg += dataObject->errorMessage(); QMessageBox::warning(this, tr("Kst"), msg); return 0; } if(editMode()==New) { PlotItem *plotItem = 0; switch (_filterFitTab->curvePlacement()->place()) { case CurvePlacement::NoPlot: break; case CurvePlacement::ExistingPlot: { plotItem = static_cast<PlotItem*>(_filterFitTab->curvePlacement()->existingPlot()); break; } case CurvePlacement::NewPlotNewTab: _document->createView(); // fall through to case NewPlot. case CurvePlacement::NewPlot: { CreatePlotForCurve *cmd = new CreatePlotForCurve(); cmd->createItem(); plotItem = static_cast<PlotItem*>(cmd->item()); if (_filterFitTab->curvePlacement()->scaleFonts()) { plotItem->view()->resetPlotFontSizes(plotItem); plotItem->view()->configurePlotFontDefaults(plotItem); // copy plots already in window } plotItem->view()->appendToLayout(_filterFitTab->curvePlacement()->layout(), plotItem, _filterFitTab->curvePlacement()->gridColumns()); if (_filterFitTab->curvePlacement()->layout() == CurvePlacement::Custom) { plotItem->createCustomLayout(_filterFitTab->curvePlacement()->gridColumns()); } break; } default: break; } if (plotItem) { CurvePtr curve = _document->objectStore()->createObject<Curve>(); Q_ASSERT(curve); if (!_vectorX) { setVectorX(dataObject->inputVectors().value(dataObject->inputVectorList().first())); } Q_ASSERT(_vectorX); curve->setXVector(_vectorX); VectorPtr yVector = dataObject->outputVectors().value(dataObject->outputVectorList().first()); Q_ASSERT(yVector); curve->setYVector(yVector); curve->setColor(_filterFitTab->curveAppearance()->color()); curve->setHasPoints(_filterFitTab->curveAppearance()->showPoints()); curve->setHasLines(_filterFitTab->curveAppearance()->showLines()); curve->setHasBars(_filterFitTab->curveAppearance()->showBars()); curve->setLineWidth(_filterFitTab->curveAppearance()->lineWidth()); curve->setPointSize(_filterFitTab->curveAppearance()->pointSize()); curve->setLineStyle(_filterFitTab->curveAppearance()->lineStyle()); curve->setPointType(_filterFitTab->curveAppearance()->pointType()); curve->setPointDensity(_filterFitTab->curveAppearance()->pointDensity()); curve->setBarFillColor(_filterFitTab->curveAppearance()->barFillColor()); curve->writeLock(); curve->registerChange(); curve->unlock(); _filterFitTab->curveAppearance()->setWidgetDefaults(); PlotRenderItem *renderItem = plotItem->renderItem(PlotRenderItem::Cartesian); renderItem->addRelation(kst_cast<Relation>(curve)); dataObject->writeLock(); dataObject->internalUpdate(); dataObject->unlock(); if (dataObject->hasParameterVector()) { CreateLabelCommand *cmd = new CreateLabelCommand; QString *tmpstring = new QString(dataObject->parameterVectorToString()); cmd->createItem(tmpstring); } plotItem->update(); } } _filterFitTab->configWidget()->save(); return dataObject; }