/** * Deletes a node from the graph (alogn with all edges connected to this * node). * The node removed is the one over which the context menu was invoked. * This slot is connected to the "Remove" popup menu action. */ void GraphWidget::slotRemoveNode() { GraphNode* pNode; // Make sure the menu item is a node pNode = dynamic_cast<GraphNode*>(m_pMenuItem); if (pNode == NULL) return; // Remove all incoming edges pNode->removeInEdges(); // Remove the node (also deletes the object and its outgoing edges) m_dictNodes.remove(pNode->getFunc()); // Redraw the graph draw(); }
/** * Shows a list of function calls to the current node. * The list is displayed in a query dialogue. The user can the select which * calls should be displayed in the graph. * This slot is connected to the "List Calling Functions" popup menu * action. */ void GraphWidget::slotListCalling() { GraphNode* pNode; // Make sure the menu item is a node pNode = dynamic_cast<GraphNode*>(m_pMenuItem); if (pNode == NULL) return; QueryViewDlg dlg(0, (QWidget*)parent()); // Show the query view dialogue dlg.query(CscopeFrontend::Calling, pNode->getFunc()); if (dlg.exec() != QDialog::Accepted) return; // The OK button was clicked, replace current calls with the listed ones pNode->removeInEdges(); QueryView::Iterator itr; CallData data; data.m_sCallee = pNode->getFunc(); // Add all listed calls for (itr = dlg.getIterator(); !itr.isEOF(); itr.next()) { data.m_sCaller = itr.getFunc(); data.m_sFile = itr.getFile(); data.m_sLine = itr.getLine(); data.m_sText = itr.getText(); addCall(data); } // Clean-up and redraw the graph removeDisconnected(pNode); draw(); }