| 593 | } |
| 594 | |
| 595 | std::vector<QString> CurveTreeView::selectedCurveNamesRecursive() const { |
| 596 | std::vector<QString> names; |
| 597 | std::function<void(QTreeWidgetItem*)> collect = [&](QTreeWidgetItem* item) { |
| 598 | const QString full = curveNameForItem(item); |
| 599 | if (!full.isEmpty() && !isValueOnlyItem(item)) { |
| 600 | names.push_back(full); |
| 601 | } |
| 602 | if (isObjectTopicItem(item)) { |
| 603 | return; |
| 604 | } |
| 605 | for (int i = 0; i < item->childCount(); ++i) { |
| 606 | collect(item->child(i)); |
| 607 | } |
| 608 | }; |
| 609 | for (auto* item : selectedItems()) { |
| 610 | collect(item); |
| 611 | } |
| 612 | normalizeCurveNames(names); |
| 613 | return names; |
| 614 | } |
| 615 | |
| 616 | std::vector<QString> CurveTreeView::selectedCatalogKeysRecursive() const { |
| 617 | std::vector<QString> keys; |