Node *WordGraph::addNode(const QString &nodeId, NodeFactory &factory) { if (m_nodes.contains(nodeId)) return m_nodes[nodeId]; Node *node = factory.createNode(nodeId, this); m_nodes[nodeId] = node; signalChange(); return node; }
void WordGraph::enableEdge(Edge *edge) { if (!edge || !m_disabledEdges.contains(edge->id()) || !isEnabled(edge->source()) || !isEnabled(edge->dest())) return; edge->source()->m_edges.insert(edge); edge->dest()->m_edges.insert(edge); m_disabledEdges.remove(edge->id()); signalChange(); }
Edge *WordGraph::addEdge(const QString &aNodeId, const QString &bNodeId, EdgeFactory &factory) { QString edgeId = aNodeId + "-" + bNodeId; QString edgeId2 = bNodeId + "-" + aNodeId; bool hasEdge = m_edges.contains(edgeId) || m_edges.contains(edgeId2); bool hasNodes = m_nodes.contains(aNodeId) && m_nodes.contains(bNodeId); Edge *edge = 0; if (!hasEdge && hasNodes) { edge = factory.createEdge(edgeId, m_nodes[aNodeId], m_nodes[bNodeId], this); m_edges[edgeId] = edge; signalChange(); } return m_edges.contains(edgeId) ? m_edges[edgeId] : m_edges[edgeId2]; }
void WordGraph::enableNode(Node *node) { if (!node || !m_disabledNodes.contains(node->id())) return; m_disabledNodes.remove(node->id()); QSet<Edge*>::iterator iter = node->m_edges.begin(); for (; iter != node->m_edges.end(); ++iter) { Edge *edge = *iter; edge->adjacentNode(node)->m_edges.insert(edge); } signalChange(); }
void WordGraph::disableEdge(Edge *edge) { if (!edge || !m_edges.contains(edge->id())) return; // If the source node or destination node are disabled then // this edge is implicitely disabled. if (!isEnabled(edge->source()) || !isEnabled(edge->dest())) return; edge->source()->m_edges.remove(edge); edge->dest()->m_edges.remove(edge); m_disabledEdges.insert(edge->id()); signalChange(); }
void WordGraph::clearAll() { NodeIterator nodeIterEnd = m_nodes.end(); for (NodeIterator nodeIter = m_nodes.begin(); nodeIter != nodeIterEnd; ++nodeIter) delete (*nodeIter); EdgeIterator edgeIterEnd = m_edges.end(); for (EdgeIterator edgeIter = m_edges.begin(); edgeIter != edgeIterEnd; ++edgeIter) delete (*edgeIter); m_nodes.clear(); m_edges.clear(); m_disabledNodes.clear(); signalChange(); }
void ChanButton::slotChange(QAction*) { qDebug( "ChanButton::slotChange(QAction*) id = %d", id ); qDebug("%d", width( ) ); SetNameDialog * dialog = new SetNameDialog ( this , text() ); connect( dialog , SIGNAL(TextSig(QString)), this, SLOT(setText(QString))); if ( dialog->exec() ) { qDebug( "dialog -- OK" ); } else { qDebug( "dialog -- Cansel" ); } emit signalChange( id ); };
void WordGraph::enableAll() { QSet<QString>::iterator iter = m_disabledNodes.begin(); QSet<QString>::iterator disabledIterEnd = m_disabledNodes.end(); while (iter != disabledIterEnd) { Node *node = m_nodes[*iter]; iter = m_disabledNodes.erase(iter); QSet<Edge*>::iterator iter; QSet<Edge*>::iterator nodesIterEnd = node->m_edges.end(); for (iter = node->m_edges.begin(); iter != nodesIterEnd; ++iter) { Edge *edge = *iter; edge->adjacentNode(node)->m_edges.insert(edge); } } foreach (QString edgeId, m_disabledEdges) enableEdge(m_edges[edgeId]); m_disabledEdges.clear(); signalChange(); }