#include <cmath>
#include <iostream>
#include <iterator>
-#include <unordered_set>
#include <QApplication>
#include <QDebug>
using std::set;
using std::set_difference;
using std::shared_ptr;
-using std::unordered_map;
-using std::unordered_set;
using std::vector;
namespace pv {
GlobalSettings::add_change_handler(this);
// Set up metadata objects and event handlers
- if (is_main_view)
+ if (is_main_view) {
session_.metadata_obj_manager()->create_object(MetadataObjMainViewRange);
-
+ session_.metadata_obj_manager()->create_object(MetadataObjMousePos);
+ }
// Set up UI event handlers
connect(scrollarea_->horizontalScrollBar(), SIGNAL(valueChanged(int)),
TraceTreeItemOwner* View::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)
{
assert(group);
- unordered_set<TraceTreeItemOwner*> owners;
+ set<TraceTreeItemOwner*> owners;
vector<TraceTreeItemOwner*> owner_list;
// Make a set and a list of all the owners
vector< shared_ptr<Trace> > View::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)
{
vector< shared_ptr<Trace> > filtered_traces;
for (const shared_ptr<TraceTreeItem>& r : trace_tree_items)
r->hover_point_changed(hover_point_);
- // Notify any other listeners
+ // Notify this view's listeners
hover_point_changed(hover_widget_, hover_point_);
+
+ // Hover point is -1 when invalid and 0 for the header
+ if (hover_point_.x() > 0) {
+ // Notify global listeners
+ pv::util::Timestamp mouse_time = offset_ + hover_point_.x() * scale_;
+ int64_t sample_num = (mouse_time * session_.get_samplerate()).convert_to<int64_t>();
+
+ MetadataObject* md_obj =
+ session_.metadata_obj_manager()->find_object_by_type(MetadataObjMousePos);
+ md_obj->set_value(MetadataValueStartSample, QVariant((qlonglong)sample_num));
+ }
}
void View::row_item_appearance_changed(bool label, bool content)
inserter(remove_traces, remove_traces.begin()));
// Make a look-up table of sigrok Channels to pulseview Signals
- unordered_map<shared_ptr<data::SignalBase>, shared_ptr<Signal> >
- signal_map;
+ map<shared_ptr<data::SignalBase>, shared_ptr<Signal> > signal_map;
for (const shared_ptr<Signal>& sig : signals_)
signal_map[sig->base()] = sig;
// Add and position the pending top levels items
int offset = v_extents().second;
- for (auto item : new_top_level_items) {
+ for (shared_ptr<TraceTreeItem> item : new_top_level_items) {
add_child_item(item);
// Position the item after the last item or at the top if there is none