Merge pull request #316 from zero-motorcycle-community/graph-window-doubleclick-axis
GraphWindow: support rescaling the view or each axis to the data
This commit is contained in:
+24
-5
@@ -68,7 +68,7 @@ GraphingWindow::GraphingWindow(const QVector<CANFrame> *frames, QWidget *parent)
|
|||||||
connect(ui->graphingView->yAxis, SIGNAL(rangeChanged(QCPRange)), ui->graphingView->yAxis2, SLOT(setRange(QCPRange)));
|
connect(ui->graphingView->yAxis, SIGNAL(rangeChanged(QCPRange)), ui->graphingView->yAxis2, SLOT(setRange(QCPRange)));
|
||||||
|
|
||||||
//connect(ui->graphingView, SIGNAL(titleDoubleClick(QMouseEvent*,QCPTextElement*)), this, SLOT(titleDoubleClick(QMouseEvent*,QCPTextElement*)));
|
//connect(ui->graphingView, SIGNAL(titleDoubleClick(QMouseEvent*,QCPTextElement*)), this, SLOT(titleDoubleClick(QMouseEvent*,QCPTextElement*)));
|
||||||
connect(ui->graphingView, SIGNAL(axisDoubleClick(QCPAxis*,QCPAxis::SelectablePart,QMouseEvent*)), this, SLOT(axisLabelDoubleClick(QCPAxis*,QCPAxis::SelectablePart)));
|
connect(ui->graphingView, SIGNAL(axisDoubleClick(QCPAxis*,QCPAxis::SelectablePart,QMouseEvent*)), this, SLOT(axisDoubleClick(QCPAxis*,QCPAxis::SelectablePart)));
|
||||||
connect(ui->graphingView, SIGNAL(legendDoubleClick(QCPLegend*,QCPAbstractLegendItem*,QMouseEvent*)), this, SLOT(legendDoubleClick(QCPLegend*,QCPAbstractLegendItem*)));
|
connect(ui->graphingView, SIGNAL(legendDoubleClick(QCPLegend*,QCPAbstractLegendItem*,QMouseEvent*)), this, SLOT(legendDoubleClick(QCPLegend*,QCPAbstractLegendItem*)));
|
||||||
connect(ui->graphingView, SIGNAL(legendClick(QCPLegend*,QCPAbstractLegendItem*,QMouseEvent*)), this, SLOT(legendSingleClick(QCPLegend*,QCPAbstractLegendItem*)));
|
connect(ui->graphingView, SIGNAL(legendClick(QCPLegend*,QCPAbstractLegendItem*,QMouseEvent*)), this, SLOT(legendSingleClick(QCPLegend*,QCPAbstractLegendItem*)));
|
||||||
|
|
||||||
@@ -294,11 +294,10 @@ void GraphingWindow::titleDoubleClick(QMouseEvent* event, QCPTextElement* title)
|
|||||||
editSelectedGraph();
|
editSelectedGraph();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphingWindow::axisLabelDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part)
|
void GraphingWindow::axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part)
|
||||||
{
|
{
|
||||||
qDebug() << "axisLabelDoubleClick";
|
qDebug() << "axisDoubleClick";
|
||||||
// Set an axis label by double clicking on it
|
if (part == QCPAxis::spAxisLabel) // Set an axis label by double clicking on it
|
||||||
if (part == QCPAxis::spAxisLabel) // only react when the actual axis label is clicked, not tick label or axis backbone
|
|
||||||
{
|
{
|
||||||
bool ok;
|
bool ok;
|
||||||
QString newLabel = QInputDialog::getText(this, "SavvyCAN Graphing", "New axis label:", QLineEdit::Normal, axis->label(), &ok);
|
QString newLabel = QInputDialog::getText(this, "SavvyCAN Graphing", "New axis label:", QLineEdit::Normal, axis->label(), &ok);
|
||||||
@@ -307,6 +306,10 @@ void GraphingWindow::axisLabelDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart
|
|||||||
axis->setLabel(newLabel);
|
axis->setLabel(newLabel);
|
||||||
ui->graphingView->replot();
|
ui->graphingView->replot();
|
||||||
}
|
}
|
||||||
|
} else if (part == QCPAxis::spAxis) // Resize an axis to fit by double clicking it
|
||||||
|
{
|
||||||
|
this->rescaleAxis(axis);
|
||||||
|
ui->graphingView->replot();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -583,6 +586,18 @@ void GraphingWindow::removeAllGraphs()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GraphingWindow::rescaleAxis(QCPAxis *axis)
|
||||||
|
{
|
||||||
|
axis->rescale(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphingWindow::rescaleToData()
|
||||||
|
{
|
||||||
|
this->rescaleAxis(ui->graphingView->xAxis);
|
||||||
|
this->rescaleAxis(ui->graphingView->yAxis);
|
||||||
|
ui->graphingView->replot();
|
||||||
|
}
|
||||||
|
|
||||||
void GraphingWindow::toggleFollowMode()
|
void GraphingWindow::toggleFollowMode()
|
||||||
{
|
{
|
||||||
followGraphEnd = !followGraphEnd;
|
followGraphEnd = !followGraphEnd;
|
||||||
@@ -624,6 +639,10 @@ void GraphingWindow::contextMenuRequest(QPoint pos)
|
|||||||
}
|
}
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
menu->addAction(tr("Reset View"), this, SLOT(resetView()));
|
menu->addAction(tr("Reset View"), this, SLOT(resetView()));
|
||||||
|
if (ui->graphingView->graphCount() > 0)
|
||||||
|
{
|
||||||
|
menu->addAction(tr("Rescale to data"), this, SLOT(rescaleToData()));
|
||||||
|
}
|
||||||
menu->addAction(tr("Zoom In"), this, SLOT(zoomIn()));
|
menu->addAction(tr("Zoom In"), this, SLOT(zoomIn()));
|
||||||
menu->addAction(tr("Zoom Out"), this, SLOT(zoomOut()));
|
menu->addAction(tr("Zoom Out"), this, SLOT(zoomOut()));
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -47,7 +47,7 @@ public:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void titleDoubleClick(QMouseEvent *event, QCPTextElement *title);
|
void titleDoubleClick(QMouseEvent *event, QCPTextElement *title);
|
||||||
void axisLabelDoubleClick(QCPAxis* axis, QCPAxis::SelectablePart part);
|
void axisDoubleClick(QCPAxis* axis, QCPAxis::SelectablePart part);
|
||||||
void legendDoubleClick(QCPLegend* legend, QCPAbstractLegendItem* item);
|
void legendDoubleClick(QCPLegend* legend, QCPAbstractLegendItem* item);
|
||||||
void legendSingleClick(QCPLegend* legend, QCPAbstractLegendItem* item);
|
void legendSingleClick(QCPLegend* legend, QCPAbstractLegendItem* item);
|
||||||
void plottableDoubleClick(QCPAbstractPlottable* plottable,int dataIdx, QMouseEvent* event);
|
void plottableDoubleClick(QCPAbstractPlottable* plottable,int dataIdx, QMouseEvent* event);
|
||||||
@@ -63,6 +63,8 @@ private slots:
|
|||||||
void saveSpreadsheet();
|
void saveSpreadsheet();
|
||||||
void saveDefinitions();
|
void saveDefinitions();
|
||||||
void loadDefinitions();
|
void loadDefinitions();
|
||||||
|
void rescaleAxis(QCPAxis* axis);
|
||||||
|
void rescaleToData();
|
||||||
void toggleFollowMode();
|
void toggleFollowMode();
|
||||||
void addNewGraph();
|
void addNewGraph();
|
||||||
void createGraph(GraphParams ¶ms, bool createGraphParam = true);
|
void createGraph(GraphParams ¶ms, bool createGraphParam = true);
|
||||||
|
|||||||
Reference in New Issue
Block a user