void AssociationsDialog::changePlotAssociation(int curve, const QString& text) { DataCurve *c = dynamic_cast<DataCurve *>(graph->curve(curve)); //c_keys[curve]); if (!c) return; if (c->plotAssociation() == text) return; QStringList lst = text.split(",", QString::SkipEmptyParts); if (lst.count() == 1){ c->setTitle(lst[0]); if (graph->curveType(curve) == Graph::Box) dynamic_cast<BoxCurve*>(c)->loadData(); else if (graph->curveType(curve) == Graph::Pie) dynamic_cast<QwtPieCurve*>(c)->loadData(); } else if (lst.count() == 2){ c->setXColumnName(lst[0].remove("(X)")); c->setTitle(lst[1].remove("(Y)")); c->loadData(); } else if (lst.count() == 3){//curve with error bars QwtErrorPlotCurve *er = dynamic_cast<QwtErrorPlotCurve *>(c); QString xColName = lst[0].remove("(X)"); QString yColName = lst[1].remove("(Y)"); QString erColName = lst[2].remove("(xErr)").remove("(yErr)"); DataCurve *master_curve = graph->masterCurve(xColName, yColName); if (!master_curve) return; int type = QwtErrorPlotCurve::Vertical; if (text.contains("(xErr)")) type = QwtErrorPlotCurve::Horizontal; er->setDirection(type); er->setTitle(erColName); if (master_curve != er->masterCurve()) er->setMasterCurve(master_curve); else er->loadData(); } else if (lst.count() == 4) { VectorCurve *v = dynamic_cast<VectorCurve *>(c); v->setXColumnName(lst[0].remove("(X)")); v->setTitle(lst[1].remove("(Y)")); QString xEndCol = lst[2].remove("(X)").remove("(A)"); QString yEndCol = lst[3].remove("(Y)").remove("(M)"); if (v->vectorEndXAColName() != xEndCol || v->vectorEndYMColName() != yEndCol) v->setVectorEnd(xEndCol, yEndCol); else v->loadData(); } graph->notifyChanges(); }