* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#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 <cstdint>
#include <list>
#include <memory>
+#include <mutex>
#include <set>
-#include <unordered_map>
#include <vector>
#include <QAbstractScrollArea>
#include "tracetreeitemowner.hpp"
using std::list;
-using std::unordered_map;
+using std::map;
using std::set;
using std::shared_ptr;
using std::vector;
shared_ptr<Signal> get_signal_by_signalbase(shared_ptr<data::SignalBase> base) const;
- virtual void clear_signals();
-
- void add_signal(const shared_ptr<Signal> signal);
+ virtual void clear_signalbases();
+ virtual void add_signalbase(const shared_ptr<data::SignalBase> signalbase);
+ virtual void remove_signalbase(const shared_ptr<data::SignalBase> signalbase);
#ifdef ENABLE_DECODE
virtual void clear_decode_signals();
virtual void remove_decode_signal(shared_ptr<data::DecodeSignal> signal);
#endif
+ void remove_trace(shared_ptr<Trace> trace);
+
shared_ptr<Signal> get_signal_under_mouse_cursor() const;
/**
const Ruler* ruler() const;
virtual void save_settings(QSettings &settings) const;
-
virtual void restore_settings(QSettings &settings);
/**
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.
TraceTreeItemOwner* find_prevalent_trace_group(
const shared_ptr<sigrok::ChannelGroup> &group,
- const unordered_map<shared_ptr<data::SignalBase>,
- shared_ptr<Signal> > &signal_map);
+ const map<shared_ptr<data::SignalBase>, shared_ptr<Signal> > &signal_map);
static vector< shared_ptr<Trace> >
extract_new_traces_for_channels(
const vector< shared_ptr<sigrok::Channel> > &channels,
- const unordered_map<shared_ptr<data::SignalBase>,
- shared_ptr<Signal> > &signal_map,
+ const map<shared_ptr<data::SignalBase>, shared_ptr<Signal> > &signal_map,
set< shared_ptr<Trace> > &add_list);
void determine_time_unit();
QShortcut *grab_ruler_left_shortcut_, *grab_ruler_right_shortcut_;
QShortcut *cancel_grab_shortcut_;
+ mutable mutex signal_mutex_;
vector< shared_ptr<Signal> > signals_;
#ifdef ENABLE_DECODE
} // namespace views
} // namespace pv
-#endif // PULSEVIEW_PV_VIEWS_TRACEVIEW_VIEW_HPP
+#endif // PULSEVIEW_PV_VIEWS_TRACE_VIEW_HPP