void TOPPASToolVertex::editParam() { QWidget* parent_widget = qobject_cast<QWidget*>(scene()->parent()); String default_dir = ""; // use a copy for editing Param edit_param(param_); QVector<String> hidden_entries; // remove entries that are handled by edges already, user should not see them QVector<IOInfo> input_infos; getInputParameters(input_infos); for (ConstEdgeIterator it = inEdgesBegin(); it != inEdgesEnd(); ++it) { int index = (*it)->getTargetInParam(); if (index < 0) { continue; } const String& name = input_infos[index].param_name; if (edit_param.exists(name)) { hidden_entries.push_back(name); } } QVector<IOInfo> output_infos; getOutputParameters(output_infos); for (ConstEdgeIterator it = outEdgesBegin(); it != outEdgesEnd(); ++it) { int index = (*it)->getSourceOutParam(); if (index < 0) { continue; } const String& name = output_infos[index].param_name; if (edit_param.exists(name)) { hidden_entries.push_back(name); } } // remove entries explained by edges foreach(const String &name, hidden_entries) { edit_param.remove(name); }
void TOPPASMergerVertex::markUnreachable() { //only mark as unreachable if all inputs are unreachable. otherwise the dead inputs will just be ignored. bool some_input_reachable_ = false; for (ConstEdgeIterator it = inEdgesBegin(); it != inEdgesEnd(); ++it) { TOPPASVertex * tv = (*it)->getSourceVertex(); if (tv->isReachable()) { some_input_reachable_ = true; break; } } if (!some_input_reachable_) { TOPPASVertex::markUnreachable(); } }