Example #1
0
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)));
        }
    }
Example #2
0
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());
    }
Example #3
0
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());
        }
    }
Example #4
0
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;
    }
Example #5
0
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());
            }
        }
    }
Example #6
0
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--;
    }
Example #7
0
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--;
    }