Пример #1
0
std::shared_ptr<Node>
FlowScene::
restoreNode(Properties const &p)
{
  QString modelName;

  p.get("model_name", &modelName);

  auto const &models = DataModelRegistry::registeredModels();
  auto it = models.find(modelName);

  if (it == models.end())
    throw std::logic_error(std::string("No registered model with name ") +
                           modelName.toLocal8Bit().data());

  auto dataModel = it->second->create();
  auto node      = std::make_shared<Node>(std::move(dataModel));
  auto ngo       = std::make_unique<NodeGraphicsObject>(*this, node);
  node->setGraphicsObject(std::move(ngo));

  node->restore(p);

  _nodes[node->id()] = node;
  return node;
}
Пример #2
0
QtNodes::Node& GraphScene::load(const rcc::shared_ptr<aq::nodes::Node>& node, std::map<std::string, QtNodes::Node*>& nodemap){
    auto itr = nodemap.find(node->getTreeName());
    if(itr != nodemap.end()){
        return *itr->second;
    }
    rcc::shared_ptr<aq::nodes::Node> node_ = node;
    std::unique_ptr<aq::NodeProxy> datamodel;
    if(node_->GetInterface(aq::nodes::IFrameGrabber::s_interfaceID)){
        datamodel = std::make_unique<aq::FrameGrabberProxy>(node_);
    }else{
        datamodel = std::make_unique<aq::NodeProxy>(node_);
    }
    auto node_obj = std::make_unique<QtNodes::Node>(std::move(datamodel));
    auto ngo = std::make_unique<QtNodes::NodeGraphicsObject>(*this, *node_obj);
    node_obj->setGraphicsObject(std::move(ngo));
    auto nodePtr = node_obj.get();
    this->_nodes[node_obj->id()] = std::move(node_obj);

    nodeCreated(*nodePtr);
    auto nodes = node_->getChildren();
    for (const auto& node : nodes) {
        QtNodes::Node& created = load(node,nodemap);
        createConnection(created, 0, *nodePtr, 0);
    }
    nodemap[node->getTreeName()] = nodePtr;
    return *nodePtr;
}
Пример #3
0
std::shared_ptr<Node>
FlowScene::
createNode(std::unique_ptr<NodeDataModel> && dataModel)
{
  auto node = std::make_shared<Node>(std::move(dataModel));
  auto ngo  = std::make_unique<NodeGraphicsObject>(*this, node);

  node->setGraphicsObject(std::move(ngo));

  _nodes[node->id()] = node;

  return node;
}
Пример #4
0
std::shared_ptr<Connection>
FlowScene::
createConnection(PortType connectedPort,
                 std::shared_ptr<Node> node,
                 PortIndex portIndex)
{
  auto connection = std::make_shared<Connection>(connectedPort, node, portIndex);

  auto cgo = std::make_unique<ConnectionGraphicsObject>(*this, connection);

  // after this function connection points are set to node port
  connection->setGraphicsObject(std::move(cgo));

  _connections[connection->id()] = connection;

  return connection;
}
Пример #5
0
std::shared_ptr<Connection>
FlowScene::
restoreConnection(Properties const &p)
{

  QUuid nodeInId;
  QUuid nodeOutId;

  p.get("in_id", &nodeInId);
  p.get("out_id", &nodeOutId);

  PortIndex portIndexIn;
  PortIndex portIndexOut;

  p.get("in_index", &portIndexIn);
  p.get("out_index", &portIndexOut);

  auto nodeIn  = _nodes[nodeInId];
  auto nodeOut = _nodes[nodeOutId];

  auto connection =
    std::make_shared<Connection>(nodeIn,
                                 portIndexIn,
                                 nodeOut,
                                 portIndexOut);

  auto cgo = std::make_unique<ConnectionGraphicsObject>(*this, connection);

  nodeIn->nodeState().setConnection(PortType::In, portIndexIn, connection);
  nodeOut->nodeState().setConnection(PortType::Out, portIndexOut, connection);

  // trigger data propagation
  nodeOut->onDataUpdated(portIndexOut);

  // after this function connection points are set to node port
  connection->setGraphicsObject(std::move(cgo));

  _connections[connection->id()] = connection;

  return connection;
}
Пример #6
0
QtNodes::Node& GraphScene::load(const rcc::shared_ptr<aq::IDataStream>& ds){
    rcc::shared_ptr<aq::IDataStream> ds_ = ds;
    std::unique_ptr<aq::DataStreamProxy> datamodel(new aq::DataStreamProxy(ds));
    auto node = std::make_unique<QtNodes::Node>(std::move(datamodel));
    auto ngo = std::make_unique<QtNodes::NodeGraphicsObject>(*this, *node);
    node->setGraphicsObject(std::move(ngo));
    auto nodePtr = node.get();
    this->_nodes[node->id()] = std::move(node);

    nodeCreated(*nodePtr);
    std::map<std::string, QtNodes::Node*> nodemap;
    auto nodes = ds_->getTopLevelNodes();
    for(const auto& node : nodes){
        QtNodes::Node& created = load(node, nodemap);
        createConnection(created, 0, *nodePtr, 0);
    }
    // Make a pass through all the nodes and reconstruct input / output connections
    for(const auto& node : nodes){
        reconnectInputs(node, nodemap);
    }
    return *nodePtr;
}