#include "xcddraw.h" #include #include #include #include #include #include void redrawCallback(Widget w,XtPointer,XtPointer); void GraphicsObject::helpPopupMenu(XEvent* e,int x,int y) { } void infoCallback(Widget w,XtPointer,XtPointer) { selected_object->doubleClickPopup(); } void delCallback(Widget w,XtPointer,XtPointer) { /* delete */ int done = 0; selected_object->deleteObject(done); if (done && (selected_object->get_selected_flag() == SELECT_EDGE || selected_object->get_selected_flag() == SELECT_VERTEX || selected_object->get_selected_flag() == SELECT_EDGE_END_POINT || selected_object->get_selected_flag() == SELECT_EDGE_START_POINT || selected_object->get_selected_flag() == SELECT_EDGE_LABEL)) { delete selected_object; selected_object = NULL; } redraw(); } void ConstructionVertex::helpPopupMenu(XEvent* e,int x,int y) { Widget popupMenu = XmCreateSimplePopupMenu(draw_area,"Menu",NULL,0); XtManageChild(XmCreateLabelGadget(popupMenu,"Vertex",NULL,0)); int n = 0; XtSetArg(wargs[n],XmNseparatorType ,XmDOUBLE_LINE); n++; XtManageChild(XmCreateSeparatorGadget(popupMenu,"Construction Vertex",wargs,n)); Widget redisp = XmCreatePushButton(popupMenu,"Redisplay",NULL,0); XtManageChild(redisp); Widget info=XmCreatePushButton(popupMenu,"Info",NULL,0); XtManageChild(info); Widget delv =XmCreatePushButton(popupMenu,"Delete",NULL,0); XtManageChild(delv); XtAddCallback(redisp,XmNactivateCallback, (XtCallbackProc)redrawCallback,NULL); XtAddCallback(info,XmNactivateCallback, (XtCallbackProc)infoCallback,NULL); XtAddCallback(delv,XmNactivateCallback, (XtCallbackProc)delCallback,NULL); XmMenuPosition(popupMenu,(XButtonPressedEvent*) e); XtManageChild(popupMenu); } void AlternationVertex::helpPopupMenu(XEvent* e,int x,int y) { Widget popupMenu = XmCreateSimplePopupMenu(draw_area,"Menu",NULL,0); XtManageChild(XmCreateLabelGadget(popupMenu,"Vertex",NULL,0)); int n = 0; XtSetArg(wargs[n],XmNseparatorType ,XmDOUBLE_LINE); n++; XtManageChild(XmCreateSeparatorGadget(popupMenu,"Alternation Vertex",wargs,n)); Widget redisp = XmCreatePushButton(popupMenu,"Redisplay",NULL,0); XtManageChild(redisp); Widget info=XmCreatePushButton(popupMenu,"Info",NULL,0); XtManageChild(info); Widget delv =XmCreatePushButton(popupMenu,"Delete",NULL,0); XtManageChild(delv); XtAddCallback(redisp,XmNactivateCallback, (XtCallbackProc)redrawCallback,NULL); XtAddCallback(info,XmNactivateCallback, (XtCallbackProc)infoCallback,NULL); XtAddCallback(delv,XmNactivateCallback, (XtCallbackProc)delCallback,NULL); XmMenuPosition(popupMenu,(XButtonPressedEvent*) e); XtManageChild(popupMenu); } void VertexObject::helpPopupMenu(XEvent* e,int x,int y) { Widget popupMenu = XmCreateSimplePopupMenu(draw_area,"Menu",NULL,0); XtManageChild(XmCreateLabelGadget(popupMenu,"Vertex",NULL,0)); int n = 0; XtSetArg(wargs[n],XmNseparatorType ,XmDOUBLE_LINE); n++; XtManageChild(XmCreateSeparatorGadget(popupMenu,"Alternation Vertex",wargs,n)); Widget redisp = XmCreatePushButton(popupMenu,"Redisplay",NULL,0); XtManageChild(redisp); Widget info=XmCreatePushButton(popupMenu,"Info",NULL,0); XtManageChild(info); Widget delv =XmCreatePushButton(popupMenu,"Delete",NULL,0); XtManageChild(delv); XtAddCallback(redisp,XmNactivateCallback, (XtCallbackProc)redrawCallback,NULL); XtAddCallback(info,XmNactivateCallback, (XtCallbackProc)infoCallback,NULL); XtAddCallback(delv,XmNactivateCallback, (XtCallbackProc)delCallback,NULL); XmMenuPosition(popupMenu,(XButtonPressedEvent*) e); XtManageChild(popupMenu); } void EdgeObject::helpPopupMenu(XEvent* e,int x,int y) { XmString redisp_str, delete_str, info_str, title_str; Widget popupMenu; switch (this->get_selected_flag()) { case SELECT_EDGE_START_POINT: { Widget popupMenu = XmCreateSimplePopupMenu(draw_area,"Menu",NULL,0); XtManageChild(XmCreateLabelGadget(popupMenu,"Start Point",NULL,0)); int n = 0; XtSetArg(wargs[n],XmNseparatorType ,XmDOUBLE_LINE); n++; XtManageChild(XmCreateSeparatorGadget(popupMenu,"Start Point",wargs,n)); Widget redisp = XmCreatePushButton(popupMenu,"Redisplay",NULL,0); XtManageChild(redisp); Widget info=XmCreatePushButton(popupMenu,"Info",NULL,0); XtManageChild(info); XtAddCallback(redisp,XmNactivateCallback, (XtCallbackProc)redrawCallback,NULL); XtAddCallback(info,XmNactivateCallback, (XtCallbackProc)infoCallback,NULL); XmMenuPosition(popupMenu,(XButtonPressedEvent*) e); XtManageChild(popupMenu); break; } case SELECT_EDGE_END_POINT: { Widget popupMenu = XmCreateSimplePopupMenu(draw_area,"Menu",NULL,0); XtManageChild(XmCreateLabelGadget(popupMenu,"End Point",NULL,0)); int n = 0; XtSetArg(wargs[n],XmNseparatorType ,XmDOUBLE_LINE); n++; XtManageChild(XmCreateSeparatorGadget(popupMenu,"End Point",wargs,n)); Widget redisp = XmCreatePushButton(popupMenu,"Redisplay",NULL,0); XtManageChild(redisp); Widget info=XmCreatePushButton(popupMenu,"Info",NULL,0); XtManageChild(info); XtAddCallback(redisp,XmNactivateCallback, (XtCallbackProc)redrawCallback,NULL); XtAddCallback(info,XmNactivateCallback, (XtCallbackProc)infoCallback,NULL); XmMenuPosition(popupMenu,(XButtonPressedEvent*) e); XtManageChild(popupMenu); break; } case SELECT_EDGE_INNER_POINT: { Widget popupMenu = XmCreateSimplePopupMenu(draw_area,"Menu",NULL,0); XtManageChild(XmCreateLabelGadget(popupMenu,"Inner Point",NULL,0)); int n = 0; XtSetArg(wargs[n],XmNseparatorType ,XmDOUBLE_LINE); n++; XtManageChild(XmCreateSeparatorGadget(popupMenu,"Inner Point",wargs,n)); Widget redisp = XmCreatePushButton(popupMenu,"Redisplay",NULL,0); XtManageChild(redisp); Widget info=XmCreatePushButton(popupMenu,"Info",NULL,0); XtManageChild(info); Widget delv =XmCreatePushButton(popupMenu,"Delete",NULL,0); XtManageChild(delv); XtAddCallback(redisp,XmNactivateCallback, (XtCallbackProc)redrawCallback,NULL); XtAddCallback(info,XmNactivateCallback, (XtCallbackProc)infoCallback,NULL); XtAddCallback(delv,XmNactivateCallback, (XtCallbackProc)delCallback,NULL); XmMenuPosition(popupMenu,(XButtonPressedEvent*) e); XtManageChild(popupMenu); break; } case SELECT_EDGE_LABEL: case SELECT_EDGE: { Widget popupMenu = XmCreateSimplePopupMenu(draw_area,"Menu",NULL,0); XtManageChild(XmCreateLabelGadget(popupMenu,"Edge",NULL,0)); int n = 0; XtSetArg(wargs[n],XmNseparatorType ,XmDOUBLE_LINE); n++; XtManageChild(XmCreateSeparatorGadget(popupMenu,"Edge",wargs,n)); Widget redisp = XmCreatePushButton(popupMenu,"Redisplay",NULL,0); XtManageChild(redisp); Widget info=XmCreatePushButton(popupMenu,"Info",NULL,0); XtManageChild(info); Widget delv =XmCreatePushButton(popupMenu,"Delete",NULL,0); XtManageChild(delv); XtAddCallback(redisp,XmNactivateCallback, (XtCallbackProc)redrawCallback,NULL); XtAddCallback(info,XmNactivateCallback, (XtCallbackProc)infoCallback,NULL); XtAddCallback(delv,XmNactivateCallback, (XtCallbackProc)delCallback,NULL); XmMenuPosition(popupMenu,(XButtonPressedEvent*) e); XtManageChild(popupMenu); break; } } }