void InterpolationDialog::interpolate() { QString curve = boxName->currentText(); QStringList curvesList = graph->analysableCurvesList(); if (!curvesList.contains(curve)){ QMessageBox::critical(this,tr("QtiPlot - Warning"), tr("The curve <b> %1 </b> doesn't exist anymore! Operation aborted!").arg(curve)); boxName->clear(); boxName->addItems(curvesList); return; } double from = boxStart->value(); double to = boxEnd->value(); if (from >= to){ QMessageBox::critical(this, tr("QtiPlot - Input error"), tr("Please enter x limits that satisfy: from < to!")); boxEnd->setFocus(); return; } Interpolation *i = new Interpolation((ApplicationWindow *)parent(), (QwtPlotCurve *)graph->curve(boxName->currentIndex()), from, to, boxMethod->currentIndex()); i->setOutputPoints(boxPoints->value()); i->setColor(boxColor->color()); i->run(); delete i; }
void BaselineDialog::createBaseline() { ApplicationWindow *app = (ApplicationWindow *)parent(); QPen pen = QPen(Qt::red); if (d_baseline){ pen = d_baseline->pen(); graph->removeCurve(d_baseline->title().text()); delete d_baseline; d_baseline = NULL; if (d_table){ d_table->askOnCloseEvent(false); app->closeWindow(d_table); d_table = NULL; } } disableBaselineTool(); if (btnAutomatic->isChecked()){ Interpolation *i = new Interpolation(app, graph, boxInputName->currentText(), boxInterpolationMethod->currentIndex()); i->setOutputPoints(boxPoints->value()); i->run(); delete i; d_baseline = graph->dataCurve(graph->curveCount() - 1); d_table = ((DataCurve *)d_baseline)->table(); } else if (btnEquation->isChecked()){ double start = graph->axisScaleDiv(QwtPlot::xBottom)->lowerBound(); double end = graph->axisScaleDiv(QwtPlot::xBottom)->upperBound(); DataCurve *c = graph->dataCurve(graph->curveIndex(boxInputName->currentText())); if (c){ start = c->minXValue(); end = c->maxXValue(); } d_baseline = graph->addFunction(QStringList() << boxEquation->text(), start, end, boxPoints->value(), "x", FunctionCurve::Normal, tr("Baseline")); } else if (btnDataset->isChecked()){ Table *t = app->table(boxTableName->currentText()); if (t){ int rows = t->numRows(); d_table = app->newTable(rows, 2); app->setWindowName(d_table, tr("Baseline")); app->hideWindow(d_table); int ycol = t->colIndex(boxColumnName->currentText()); int xcol = t->colX(ycol); for (int i = 0; i < rows; i++){ d_table->setText(i, 0, t->text(i, xcol)); d_table->setText(i, 1, t->text(i, ycol)); } d_baseline = graph->insertCurve(d_table, d_table->objectName() + "_2", Graph::Line, 0, -1); graph->setAutoScale(); } } if (d_baseline){ d_baseline->setPen(pen); graph->replot(); } }