#include #include #include #include "object.h" #include #include #include /*#include */ #include "mygraph.h" #include "mydebug.h" #include "point.h" #include "line.h" #include "readobject.h" int DEBUG; static void drawing_board_expose(Widget where, XtPointer cd, XtPointer cld); static void parse_command(Widget where, XtPointer cd, XtPointer cld); void parse_text(char * ch, environment * env); main (int argc, char * argv[]) { XtAppContext app_context; Widget toplevel,main_form,dialog_box; char * filename; int nl; Arg args[10]; int nargs=0; XmString astring; environment env; DEBUG = NODEBUG; if (argc > 1) { nl = strlen(argv[1]); filename = (char *) strdup((char *)argv[1]); } else { filename = "data/model1"; } if (argc > 2) { env.mult = atof(argv[2]); } else { env.mult = 1; } /* Initialize the application */ toplevel = XtAppInitialize(&app_context,NULL,NULL,0, &argc,argv,NULL,args,nargs); /* Create a main form to hold everything */ nargs = 0; XtSetArg(args[nargs],XmNshowSeparator,True); nargs++; main_form = XtCreateManagedWidget("form",xmMainWindowWidgetClass, toplevel,args,nargs); XtManageChild(main_form); /* Set up the canvas for our work */ nargs=0; XtSetArg(args[nargs],XmNwidth,400); nargs++; XtSetArg(args[nargs],XmNheight,400); nargs++; env.db = XtCreateManagedWidget("msgs",xmDrawingAreaWidgetClass, main_form, args,nargs); XtManageChild(env.db); XtAddCallback(env.db,XmNexposeCallback, drawing_board_expose,&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); /* XtAddEventHandler(toplevel,(EventMask)0,True,_XEditResCheckMessages,NULL);*/ /* read_object(&(env.the_object),filename); */ XtAppMainLoop(app_context); } static void drawing_board_expose(Widget where, XtPointer cd, XtPointer cld) { draw_object ( (environment *) cd); } 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," "); if (!strcmp("quit",tolk1)) { exit(0); } if (!strcmp("load",tolk1)) { read_object(&(env->the_object),strtok(NULL," ")); Clear_Screen(env->db); drawing_board_expose(NULL,env,env); return; } if (!strcmp("scale",tolk1)) { if (NULL != (tolk1 = strtok(NULL," ")) ){ env->mult = atof(tolk1); Clear_Screen(env->db); drawing_board_expose(NULL,env,env); } return; } }