+QMenu* DecodeTrace::create_view_context_menu(QWidget *parent, QPoint &click_pos)
+{
+ try {
+ selected_row_ = &visible_rows_[get_row_at_point(click_pos)];
+ } catch (out_of_range&) {
+ selected_row_ = nullptr;
+ }
+
+ const pair<uint64_t, uint64_t> sample_range =
+ get_sample_range(click_pos.x(), click_pos.x() + 1);
+ selected_samplepos_ = sample_range.first;
+
+ QMenu *const menu = new QMenu(parent);
+
+ QAction *const export_row =
+ new QAction(tr("Export all annotations for this row"), this);
+ export_row->setIcon(QIcon::fromTheme("document-save-as",
+ QIcon(":/icons/document-save-as.png")));
+ connect(export_row, SIGNAL(triggered()),
+ this, SLOT(on_export_row()));
+ menu->addAction(export_row);
+
+ QAction *const export_row_from_here =
+ new QAction(tr("Export annotations for this row, starting here"), this);
+ export_row_from_here->setIcon(QIcon::fromTheme("document-save-as",
+ QIcon(":/icons/document-save-as.png")));
+ connect(export_row_from_here, SIGNAL(triggered()),
+ this, SLOT(on_export_row_from_here()));
+ menu->addAction(export_row_from_here);
+
+ return menu;
+}
+