Milestone 3
This commit is contained in:
parent
2edd7a366a
commit
282136632e
3 changed files with 62 additions and 19 deletions
|
|
@ -100,6 +100,32 @@ void WarpGraphModel::addConnection(
|
|||
if (!connectionPossible(connectionId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_client) {
|
||||
auto outIt = m_nodes.find(connectionId.outNodeId);
|
||||
auto inIt = m_nodes.find(connectionId.inNodeId);
|
||||
if (outIt == m_nodes.end() || inIt == m_nodes.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto outIdx = static_cast<size_t>(connectionId.outPortIndex);
|
||||
auto inIdx = static_cast<size_t>(connectionId.inPortIndex);
|
||||
if (outIdx >= outIt->second.outputPorts.size() ||
|
||||
inIdx >= inIt->second.inputPorts.size()) {
|
||||
return;
|
||||
}
|
||||
|
||||
warppipe::PortId outPortId = outIt->second.outputPorts[outIdx].id;
|
||||
warppipe::PortId inPortId = inIt->second.inputPorts[inIdx].id;
|
||||
|
||||
auto result = m_client->CreateLink(outPortId, inPortId, warppipe::LinkOptions{});
|
||||
if (!result.ok()) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_linkIdToConn.emplace(result.value.id.value, connectionId);
|
||||
}
|
||||
|
||||
m_connections.insert(connectionId);
|
||||
Q_EMIT connectionCreated(connectionId);
|
||||
}
|
||||
|
|
@ -224,6 +250,18 @@ bool WarpGraphModel::deleteConnection(
|
|||
if (it == m_connections.end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (m_client && !m_refreshing) {
|
||||
for (auto linkIt = m_linkIdToConn.begin(); linkIt != m_linkIdToConn.end();
|
||||
++linkIt) {
|
||||
if (linkIt->second == connectionId) {
|
||||
m_client->RemoveLink(warppipe::LinkId{linkIt->first});
|
||||
m_linkIdToConn.erase(linkIt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_connections.erase(it);
|
||||
Q_EMIT connectionDeleted(connectionId);
|
||||
return true;
|
||||
|
|
@ -269,6 +307,7 @@ void WarpGraphModel::refreshFromClient() {
|
|||
return;
|
||||
}
|
||||
|
||||
m_refreshing = true;
|
||||
auto nodesResult = m_client->ListNodes();
|
||||
if (!nodesResult.ok()) {
|
||||
return;
|
||||
|
|
@ -450,6 +489,8 @@ void WarpGraphModel::refreshFromClient() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_refreshing = false;
|
||||
}
|
||||
|
||||
const WarpNodeData *
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue