#include #include #include #include #include #include #include "mygraph.h" #include "point.h" #include "line.h" #include "Xroutines.h" static void parse_command(Widget where, XtPointer cd, XtPointer cld); void parse_text(char * ch, environment * env); static void drawing_board_expose(Widget where, XtPointer cd, XtPointer cld) { } main (int argc, char * argv[]) { XtAppContext app_context; Widget toplevel,main_form,dialog_box; Arg args[10]; int nargs=0; environment env; env.xmax = 400; env.ymax = 400; toplevel = XtAppInitialize(&app_context,NULL,NULL,0, &argc,argv,NULL,args,nargs); nargs = 0; XtSetArg(args[nargs],XmNshowSeparator,True); nargs++; main_form = XtCreateManagedWidget("form",xmMainWindowWidgetClass, toplevel,args,nargs); XtManageChild(main_form); nargs=0; XtSetArg(args[nargs],XmNwidth,env.xmax); nargs++; XtSetArg(args[nargs],XmNheight,env.ymax); nargs++; env.db = XtCreateManagedWidget("msgs",xmDrawingAreaWidgetClass, main_form, args,nargs); XtManageChild(env.db); XtAddCallback(env.db,XmNexposeCallback, drawing_board_expose,&env); setup_environment(&env); nargs = 0; dialog_box = XmCreateTextField(main_form,"Command",args,nargs); XtManageChild(dialog_box); XtAddCallback(dialog_box,XmNactivateCallback,parse_command ,&env); XmMainWindowSetAreas(main_form, NULL, dialog_box, NULL, NULL, env.db); XtRealizeWidget(toplevel); XtAppMainLoop(app_context); } static void parse_command(Widget where, XtPointer cd, XtPointer cld) { char * p; char * value; value = NULL; p = XmTextFieldGetString(where); XmTextFieldSetString(where,value); parse_text(p,(environment *) cd); } void parse_text(char * ch, environment * env) { char * tolk1; tolk1 = strtok(ch," "); printf("%s\n",tolk1); while(tolk1!=NULL) { printf("%s\n",tolk1); if (!strcmp("quit",tolk1)) { exit(0); } if (!strcmp("line",tolk1)) { line ln; ln.e1.x = atoi(strtok(NULL," ")); ln.e1.y = atoi(strtok(NULL," ")); ln.e2.x = atoi(strtok(NULL," ")); ln.e2.y = atoi(strtok(NULL," ")); dc_draw_line(ln,env); } if (!strcmp("point",tolk1)) { point pt; pt.x = atoi(strtok(NULL," ")); pt.y = atoi(strtok(NULL," ")); dc_draw_point(pt,env); } tolk1 = strtok(NULL," "); printf("%s\n",tolk1); if(tolk1==NULL) {printf("NULL %s\n",tolk1);} else { if(!strcmp(";",tolk1)) { printf("SEMICOLON %s\n",tolk1); tolk1 = strtok(NULL," "); } } } }