3#include "nodes/QConnection"
23 auto inputs =
mNode->getImportNodes();
24 auto input_num = inputs.size();
27 for (
int i = 0; i < inputs.size(); i++)
29 mNodeInport[i] = std::make_shared<QtImportNode>(inputs[i]);
38 for (
int i = 0; i < fOutputs.size(); i++)
40 mFieldExport[i] = std::make_shared<QtFieldData>(fOutputs[i]);
47 for (
int i = 0; i < fInputs.size(); i++)
49 mFieldInport[i] = std::make_shared<QtFieldData>(fInputs[i]);
87 std::string str = inputFields[portIndex -
mNodeInport.size()]->getClassName();
89 if (str ==
"FInstance" || str ==
"FInstances")
101 if (portIndex == 0) {
107 std::string str = outputFields[portIndex - 1]->getClassName();
109 if (str ==
"FInstance" || str ==
"FInstances")
127 std::shared_ptr<QtNodeData>
130 return port == 0 ? std::static_pointer_cast<QtNodeData>(
mNodeExport) : std::static_pointer_cast<QtNodeData>(
mFieldExport[port - 1]);
156 Q_UNUSED(portType); Q_UNUSED(portIndex);
176 if (portIndex == 0) {
198 auto nodeTip = [&](
Node* node) -> QString {
199 return QString::fromStdString(node->getClassInfo()->getClassName());
202 auto fieldTip = [&](
FBase* f) -> QString {
203 tip +=
"Class: " + f->getClassName() +
"\n";
204 tip +=
"Template: " + f->getTemplateName() +
"\n";
206 return QString::fromStdString(tip);
217 return fieldTip(inputFields[portIndex -
mNodeInport.size()]);
222 if (portIndex == 0) {
223 return nodeTip(
mNode.get());
227 return fieldTip(outputFields[portIndex - 1]);
244 auto node_port = std::dynamic_pointer_cast<QtExportNode>(data);
246 if (node_port !=
nullptr)
248 auto nd = node_port->getNode();
253 nd->disconnect(
mNodeInport[portIndex]->getNodePort());
261 nd->connect(
mNodeInport[portIndex]->getNodePort());
267 auto fieldData = std::dynamic_pointer_cast<QtFieldData>(data);
269 if (fieldData !=
nullptr)
271 auto field = fieldData->getField();
298 auto nodeExp = std::dynamic_pointer_cast<QtExportNode>(nodeData);
300 if (nodeExp ==
nullptr)
305 return nodeInp->getNodePort()->isKindOf(nodeExp->getNode().get());;
307 catch (std::bad_cast)
316 auto fieldExp = std::dynamic_pointer_cast<QtFieldData>(nodeData);
317 if (fieldExp ==
nullptr)
322 auto fIn = fieldInp->getField();
323 auto fExp = fieldExp->getField();
328 if (instIn !=
nullptr && instOut !=
nullptr)
330 else if (instIn ==
nullptr && instOut ==
nullptr)
332 return fIn->getClassName() == fExp->getClassName() && fIn->getTemplateName() == fExp->getTemplateName();
338 catch (std::bad_cast)
354 auto portType =
mNodeInport[portIndex]->getNodePort()->getPortType();
362 return fieldInp->getField()->inputPolicy() ==
FBase::One ? ConnectionPolicy::One : ConnectionPolicy::Many;
383 return mNode->getOutputFields();
388 return mNode->getInputFields();
virtual bool canBeConnectedBy(InstanceBase *ins)=0
static const std::string className()
QString FormatBlockCaptionName(std::string name)
QString FormatDescription(std::string name)
QString FormatBlockPortName(std::string name)