diff --git a/src/PlotDock.cpp b/src/PlotDock.cpp index 586af308..f7b3ba88 100644 --- a/src/PlotDock.cpp +++ b/src/PlotDock.cpp @@ -29,6 +29,12 @@ PlotDock::PlotDock(QWidget* parent) connect(ui->plotWidget, SIGNAL(mousePress(QMouseEvent*)), this, SLOT(mousePress())); connect(ui->plotWidget, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(mouseWheel())); + // Enable: click on items to select them, Ctrl+Click for multi-selection, mouse-wheel for zooming and mouse drag for + // changing the visible range. + // Select one axis for zoom and drag applying only to that orientation. + ui->plotWidget->setInteractions(QCP::iSelectPlottables | QCP::iMultiSelect | QCP::iRangeZoom | QCP::iRangeDrag | QCP::iSelectAxes); + ui->plotWidget->setSelectionRectMode(QCP::srmNone); + QShortcut* shortcutCopy = new QShortcut(QKeySequence::Copy, ui->plotWidget, nullptr, nullptr, Qt::WidgetShortcut); connect(shortcutCopy, SIGNAL(activated()), this, SLOT(copy())); @@ -193,20 +199,8 @@ void PlotDock::updatePlot(SqliteTableModel* model, BrowseDataTableSettings* sett ui->plotWidget->xAxis->setLabel(QString()); ui->plotWidget->yAxis->setLabel(QString()); - ui->buttonLoadAllData->setEnabled(false); - ui->buttonLoadAllData->setStyleSheet(""); - ui->buttonLoadAllData->setToolTip(tr("Load all data and redraw plot")); - if(xitem) { - // Warn user if not all data has been fetched and hint about the button for loading all the data - if (m_currentTableSettings->plotYAxes.count() && model && model->canFetchMore()) { - ui->buttonLoadAllData->setEnabled(true); - ui->buttonLoadAllData->setStyleSheet("color: white; background-color: rgb(255, 102, 102)"); - ui->buttonLoadAllData->setToolTip(tr("Load all data and redraw plot.\n" - "Warning: not all data has been fetched from the table yet due to the partial fetch mechanism.")); - QToolTip::showText(ui->buttonLoadAllData->mapToGlobal(QPoint(0, 0)), ui->buttonLoadAllData->toolTip()); - } // regain the model column index and the datatype // leading 16 bit are column index, the other 16 bit are the datatype // right now datatype is only important for X axis (date, non date) @@ -241,11 +235,6 @@ void PlotDock::updatePlot(SqliteTableModel* model, BrowseDataTableSettings* sett graph->setPen(QPen(item->backgroundColor(PlotColumnY))); graph->setSelectable (QCP::stDataRange); - // Enable: click on items to select them, Ctrl+Click for multi-selection, mouse-wheel for zooming and mouse drag for - // changing the visible range. - // Select one axis for zoom and drag applying only to that orientation. - ui->plotWidget->setInteractions(QCP::iSelectPlottables | QCP::iMultiSelect | QCP::iRangeZoom | QCP::iRangeDrag | QCP::iSelectAxes); - ui->plotWidget->setSelectionRectMode(QCP::srmNone); // prepare the data vectors for qcustomplot // possible improvement might be a QVector subclass that directly @@ -309,6 +298,19 @@ void PlotDock::updatePlot(SqliteTableModel* model, BrowseDataTableSettings* sett ui->plotWidget->yAxis->setLabel(yAxisLabels.join("|")); } ui->plotWidget->replot(); + + // Warn user if not all data has been fetched and hint about the button for loading all the data + if (ui->plotWidget->graphCount() > 0 && model->canFetchMore()) { + ui->buttonLoadAllData->setEnabled(true); + ui->buttonLoadAllData->setStyleSheet("color: white; background-color: rgb(255, 102, 102)"); + ui->buttonLoadAllData->setToolTip(tr("Load all data and redraw plot.\n" + "Warning: not all data has been fetched from the table yet due to the partial fetch mechanism.")); + QToolTip::showText(ui->buttonLoadAllData->mapToGlobal(QPoint(0, 0)), ui->buttonLoadAllData->toolTip()); + } else { + ui->buttonLoadAllData->setEnabled(false); + ui->buttonLoadAllData->setStyleSheet(""); + ui->buttonLoadAllData->setToolTip(tr("Load all data and redraw plot")); + } } void PlotDock::on_treePlotColumns_itemChanged(QTreeWidgetItem* changeitem, int column)