void ComponentDiagramView::buttonReleaseEvent(const GdkEventButton *event)
    {
    if(event->button == 1)
        {
        ComponentNode *node = mComponentDiagram.getNode(
                gStartPosInfo.x, gStartPosInfo.y);
        if(node)
            {
            GraphPoint offset = gStartPosInfo;
            offset.sub(node->getRect().start);

            GraphPoint newPos = GraphPoint(static_cast<int>(event->x),
                static_cast<int>(event->y));
            newPos.sub(offset);

            node->setPos(newPos);
            mComponentDiagram.setModified();
            drawToDrawingArea();
            }
        }
    else
        {
        displayContextMenu(event->button, event->time, (gpointer)event);
        }
    }
Example #2
0
void ClassDiagramView::displayDrawContextMenu(guint button, guint32 acttime, gpointer data)
    {
    GdkEventButton *event = static_cast<GdkEventButton*>(data);
    ClassNode *node = getNode(static_cast<int>(event->x), static_cast<int>(event->y));
    OovStringRef const nodeMenus[] =
        {
        "GotoClassMenuitem", "ClassPreferencesMenuitem", "AddSelectedMenuitem",
        "AddStandardMenuitem", "AddAllMenuitem",
        "AddSuperclassesMenuitem", "AddSubclassesMenuitem",
        "AddMembersUsingMenuitem", "AddMemberUsersMenuitem",
        "AddTemplateMenuItem",
        "AddFuncParamsUsingMenuitem", "AddFuncParamUsersMenuitem",
        "AddFuncBodyVarUsingMenuitem", "AddFuncBodyVarUsersMenuitem",
        "RemoveClassMenuitem", "ViewSourceMenuitem"
        };
    Builder *builder = Builder::getBuilder();
    for(size_t i=0; i<sizeof(nodeMenus)/sizeof(nodeMenus[i]); i++)
        {
        gtk_widget_set_sensitive(builder->getWidget(
                nodeMenus[i]), node != nullptr);
        }

    GtkMenu *menu = builder->getMenu("DrawClassPopupMenu");
    gtk_menu_popup(menu, nullptr, nullptr, nullptr, nullptr, button, acttime);
    gStartPosInfo.set(static_cast<int>(event->x), static_cast<int>(event->y));
    }
Example #3
0
static void displayContextMenu(guint button, guint32 acttime, gpointer data)
    {
    GdkEventButton *event = static_cast<GdkEventButton*>(data);
    const OperationClass *node = gOperationDiagramView->getDiagram().getNode(
        static_cast<int>(event->x), static_cast<int>(event->y));
    const OperationCall *opcall = gOperationDiagramView->getDiagram().getOperation(
            gStartPosInfo.x, gStartPosInfo.y);
    OovStringRef const nodeitems[] =
        {
        "OperGotoClassMenuitem",
        "RemoveOperClassMenuitem",
        };
    Builder *builder = Builder::getBuilder();
    for(size_t i=0; i<sizeof(nodeitems)/sizeof(nodeitems[i]); i++)
        {
        gtk_widget_set_sensitive(builder->getWidget(nodeitems[i]),
                node != nullptr);
        }
    OovStringRef const operitems[] =
        {
        "OperGotoOperationMenuitem",
        "AddCallsMenuitem",
        "AddCallersMenuitem",
        "RemoveCallsMenuitem"
        };
    for(size_t i=0; i<sizeof(operitems)/sizeof(operitems[i]); i++)
        {
        gtk_widget_set_sensitive(builder->getWidget(operitems[i]),
                opcall != nullptr);
        }
    gtk_widget_set_sensitive(builder->getWidget("ViewOperSourceMenuitem"),
            opcall != nullptr || node != nullptr);

    GtkMenu *menu = builder->getMenu("DrawOperationPopupMenu");
    gtk_menu_popup(menu, nullptr, nullptr, nullptr, nullptr, button, acttime);
    gStartPosInfo.set(static_cast<int>(event->x), static_cast<int>(event->y));
    }
Example #4
0
void ZoneDiagramView::graphButtonPressEvent(const GdkEventButton *event)
    {
    sZoneDiagramView = this;
    sStartPosInfo.set(event->x, event->y);
    }
Example #5
0
void OperationDiagramView::graphButtonPressEvent(const GdkEventButton *event)
    {
    gOperationDiagramView = this;
    gStartPosInfo.set(static_cast<int>(event->x), static_cast<int>(event->y));
    }
void ComponentDiagramView::buttonPressEvent(const GdkEventButton *event)
    {
    gComponentDiagramView = this;
    gStartPosInfo.set(static_cast<int>(event->x),
        static_cast<int>(event->y));
    }
Example #7
0
void IncludeDiagramView::graphButtonPressEvent(const GdkEventButton *event)
    {
    sStartPosInfo.set(event->x, event->y);
    sIncludeDiagramView = this;
    }