UPlot: updated copy curve data to clipboard format to be more convenient for copy/paste directly in excel, also added curve names as header

This commit is contained in:
matlabbe
2019-06-26 16:59:44 -04:00
parent 49977b5475
commit 72e613fe28

View File

@@ -1427,20 +1427,23 @@ void UPlotLegendItem::contextMenuEvent(QContextMenuEvent * event)
QVector<float> x; QVector<float> x;
QVector<float> y; QVector<float> y;
_curve->getData(x, y); _curve->getData(x, y);
QString textX; QString text;
QString textY; text.append("x");
text.append('\t');
text.append(_curve->name());
text.append('\n');
for(int i=0; i<x.size(); ++i) for(int i=0; i<x.size(); ++i)
{ {
textX.append(QString::number(x[i])); text.append(QString::number(x[i]));
textY.append(QString::number(y[i])); text.append('\t');
text.append(QString::number(y[i]));
if(i+1<x.size()) if(i+1<x.size())
{ {
textX.append(' '); text.append('\n');
textY.append(' ');
} }
} }
QClipboard * clipboard = QApplication::clipboard(); QClipboard * clipboard = QApplication::clipboard();
clipboard->setText((textX+"\n")+textY); clipboard->setText(text);
} }
} }
else if(action == _aShowStdDev) else if(action == _aShowStdDev)
@@ -1667,7 +1670,7 @@ void UPlotLegend::contextMenuEvent(QContextMenuEvent * event)
} }
else else
{ {
QVector<float> y(firstData.size(), 0.0f); QVector<float> y(firstData.size(), std::numeric_limits<float>::quiet_NaN());
// ust to make usre that we have the same number of data on each curve, set 0 for unknowns // ust to make usre that we have the same number of data on each curve, set 0 for unknowns
int j=0; int j=0;
for(QMap<float,float>::iterator iter=firstData.begin(); iter!=firstData.end(); ++iter) for(QMap<float,float>::iterator iter=firstData.begin(); iter!=firstData.end(); ++iter)
@@ -1686,17 +1689,35 @@ void UPlotLegend::contextMenuEvent(QContextMenuEvent * event)
axes.push_front(firstData.values().toVector()); axes.push_front(firstData.values().toVector());
axes.push_front(firstData.keys().toVector()); axes.push_front(firstData.keys().toVector());
QString text; QString text;
for(int i=0; i<axes.size(); ++i) text.append('x');
text.append('\t');
for(int i=0; i<items.size(); ++i)
{ {
for(int j=0; j<axes[i].size(); ++j) text.append(items.at(i)->curve()->name());
{
text.append(QString::number(axes[i][j]));
if(j+1<axes[i].size())
{
text.append(' ');
}
}
if(i+1<axes.size()) if(i+1<axes.size())
{
text.append('\t');
}
}
text.append('\n');
for(int i=0; i<axes[0].size(); ++i)
{
for(int j=0; j<axes.size(); ++j)
{
if(uIsNan(axes[j][i]))
{
text.append("NA");
}
else
{
text.append(QString::number(axes[j][i]));
}
if(j+1<axes.size())
{
text.append('\t');
}
}
if(i+1<axes[0].size())
{ {
text.append("\n"); text.append("\n");
} }