X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.hpp;h=b4c946d6449f29ada6eec4191c5d3adc769ca691;hp=040bac1b828590514fe22937041f050a3b426aef;hb=5a8c6b596a36e8c07fee234aa208ef23c8520c92;hpb=95a4b2a131d6995d08f2eb6dded50f928d1ecb1e
diff --git a/pv/views/trace/view.hpp b/pv/views/trace/view.hpp
index 040bac1b..b4c946d6 100644
--- a/pv/views/trace/view.hpp
+++ b/pv/views/trace/view.hpp
@@ -17,14 +17,14 @@
* along with this program; if not, see .
*/
-#ifndef PULSEVIEW_PV_VIEWS_TRACEVIEW_VIEW_HPP
-#define PULSEVIEW_PV_VIEWS_TRACEVIEW_VIEW_HPP
+#ifndef PULSEVIEW_PV_VIEWS_TRACE_VIEW_HPP
+#define PULSEVIEW_PV_VIEWS_TRACE_VIEW_HPP
#include
#include
#include
+#include
#include
-#include
#include
#include
@@ -43,8 +43,7 @@
#include "tracetreeitemowner.hpp"
using std::list;
-using std::unordered_map;
-using std::unordered_set;
+using std::map;
using std::set;
using std::shared_ptr;
using std::vector;
@@ -96,6 +95,7 @@ private:
static const pv::util::Timestamp MinScale;
static const int MaxScrollValue;
+ static const int ViewScrollMargin;
static const int ScaleUnits[3];
@@ -118,13 +118,13 @@ public:
/**
* Returns the signals contained in this view.
*/
- unordered_set< shared_ptr > signals() const;
+ vector< shared_ptr > signals() const;
shared_ptr get_signal_by_signalbase(shared_ptr base) const;
- virtual void clear_signals();
-
- void add_signal(const shared_ptr signal);
+ virtual void clear_signalbases();
+ virtual void add_signalbase(const shared_ptr signalbase);
+ virtual void remove_signalbase(const shared_ptr signalbase);
#ifdef ENABLE_DECODE
virtual void clear_decode_signals();
@@ -134,6 +134,8 @@ public:
virtual void remove_decode_signal(shared_ptr signal);
#endif
+ void remove_trace(shared_ptr trace);
+
shared_ptr get_signal_under_mouse_cursor() const;
/**
@@ -154,7 +156,6 @@ public:
const Ruler* ruler() const;
virtual void save_settings(QSettings &settings) const;
-
virtual void restore_settings(QSettings &settings);
/**
@@ -254,6 +255,8 @@ public:
void zoom_fit(bool gui_state);
+ virtual void focus_on_range(uint64_t start_sample, uint64_t end_sample);
+
/**
* Sets the scale and offset.
* @param scale The new view scale in seconds per pixel.
@@ -261,7 +264,7 @@ public:
*/
void set_scale_offset(double scale, const pv::util::Timestamp& offset);
- set< shared_ptr > get_visible_data() const;
+ vector< shared_ptr > get_visible_data() const;
pair get_time_extents() const;
@@ -271,7 +274,7 @@ public:
bool colored_bg() const;
/**
- * Returns true if cursors are displayed. false otherwise.
+ * Returns true if cursors are displayed, false otherwise.
*/
bool cursors_shown() const;
@@ -281,14 +284,16 @@ public:
void show_cursors(bool show = true);
/**
- * Sets the cursors to the given offsets. You will still have to call show_cursors separately.
+ * Sets the cursors to the given offsets.
+ * You still have to call show_cursors() separately.
*/
void set_cursors(pv::util::Timestamp& first, pv::util::Timestamp& second);
/**
* Moves the cursors to a convenient position in the view.
+ * You still have to call show_cursors() separately.
*/
- void centre_cursors();
+ void center_cursors();
/**
* Returns a reference to the pair of cursors.
@@ -401,14 +406,12 @@ private:
TraceTreeItemOwner* find_prevalent_trace_group(
const shared_ptr &group,
- const unordered_map,
- shared_ptr > &signal_map);
+ const map, shared_ptr > &signal_map);
static vector< shared_ptr >
extract_new_traces_for_channels(
const vector< shared_ptr > &channels,
- const unordered_map,
- shared_ptr > &signal_map,
+ const map, shared_ptr > &signal_map,
set< shared_ptr > &add_list);
void determine_time_unit();
@@ -508,7 +511,8 @@ private:
QShortcut *grab_ruler_left_shortcut_, *grab_ruler_right_shortcut_;
QShortcut *cancel_grab_shortcut_;
- unordered_set< shared_ptr > signals_;
+ mutable mutex signal_mutex_;
+ vector< shared_ptr > signals_;
#ifdef ENABLE_DECODE
vector< shared_ptr > decode_traces_;
@@ -528,9 +532,11 @@ private:
pv::util::Timestamp ruler_offset_;
/// The offset of the zero point in seconds.
pv::util::Timestamp zero_offset_;
+ /// Shows whether the user set a custom zero offset that we should keep
+ bool custom_zero_offset_set_;
bool updating_scroll_;
- bool settings_restored_;
+ bool restoring_state_;
bool header_was_shrunk_;
bool sticky_scrolling_;
@@ -563,22 +569,16 @@ private:
// This is true when the defaults couldn't be set due to insufficient info
bool scroll_needs_defaults_;
- // A nonzero value indicates the v offset to restore. See View::resizeEvent()
+ // The v offset to restore. See View::eventFilter()
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
} // namespace views
} // namespace pv
-#endif // PULSEVIEW_PV_VIEWS_TRACEVIEW_VIEW_HPP
+#endif // PULSEVIEW_PV_VIEWS_TRACE_VIEW_HPP