Id RefactoringApplier::subprogramElementId() const { IdList result; IdList const after = elementsFromAfterBlock(); for (Id const &id : after) { if (mRefactoringRepoApi->isGraphicalElement(id) && (isNodeInRule(id))) result.append(id); } if (result.size() == 1) return result.first(); return Id::rootId(); }
qReal::ProjectConverter SaveConvertionManager::constructConverter(const QString &oldVersion , const QString &newVersion , const QList<LogicalFilter> &logicalFilters , const QList<GraphicalFilter> &graphicalFilters , const std::function<bool(const qReal::Id &)> &condition ) { return ProjectConverter(editor(), Version::fromString(oldVersion), Version::fromString(newVersion) , [=](GraphicalModelAssistInterface &graphicalApi, LogicalModelAssistInterface &logicalApi) { bool modificationsMade = false; for (const Id &block : elementsOfRobotsDiagrams(logicalApi)) { const Id logicalBlock = graphicalApi.isGraphicalId(block) ? graphicalApi.logicalId(block) : block; if (!condition(logicalBlock)) { continue; } for (const auto &filter : logicalFilters) { modificationsMade |= filter(logicalBlock, logicalApi); } if (graphicalFilters.isEmpty()) { // A small optimization not to count graphical id. continue; } Id graphicalBlock; if (graphicalApi.isGraphicalId(block)) { graphicalBlock = block; } else { const IdList graphicalIds = graphicalApi.graphicalIdsByLogicalId(logicalBlock); if (graphicalIds.isEmpty()) { continue; } graphicalBlock = graphicalIds.first(); } for (const auto &filter : graphicalFilters) { modificationsMade |= filter(graphicalBlock, graphicalApi); } } return modificationsMade ? ProjectConverter::Success : ProjectConverter::NoModificationsMade; }); }