X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.hpp;h=a351fd9306332f0169e917c16c6bbf2246a07368;hb=d0c0573b3ee694827a747727f862c5f91736ca05;hp=679e587bf3036e705820604eb2f23df99d89205f;hpb=8c3397413149b87d2755494fe73186f27edab369;p=pulseview.git diff --git a/pv/views/trace/view.hpp b/pv/views/trace/view.hpp index 679e587..a351fd9 100644 --- a/pv/views/trace/view.hpp +++ b/pv/views/trace/view.hpp @@ -31,8 +31,9 @@ #include #include -#include +#include #include +#include #include #include "cursorpair.hpp" @@ -81,7 +82,7 @@ public: bool viewportEvent(QEvent *event); }; -class View : public ViewBase, public TraceTreeItemOwner +class View : public ViewBase, public TraceTreeItemOwner, public GlobalSettingsInterface { Q_OBJECT @@ -102,6 +103,8 @@ private: public: explicit View(Session &session, bool is_main_view=false, QWidget *parent = nullptr); + ~View(); + Session& session(); const Session& session() const; @@ -151,11 +154,21 @@ public: double scale() const; /** - * Returns the time offset of the left edge of the view in - * seconds. + * Returns the internal view version of the time offset of the left edge + * of the view in seconds. */ const pv::util::Timestamp& offset() const; + /** + * Returns the ruler version of the time offset of the left edge + * of the view in seconds. + */ + const pv::util::Timestamp& ruler_offset() const; + + void set_zero_position(pv::util::Timestamp& position); + + void reset_zero_position(); + /** * Returns the vertical scroll offset. */ @@ -181,6 +194,11 @@ public: */ const pv::util::Timestamp& tick_period() const; + /** + * Returns number of minor division ticks per time marking. + */ + unsigned int minor_tick_count() const; + /** * Returns the unit of time currently used. */ @@ -191,12 +209,18 @@ public: */ unsigned int depth() const; + /** + * Returns the currently displayed segment, starting at 0. + */ + uint32_t current_segment() const; + /** * Returns whether the currently shown segment can be influenced * (selected) or not. */ bool segment_is_selectable() const; + Trace::SegmentDisplayMode segment_display_mode() const; void set_segment_display_mode(Trace::SegmentDisplayMode mode); void zoom(double steps); @@ -277,6 +301,8 @@ public: void restack_all_trace_tree_items(); + void on_setting_changed(const QString &key, const QVariant &value); + Q_SIGNALS: void hover_point_changed(const QPoint &hp); @@ -308,10 +334,11 @@ Q_SIGNALS: void segment_changed(int segment_id); /// Emitted when the multi-segment display mode changed - void segment_display_mode_changed(bool segment_selectable); + /// @param mode is a value of Trace::SegmentDisplayMode + void segment_display_mode_changed(int mode, bool segment_selectable); public Q_SLOTS: - void trigger_event(util::Timestamp location); + void trigger_event(int segment_id, util::Timestamp location); private: void get_scroll_layout(double &length, pv::util::Timestamp &offset) const; @@ -385,15 +412,17 @@ private Q_SLOTS: void on_segment_completed(int new_segment_id); void on_segment_changed(int segment); + void on_settingViewTriggerIsZeroTime_changed(const QVariant new_value); + virtual void perform_delayed_view_update(); void process_sticky_events(); /** - * Sets the 'offset_' member and emits the 'offset_changed' + * Sets the 'offset_' and ruler_offset_ members and emits the 'offset_changed' * signal if needed. */ - void set_offset(const pv::util::Timestamp& offset); + void set_offset(const pv::util::Timestamp& offset, bool force_update = false); /** * Sets the 'scale_' member and emits the 'scale_changed' @@ -451,8 +480,10 @@ private: /// The view time scale in seconds per pixel. double scale_; - /// The view time offset in seconds. + /// The internal view version of the time offset in seconds. pv::util::Timestamp offset_; + /// The ruler version of the time offset in seconds. + pv::util::Timestamp ruler_offset_; bool updating_scroll_; bool settings_restored_; @@ -464,6 +495,7 @@ private: pv::util::Timestamp tick_period_; pv::util::SIPrefix tick_prefix_; + unsigned int minor_tick_count_; unsigned int tick_precision_; util::TimeUnit time_unit_;