From 320439d92f49b77e4380ff3f91e98139c1bd99f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Martin=C4=8Dek?= Date: Tue, 28 Jun 2022 15:57:13 +0200 Subject: [PATCH] Add reset view option to context menus --- pv/views/trace/ruler.cpp | 10 ++++++++++ pv/views/trace/ruler.hpp | 1 + pv/views/trace/tracetreeitem.cpp | 25 +++++++++++++++++++++++++ pv/views/trace/tracetreeitem.hpp | 5 +++++ pv/views/trace/view.cpp | 7 +++++++ pv/views/trace/view.hpp | 2 ++ 6 files changed, 50 insertions(+) diff --git a/pv/views/trace/ruler.cpp b/pv/views/trace/ruler.cpp index 83ffed28..73abae3a 100644 --- a/pv/views/trace/ruler.cpp +++ b/pv/views/trace/ruler.cpp @@ -149,6 +149,11 @@ void Ruler::contextMenuEvent(QContextMenuEvent *event) context_menu_x_pos_ = event->pos().x(); QMenu *const menu = new QMenu(this); + if(view_.ruler_offset().convert_to() != 0){ + QAction *const reset_view = new QAction(tr("Reset view"), this); + connect(reset_view, SIGNAL(triggered()), this, SLOT(on_view_reset())); + menu->addAction(reset_view); + } QAction *const create_marker = new QAction(tr("Create marker here"), this); connect(create_marker, SIGNAL(triggered()), this, SLOT(on_createMarker())); @@ -415,6 +420,11 @@ void Ruler::on_toggleHoverMarker() settings.setValue(GlobalSettings::Key_View_ShowHoverMarker, !state); } +void Ruler::on_view_reset() +{ + view_.reset_offset(); +} + } // namespace trace } // namespace views } // namespace pv diff --git a/pv/views/trace/ruler.hpp b/pv/views/trace/ruler.hpp index 55c156f5..11fb02c6 100644 --- a/pv/views/trace/ruler.hpp +++ b/pv/views/trace/ruler.hpp @@ -186,6 +186,7 @@ private Q_SLOTS: void on_setZeroPosition(); void on_resetZeroPosition(); void on_toggleHoverMarker(); + void on_view_reset(); private: /** diff --git a/pv/views/trace/tracetreeitem.cpp b/pv/views/trace/tracetreeitem.cpp index 31b43ca1..f5681dbb 100644 --- a/pv/views/trace/tracetreeitem.cpp +++ b/pv/views/trace/tracetreeitem.cpp @@ -18,6 +18,7 @@ */ #include +#include #include "view.hpp" @@ -138,6 +139,30 @@ QPoint TraceTreeItem::drag_point(const QRect &rect) const return QPoint(rect.right(), get_visual_y()); } +QMenu* TraceTreeItem::create_view_context_menu(QWidget *parent, QPoint &click_pos) +{ + (void)click_pos; + + QMenu *const menu = new QMenu(parent); + + View *view = owner_->view(); + + if(view->ruler_offset().convert_to() != 0){ + QAction *const reset_view = new QAction(tr("Reset view"), this); + connect(reset_view, SIGNAL(triggered()), this, SLOT(on_view_reset())); + menu->addAction(reset_view); + } + + return menu; +} + +void TraceTreeItem::on_view_reset() +{ + View *view = owner_->view(); + assert(view); + view->reset_offset(); +} + } // namespace trace } // namespace views } // namespace pv diff --git a/pv/views/trace/tracetreeitem.hpp b/pv/views/trace/tracetreeitem.hpp index e5ebbdd7..93db25b8 100644 --- a/pv/views/trace/tracetreeitem.hpp +++ b/pv/views/trace/tracetreeitem.hpp @@ -119,6 +119,11 @@ class TraceTreeItem : public ViewItem, */ virtual pair v_extents() const = 0; + virtual QMenu* create_view_context_menu(QWidget *parent, QPoint &click_pos); + +private Q_SLOTS: + void on_view_reset(); + protected: TraceTreeItemOwner *owner_; diff --git a/pv/views/trace/view.cpp b/pv/views/trace/view.cpp index a7b483a7..93948c26 100644 --- a/pv/views/trace/view.cpp +++ b/pv/views/trace/view.cpp @@ -602,6 +602,13 @@ void View::set_offset(const pv::util::Timestamp& offset, bool force_update) } } +void View::reset_offset() +{ + set_offset(-zero_offset_, true); + ruler_->update(); + viewport_->update(); +} + const Timestamp& View::offset() const { return offset_; diff --git a/pv/views/trace/view.hpp b/pv/views/trace/view.hpp index f8506cf4..790b3dd9 100644 --- a/pv/views/trace/view.hpp +++ b/pv/views/trace/view.hpp @@ -184,6 +184,8 @@ class View : public ViewBase, public TraceTreeItemOwner, public GlobalSettingsIn void reset_zero_position(); + void reset_offset(); + pv::util::Timestamp zero_offset() const; /**