diff --git a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.cpp b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.cpp index 791fc9f78579f2e823d5f04698e0c29670c34175..1187539556c24f896907d6b2f4d5136cb4f1299e 100644 --- a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.cpp +++ b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.cpp @@ -16,12 +16,14 @@ #include "IntensityDataCanvas.h" #include "AppSvc.h" +#include "ColorMap.h" #include "ColorMapCanvas.h" #include "IntensityDataItem.h" #include "SavePlotAssistant.h" #include "projectmanager.h" #include <QAction> #include <QVBoxLayout> +#include <QMouseEvent> IntensityDataCanvas::IntensityDataCanvas(QWidget *parent) : SessionItemWidget(parent) @@ -40,6 +42,9 @@ IntensityDataCanvas::IntensityDataCanvas(QWidget *parent) m_colorMap->setStatusLabelEnabled(true); initActions(); + + connect(m_colorMap->customPlot(), SIGNAL(mousePress(QMouseEvent*)), + this, SLOT(onMousePress(QMouseEvent*)), Qt::UniqueConnection); } void IntensityDataCanvas::setItem(SessionItem* item) @@ -75,6 +80,12 @@ void IntensityDataCanvas::onSavePlotAction() saveAssistant.savePlot(dirname, m_colorMap->customPlot(), m_currentItem); } +void IntensityDataCanvas::onMousePress(QMouseEvent* event) +{ + if(event->button() == Qt::RightButton) + emit customContextMenuRequested(event->globalPos()); +} + void IntensityDataCanvas::setIntensityData(IntensityDataItem* intensityItem) { m_currentItem = intensityItem; diff --git a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.h b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.h index 9e611925d8ad5d1821c2bca3ecde3cf7779d0ed7..f2f0f18aeda857c35a5b8c8992b75d4ffc266d12 100644 --- a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.h +++ b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataCanvas.h @@ -43,6 +43,7 @@ public: public slots: void onResetViewAction(); void onSavePlotAction(); + void onMousePress(QMouseEvent *event); private: void setIntensityData(IntensityDataItem* intensityItem); diff --git a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.cpp b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.cpp index cec2adfcb4c01adec4d95b2bebb0ee9ab4a7ead5..290220ff7656b3cd26026d75818e936845934de3 100644 --- a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.cpp +++ b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.cpp @@ -20,9 +20,10 @@ #include "IntensityDataCanvas.h" #include "RealDataItem.h" #include "SessionItem.h" +#include "JobItem.h" #include <QAction> #include <QBoxLayout> -#include "JobItem.h" +#include <QMenu> IntensityDataWidget::IntensityDataWidget(QWidget *parent) : SessionItemWidget(parent) @@ -45,6 +46,8 @@ IntensityDataWidget::IntensityDataWidget(QWidget *parent) mainLayout->addLayout(hlayout); setLayout(mainLayout); + connect(m_intensityWidget, SIGNAL(customContextMenuRequested(const QPoint &)), + this, SLOT(onContextMenuRequest(const QPoint &))); } void IntensityDataWidget::setItem(SessionItem *item) @@ -60,3 +63,12 @@ QList<QAction *> IntensityDataWidget::actionList() { return m_intensityWidget->actionList() + m_propertyWidget->actionList(); } + +void IntensityDataWidget::onContextMenuRequest(const QPoint& point) +{ + QMenu menu; + for(auto action : actionList()) + menu.addAction(action); + menu.exec(point); +} + diff --git a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.h b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.h index 99459f5afb6d09de1093a97506c40fe4161e0105..5d7047030579ceb99be313b42852d6264b6cd1f6 100644 --- a/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.h +++ b/GUI/coregui/Views/IntensityDataWidgets/IntensityDataWidget.h @@ -39,6 +39,9 @@ public: QList<QAction*> actionList(); +private slots: + void onContextMenuRequest(const QPoint& point); + private: IntensityDataCanvas* m_intensityWidget; IntensityDataPropertyWidget* m_propertyWidget;