void GraphConnection::deserialize(Poco::JSON::Object::Ptr obj) { auto outputId = QString::fromStdString(obj->getValue<std::string>("outputId")); auto inputId = QString::fromStdString(obj->getValue<std::string>("inputId")); auto outputKey = QString::fromStdString(obj->getValue<std::string>("outputKey")); auto inputKey = QString::fromStdString(obj->getValue<std::string>("inputKey")); auto draw = dynamic_cast<GraphDraw *>(this->parent()); assert(draw != nullptr); //resolve IO objects by id QPointer<GraphObject> inputObj = nullptr; QPointer<GraphObject> outputObj = nullptr; for (const auto obj : draw->getGraphObjects(false)) { if (obj->getId() == inputId) inputObj = obj; if (obj->getId() == outputId) outputObj = obj; } if (inputObj.isNull()) throw Pothos::Exception("GraphConnection::deserialize()", "cant resolve object with ID: '"+inputId.toStdString()+"'"); if (outputObj.isNull()) throw Pothos::Exception("GraphConnection::deserialize()", "cant resolve object with ID: '"+outputId.toStdString()+"'"); this->setupEndpoint(GraphConnectionEndpoint(inputObj, GraphConnectableKey(inputKey, true))); this->setupEndpoint(GraphConnectionEndpoint(outputObj, GraphConnectableKey(outputKey, false))); assert(this->getInputEndpoint().isValid()); assert(this->getOutputEndpoint().isValid()); GraphObject::deserialize(obj); }
GraphConnectableKey GraphObject::isPointingToConnectable(const QPointF &) const { return GraphConnectableKey(); }