Esempio n. 1
0
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;
}
Esempio n. 2
0
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();
}
Esempio n. 3
0
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];
}
Esempio n. 4
0
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();
}
Esempio n. 5
0
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();
}
Esempio n. 6
0
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();
}
Esempio n. 7
0
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 );
  
};
Esempio n. 8
0
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();
}