Show traces in alphabetical order in plot context menus
This commit is contained in:
parent
a6df8c8c8b
commit
e36783bc9f
@ -122,6 +122,18 @@ std::vector<Trace *> TracePlot::activeTraces()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<Trace *> TracePlot::orderedTraces()
|
||||||
|
{
|
||||||
|
std::vector<Trace*> ordered;
|
||||||
|
for(auto t : traces) {
|
||||||
|
ordered.push_back(t.first);
|
||||||
|
}
|
||||||
|
sort(ordered.begin(), ordered.end(), [](Trace *l, Trace *r) -> bool {
|
||||||
|
return l->name() < r->name();
|
||||||
|
});
|
||||||
|
return ordered;
|
||||||
|
}
|
||||||
|
|
||||||
void TracePlot::contextMenuEvent(QContextMenuEvent *event)
|
void TracePlot::contextMenuEvent(QContextMenuEvent *event)
|
||||||
{
|
{
|
||||||
auto m = markerAtPosition(event->pos());
|
auto m = markerAtPosition(event->pos());
|
||||||
|
@ -50,6 +50,8 @@ protected:
|
|||||||
// need to be called in derived class constructor
|
// need to be called in derived class constructor
|
||||||
void initializeTraceInfo();
|
void initializeTraceInfo();
|
||||||
std::vector<Trace*> activeTraces();
|
std::vector<Trace*> activeTraces();
|
||||||
|
// returns a list of all traces in alphabetical order
|
||||||
|
std::vector<Trace*> orderedTraces();
|
||||||
// changes the graph settings to make it possible to display a specific trace. The trace is not aded yet
|
// changes the graph settings to make it possible to display a specific trace. The trace is not aded yet
|
||||||
virtual bool configureForTrace(Trace *t) { Q_UNUSED(t) return false; } // default implementation fails for all traces
|
virtual bool configureForTrace(Trace *t) { Q_UNUSED(t) return false; } // default implementation fails for all traces
|
||||||
void contextMenuEvent(QContextMenuEvent *event) override;
|
void contextMenuEvent(QContextMenuEvent *event) override;
|
||||||
|
@ -513,17 +513,17 @@ void TraceSmithChart::updateContextMenu()
|
|||||||
|
|
||||||
contextmenu->addSection("Traces");
|
contextmenu->addSection("Traces");
|
||||||
// Populate context menu
|
// Populate context menu
|
||||||
for(auto t : traces) {
|
for(auto t : orderedTraces()) {
|
||||||
if(!supported(t.first)) {
|
if(!supported(t)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
auto action = new QAction(t.first->name(), contextmenu);
|
auto action = new QAction(t->name(), contextmenu);
|
||||||
action->setCheckable(true);
|
action->setCheckable(true);
|
||||||
if(t.second) {
|
if(traces[t]) {
|
||||||
action->setChecked(true);
|
action->setChecked(true);
|
||||||
}
|
}
|
||||||
connect(action, &QAction::toggled, [=](bool active) {
|
connect(action, &QAction::toggled, [=](bool active) {
|
||||||
enableTrace(t.first, active);
|
enableTrace(t, active);
|
||||||
});
|
});
|
||||||
contextmenu->addAction(action);
|
contextmenu->addAction(action);
|
||||||
}
|
}
|
||||||
|
@ -196,17 +196,17 @@ void TraceWaterfall::updateContextMenu()
|
|||||||
|
|
||||||
contextmenu->addSection("Traces");
|
contextmenu->addSection("Traces");
|
||||||
// Populate context menu
|
// Populate context menu
|
||||||
for(auto t : traces) {
|
for(auto t : orderedTraces()) {
|
||||||
if(!supported(t.first)) {
|
if(!supported(t)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
auto action = new QAction(t.first->name(), contextmenu);
|
auto action = new QAction(t->name(), contextmenu);
|
||||||
action->setCheckable(true);
|
action->setCheckable(true);
|
||||||
if(t.second) {
|
if(traces[t]) {
|
||||||
action->setChecked(true);
|
action->setChecked(true);
|
||||||
}
|
}
|
||||||
connect(action, &QAction::toggled, [=](bool active) {
|
connect(action, &QAction::toggled, [=](bool active) {
|
||||||
enableTrace(t.first, active);
|
enableTrace(t, active);
|
||||||
});
|
});
|
||||||
contextmenu->addAction(action);
|
contextmenu->addAction(action);
|
||||||
}
|
}
|
||||||
|
@ -304,19 +304,19 @@ void TraceXYPlot::updateContextMenu()
|
|||||||
} else {
|
} else {
|
||||||
contextmenu->addSection("Secondary Traces");
|
contextmenu->addSection("Secondary Traces");
|
||||||
}
|
}
|
||||||
for(auto t : traces) {
|
for(auto t : orderedTraces()) {
|
||||||
// Skip traces that are not applicable for the selected axis type
|
// Skip traces that are not applicable for the selected axis type
|
||||||
if(!supported(t.first, yAxis[axis].getType())) {
|
if(!supported(t, yAxis[axis].getType())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto action = new QAction(t.first->name(), contextmenu);
|
auto action = new QAction(t->name(), contextmenu);
|
||||||
action->setCheckable(true);
|
action->setCheckable(true);
|
||||||
if(tracesAxis[axis].find(t.first) != tracesAxis[axis].end()) {
|
if(tracesAxis[axis].find(t) != tracesAxis[axis].end()) {
|
||||||
action->setChecked(true);
|
action->setChecked(true);
|
||||||
}
|
}
|
||||||
connect(action, &QAction::toggled, [=](bool active) {
|
connect(action, &QAction::toggled, [=](bool active) {
|
||||||
enableTraceAxis(t.first, axis, active);
|
enableTraceAxis(t, axis, active);
|
||||||
});
|
});
|
||||||
contextmenu->addAction(action);
|
contextmenu->addAction(action);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user