X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.hpp;h=e80198d329062f8175b04e9e28dbf4c1be543c75;hb=89914a8657612761ff962ee973721a4872cda8d7;hp=5be959579eb7eba521f454df21b4f16d1f2f1b4c;hpb=ad908057e13224eee9f983685e0ccc7db1ded0e9;p=pulseview.git diff --git a/pv/views/trace/view.hpp b/pv/views/trace/view.hpp index 5be9595..e80198d 100644 --- a/pv/views/trace/view.hpp +++ b/pv/views/trace/view.hpp @@ -37,6 +37,7 @@ #include "cursorpair.hpp" #include "flag.hpp" +#include "trace.hpp" #include "tracetreeitemowner.hpp" using std::list; @@ -190,6 +191,20 @@ 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); void zoom(double steps, int offset); @@ -269,7 +284,7 @@ public: void restack_all_trace_tree_items(); Q_SIGNALS: - void hover_point_changed(); + void hover_point_changed(const QPoint &hp); void selection_changed(); @@ -295,6 +310,13 @@ Q_SIGNALS: /// Emitted when the time_unit changed. void time_unit_changed(); + /// Emitted when the currently selected segment changed + void segment_changed(int segment_id); + + /// Emitted when the multi-segment display mode changed + /// @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); @@ -323,9 +345,9 @@ private: void set_scroll_default(); - bool header_was_shrunk() const; + void determine_if_header_was_shrunk(); - void expand_header_to_fit(); + void resize_header_to_fit(); void update_layout(); @@ -347,6 +369,8 @@ private: void resizeEvent(QResizeEvent *event); + void update_hover_point(); + public: void row_item_appearance_changed(bool label, bool content); void time_item_appearance_changed(bool label, bool content); @@ -355,6 +379,7 @@ public: private Q_SLOTS: + void on_signal_name_changed(); void on_splitter_moved(); void h_scroll_value_changed(int value); @@ -363,12 +388,14 @@ private Q_SLOTS: void signals_changed(); void capture_state_updated(int state); + void on_new_segment(int new_segment_id); + void on_segment_completed(int new_segment_id); + void on_segment_changed(int segment); + virtual void perform_delayed_view_update(); void process_sticky_events(); - void on_hover_point_changed(); - /** * Sets the 'offset_' member and emits the 'offset_changed' * signal if needed. @@ -405,6 +432,11 @@ private Q_SLOTS: */ void set_time_unit(pv::util::TimeUnit time_unit); + /** + * Sets the current segment with the first segment starting at 0. + */ + void set_current_segment(uint32_t segment_id); + private: CustomScrollArea *scrollarea_; Viewport *viewport_; @@ -418,6 +450,11 @@ private: vector< shared_ptr > decode_traces_; #endif + Trace::SegmentDisplayMode segment_display_mode_; + + /// Signals whether the user can change the currently shown segment. + bool segment_selectable_; + /// The view time scale in seconds per pixel. double scale_; @@ -426,6 +463,7 @@ private: bool updating_scroll_; bool settings_restored_; + bool header_was_shrunk_; bool sticky_scrolling_; bool coloured_bg_; @@ -454,6 +492,16 @@ private: // A nonzero value indicates the v offset to restore. See View::resizeEvent() int saved_v_offset_; + + // These are used to determine whether the view was altered after acq started + double scale_at_acq_start_; + pv::util::Timestamp offset_at_acq_start_; + + // Used to suppress performing a "zoom to fit" when the session stops. This + // is needed when the view's settings are restored before acquisition ends. + // In that case we want to keep the restored settings, not have a "zoom to fit" + // mess them up. + bool suppress_zoom_to_fit_after_acq_; }; } // namespace trace