void ClassDiagramView::displayAddClassDialog() { AddClassDialog dialog; ClassNode *node = gClassDiagramView->getNode(gStartPosInfo.x, gStartPosInfo.y); if(node && node->getType()) { OovString title = "Add Class "; title += node->getType()->getName(); dialog.setTitle(title); } // Fill the dialog with the default radio button and selected class info. GtkWidget *radio = Builder::getBuilder()->getWidget("AddClassStandardRadiobutton"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), true); GtkWidget *relayout = Builder::getBuilder()->getWidget("AddClassRelayoutCheckbutton"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(relayout), false); // Even though the toggle was set above, it doesn't trigger unless it has changed. on_AddClassStandardRadiobutton_toggled(radio, nullptr); if(dialog.run(true)) { getDiagram().addRelatedNodesRecurse(getDiagram().getModelData(), dialog.getSelectedType(), dialog.getSelectedAddType()); updateGraph(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(relayout))); } }
bool ClassGraph::isNodeTypePresent(ClassNode const &node, std::vector<ClassNode> const &nodes) { auto nodeIter = std::find_if(nodes.begin(), nodes.end(), [&node](ClassNode const &existingNode) { return(node.getType() == existingNode.getType()); }); return (nodeIter != nodes.end()); }
extern "C" G_MODULE_EXPORT void on_GotoClassMenuitem_activate( GtkWidget * /*widget*/, gpointer /*data*/) { ClassNode *node = gClassDiagramView->getNode(gStartPosInfo.x, gStartPosInfo.y); if(node) { gClassDiagramView->gotoClass(node->getType()->getName()); } }
void ClassGraph::removeNode(const ClassNode &node) { for(size_t i=0; i<mNodes.size(); i++) { if(mNodes[i].getType() == node.getType()) { mNodes.erase(mNodes.begin() + i); break; } } mModified = true; }
extern "C" G_MODULE_EXPORT void on_ViewSourceMenuitem_activate( GtkWidget * /*widget*/, gpointer /*data*/) { ClassNode *node = gClassDiagramView->getNode(gStartPosInfo.x, gStartPosInfo.y); if(node) { const ModelClassifier *classifier = ModelClassifier::getClass(node->getType()); if(classifier && classifier->getModule()) { gClassDiagramView->viewSource(classifier->getModule()->getModulePath(), classifier->getLineNum()); } } }
void handleToggle(GtkWidget *widget, ClassGraph::eAddNodeTypes addType) { static int depth = 0; depth++; if(depth == 1) { if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { ClassNode *node = gClassDiagramView->getNode(gStartPosInfo.x, gStartPosInfo.y); if(node) { gClassDiagramView->selectAddClass(node->getType(), addType); } } } depth--; }
void handlePopup(ClassGraph::eAddNodeTypes addType) { static int depth = 0; depth++; if(depth == 1) { ClassNode *node = gClassDiagramView->getNode(gStartPosInfo.x, gStartPosInfo.y); if(node) { gClassDiagramView->getDiagram().addRelatedNodesRecurse( gClassDiagramView->getDiagram().getModelData(), node->getType(), addType); gClassDiagramView->updateGraph(true); } } depth--; }