mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-18 08:54:15 +01:00
OP-1611 Added context menu to Scope widget
This commit is contained in:
parent
d70d94aef4
commit
6c476d2a58
@ -93,6 +93,23 @@ void PlotData::updatePlotData()
|
||||
m_plotCurve->setSamples(m_xDataEntries, m_yDataEntries);
|
||||
}
|
||||
|
||||
void PlotData::clear()
|
||||
{
|
||||
m_meanSum = 0.0f;
|
||||
m_correctionSum = 0.0f;
|
||||
m_correctionCount = 0;
|
||||
m_xDataEntries.clear();
|
||||
m_yDataEntries.clear();
|
||||
while (!m_enumMarkerList.isEmpty()) {
|
||||
QwtPlotMarker *marker = m_enumMarkerList.takeFirst();
|
||||
marker->detach();
|
||||
delete marker;
|
||||
}
|
||||
if (wantsInitialData()) {
|
||||
append(m_object);
|
||||
}
|
||||
}
|
||||
|
||||
bool PlotData::hasData() const
|
||||
{
|
||||
if (!m_isEnumPlot) {
|
||||
|
@ -93,6 +93,7 @@ public:
|
||||
virtual void removeStaleData() = 0;
|
||||
|
||||
void updatePlotData();
|
||||
void clear();
|
||||
|
||||
bool hasData() const;
|
||||
QString lastDataAsString();
|
||||
|
@ -47,6 +47,7 @@ void ScopeGadget::loadConfiguration(IUAVGadgetConfiguration *config)
|
||||
ScopeGadgetConfiguration *sgConfig = qobject_cast<ScopeGadgetConfiguration *>(config);
|
||||
ScopeGadgetWidget *widget = qobject_cast<ScopeGadgetWidget *>(m_widget);
|
||||
|
||||
widget->setName(config->name());
|
||||
widget->setPlotDataSize(sgConfig->dataSize());
|
||||
widget->setRefreshInterval(sgConfig->refreshInterval());
|
||||
|
||||
|
@ -50,7 +50,6 @@ void ScopeGadgetFactory::startPlotting()
|
||||
emit onStartPlotting();
|
||||
}
|
||||
|
||||
|
||||
Core::IUAVGadget *ScopeGadgetFactory::createGadget(QWidget *parent)
|
||||
{
|
||||
ScopeGadgetWidget *gadgetWidget = new ScopeGadgetWidget(parent);
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "uavobject.h"
|
||||
#include "coreplugin/icore.h"
|
||||
#include "coreplugin/connectionmanager.h"
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include "qwt/src/qwt_plot_curve.h"
|
||||
#include "qwt/src/qwt_plot_grid.h"
|
||||
@ -48,6 +49,10 @@
|
||||
#include <QPushButton>
|
||||
#include <QMutexLocker>
|
||||
#include <QWheelEvent>
|
||||
#include <QMenu>
|
||||
#include <QAction>
|
||||
#include <QClipboard>
|
||||
#include <QApplication>
|
||||
|
||||
#include <qwt/src/qwt_legend_label.h>
|
||||
#include <qwt/src/qwt_plot_canvas.h>
|
||||
@ -88,6 +93,9 @@ ScopeGadgetWidget::ScopeGadgetWidget(QWidget *parent) : QwtPlot(parent),
|
||||
// Listen to autopilot connection events
|
||||
connect(cm, SIGNAL(deviceAboutToDisconnect()), this, SLOT(csvLoggingDisconnect()));
|
||||
connect(cm, SIGNAL(deviceConnected(QIODevice *)), this, SLOT(csvLoggingConnect()));
|
||||
|
||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(this, SIGNAL(customContextMenuRequested(const QPoint & )), this, SLOT(popUpMenu(const QPoint &)));
|
||||
}
|
||||
|
||||
ScopeGadgetWidget::~ScopeGadgetWidget()
|
||||
@ -624,3 +632,44 @@ void ScopeGadgetWidget::csvLoggingDisconnect()
|
||||
csvLoggingStop();
|
||||
}
|
||||
}
|
||||
|
||||
void ScopeGadgetWidget::popUpMenu(const QPoint &mousePosition)
|
||||
{
|
||||
Q_UNUSED(mousePosition);
|
||||
|
||||
QMenu menu;
|
||||
QAction * action = menu.addAction(tr("Clear"));
|
||||
connect(action, &QAction::triggered, this, &ScopeGadgetWidget::clearPlot);
|
||||
action = menu.addAction(tr("Copy to Clipboard"));
|
||||
connect(action, &QAction::triggered, this, &ScopeGadgetWidget::copyToClipboardAsImage);
|
||||
menu.addSeparator();
|
||||
action = menu.addAction(tr("Options..."));
|
||||
connect(action, &QAction::triggered, this, &ScopeGadgetWidget::showOptionDialog);
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
void ScopeGadgetWidget::clearPlot()
|
||||
{
|
||||
m_mutex.lock();
|
||||
foreach (PlotData * plot, m_curvesData.values()) {
|
||||
plot->clear();
|
||||
}
|
||||
m_mutex.unlock();
|
||||
replot();
|
||||
}
|
||||
|
||||
void ScopeGadgetWidget::copyToClipboardAsImage()
|
||||
{
|
||||
QPixmap pixmap = QWidget::grab();
|
||||
if(pixmap.isNull()){
|
||||
qDebug("Failed to capture the plot");
|
||||
return;
|
||||
}
|
||||
QClipboard *clipboard = QApplication::clipboard();
|
||||
clipboard->setPixmap(pixmap);
|
||||
}
|
||||
|
||||
void ScopeGadgetWidget::showOptionDialog()
|
||||
{
|
||||
Core::ICore::instance()->showOptionsDialog("ScopeGadget", m_name);
|
||||
}
|
||||
|
@ -69,6 +69,7 @@ public:
|
||||
ScopeGadgetWidget(QWidget *parent = 0);
|
||||
~ScopeGadgetWidget();
|
||||
|
||||
void setName (QString name) { m_name = name; }
|
||||
void setupSequentialPlot();
|
||||
void setupChronoPlot();
|
||||
void setupUAVObjectPlot();
|
||||
@ -137,12 +138,17 @@ private slots:
|
||||
void stopPlotting();
|
||||
void csvLoggingConnect();
|
||||
void csvLoggingDisconnect();
|
||||
void popUpMenu(const QPoint &mousePosition);
|
||||
void clearPlot();
|
||||
void copyToClipboardAsImage();
|
||||
void showOptionDialog();
|
||||
|
||||
private:
|
||||
|
||||
void preparePlot(PlotType plotType);
|
||||
void setupExamplePlot();
|
||||
|
||||
QString m_name;
|
||||
PlotType m_plotType;
|
||||
|
||||
double m_plotDataSize;
|
||||
|
Loading…
x
Reference in New Issue
Block a user