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]);;
64 if (portType == PortType::In)
83 return NodeDataType{
"port",
"port", PortShape::Bullet };
87 std::string str = inputFields[portIndex -
mNodeInport.size()]->getClassName();
89 return NodeDataType{ str.c_str(), str.c_str(), PortShape::Point };
96 return NodeDataType{
"port",
"port", PortShape::Bullet };
100 std::string str = outputFields[portIndex - 1]->getClassName();
102 return NodeDataType{ str.c_str(), str.c_str(), PortShape::Point };
111 return NodeDataType{
"port",
"port", PortShape::Point };
114 std::shared_ptr<QtNodeData>
117 return port == 0 ? std::static_pointer_cast<QtNodeData>(
mNodeExport) : std::static_pointer_cast<QtNodeData>(
mFieldExport[port - 1]);
143 Q_UNUSED(portType); Q_UNUSED(portIndex);
163 if (portIndex == 0) {
183 auto nodeTip = [&](
Node* node) -> QString {
184 return QString::fromStdString(node->getClassInfo()->getClassName());
187 auto fieldTip = [&](
FBase* f) -> QString {
188 tip +=
"Class: " + f->getClassName() +
"\n";
189 tip +=
"Template: " + f->getTemplateName() +
"\n";
191 return QString::fromStdString(tip);
202 return fieldTip(inputFields[portIndex -
mNodeInport.size()]);
207 if (portIndex == 0) {
208 return nodeTip(
mNode.get());
212 return fieldTip(outputFields[portIndex - 1]);
229 auto node_port = std::dynamic_pointer_cast<QtExportNode>(data);
231 if (node_port !=
nullptr)
233 auto nd = node_port->getNode();
235 if (node_port->connectionType() == CntType::Break)
238 nd->disconnect(
mNodeInport[portIndex]->getNodePort());
241 data->setConnectionType(CntType::Link);
246 nd->connect(
mNodeInport[portIndex]->getNodePort());
252 auto fieldData = std::dynamic_pointer_cast<QtFieldData>(data);
254 if (fieldData !=
nullptr)
256 auto field = fieldData->getField();
258 if (fieldData->connectionType() == CntType::Break)
261 fieldData->setConnectionType(CntType::Link);
283 auto nodeExp = std::dynamic_pointer_cast<QtExportNode>(nodeData);
285 if (nodeExp ==
nullptr)
290 return nodeInp->getNodePort()->isKindOf(nodeExp->getNode().get());;
292 catch (std::bad_cast)
301 auto fieldExp = std::dynamic_pointer_cast<QtFieldData>(nodeData);
302 if (fieldExp ==
nullptr)
307 if (fieldInp->getField()->getClassName() == fieldExp->getField()->getClassName())
309 std::string className = fieldInp->getField()->getClassName();
315 if (instIn !=
nullptr && instOut !=
nullptr)
321 return fieldInp->getField()->getTemplateName() == fieldExp->getField()->getTemplateName();
328 catch (std::bad_cast)
344 auto portType =
mNodeInport[portIndex]->getNodePort()->getPortType();
350 return ConnectionPolicy::One;
371 return mNode->getOutputFields();
376 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)