void FPNode::setVisible( bool yes ) { if ( isVisible() == yes ) return; KtlQCanvasPolygon::setVisible(yes); const FlowConnectorList::iterator inputEnd = m_inFlowConnList.end(); for ( FlowConnectorList::iterator it = m_inFlowConnList.begin(); it != inputEnd; ++it ) { Connector *connector = *it; if ( connector ) { if ( isVisible() ) connector->setVisible ( true ); else { Node *node = connector->startNode(); connector->setVisible ( node && node->isVisible() ); } } } Connector *connector = m_outputConnector; if ( connector ) { if ( isVisible() ) connector->setVisible ( true ); else { Node *node = connector->endNode(); connector->setVisible ( node && node->isVisible() ); } } }
bool FPNode::isConnected( Node *node, NodeList *checkedNodes ) { if ( this == node ) return true; bool firstNode = !checkedNodes; if (firstNode) checkedNodes = new NodeList(); else if ( checkedNodes->contains(this) ) return false; checkedNodes->append(this); const FlowConnectorList::const_iterator inputEnd = m_inFlowConnList.end(); for ( FlowConnectorList::const_iterator it = m_inFlowConnList.begin(); it != inputEnd; ++it ) { Connector *connector = *it; if (connector) { Node *startNode = connector->startNode(); if ( startNode && startNode->isConnected( node, checkedNodes ) ) { if (firstNode) { delete checkedNodes; } return true; } } } Connector *connector = m_outputConnector; if ( connector ) { Node *endNode = connector->endNode(); if ( endNode && endNode->isConnected ( node, checkedNodes ) ) { if ( firstNode ) { delete checkedNodes; } return true; } } if (firstNode) { delete checkedNodes; } return false; }