Skip to content
Snippets Groups Projects
Commit 45923110 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

[m.0] Add context menu to 2d canvas (#983) (Closes #910 and #983)

Merging branch 'm.0'  into 'main'.

See merge request !2786
parents f105933e 036e2295
No related branches found
No related tags found
1 merge request!2786Add context menu to 2d canvas (#983)
Pipeline #178052 passed
......@@ -33,6 +33,21 @@
#include <QSplitter>
#include <QTabWidget>
namespace {
void execContextMenu(const QPoint& point, FrameActions* actions, const MaskItem* item)
{
QMenu menu;
menu.addAction(actions->reset_view);
menu.addAction(actions->save_plot);
menu.addAction(actions->toggle_properties_panel);
if (item)
menu.addAction(actions->delete_mask);
menu.exec(point);
}
} // namespace
Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source)
: AnydataFrame(std::move(data_source))
, m_canvas2D(new MaskEditorCanvas)
......@@ -82,6 +97,14 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source)
//... Connections
connect(m_canvas2D->getScene(), &MaskGraphicsScene::itemContextMenuRequest,
[toolbar](const QPoint& point, const MaskItem* item) {
execContextMenu(point, toolbar->actions(), item);
});
connect(toolbar->actions()->delete_mask, &QAction::triggered, m_canvas2D,
&MaskEditorCanvas::deleteCurrentItem);
connect(toolbar->actions()->toggle_properties_panel, &QAction::triggered,
[this] { m_panels->setVisible(!m_panels->isVisible()); });
......
......@@ -294,8 +294,8 @@ void MaskGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent* event)
if (m_drawing_in_progress)
return;
if (dynamic_cast<IOverlay*>(itemAt(event->scenePos(), QTransform())))
emit itemContextMenuRequest(event->screenPos());
const MaskItem* selected_item = maskItemForOverlay(selectedMaskOverlay());
emit itemContextMenuRequest(event->screenPos(), selected_item);
}
void MaskGraphicsScene::updateCursors()
......
......@@ -52,7 +52,7 @@ public:
signals:
void mouseSelectionChanged();
void itemContextMenuRequest(const QPoint& point);
void itemContextMenuRequest(const QPoint& point, const MaskItem* item);
void lineItemProcessed();
void lineItemMoved(const LineItem* sender);
void lineItemDeleted(const LineItem* sender);
......
......@@ -42,4 +42,9 @@ FrameActions::FrameActions()
toggle_properties_panel->setIcon(QIcon(":/images/dock-right.svg"));
toggle_properties_panel->setToolTip("Toggle properties panel");
toggle_properties_panel->setCheckable(true);
delete_mask = new QAction("Delete mask");
delete_mask->setIcon(QIcon(":/images/mask/maskall.svg"));
delete_mask->setToolTip("Delete selected mask (Del/Backspace)");
delete_mask->setShortcuts(QKeySequence::Delete);
}
......@@ -27,6 +27,7 @@ public:
QAction* save_plot;
QAction* save_projections;
QAction* toggle_properties_panel;
QAction* delete_mask;
};
#endif // BORNAGAIN_GUI_VIEW_SETUP_FRAMEINSTRUMENTS_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment