/* * XScrabble - X version of the popular board game, for 1 to 4 players. * * This software comes with NO warranty whatsoever. I therefore take no * responsibility for any damages, losses or problems caused through use * or misuse of this program. * * I hereby grant permission for this program to be freely copied and * distributed by any means, provided no charge is made for it. * * Matthew Chapman, csuoq@csv.warwick.ac.uk * Oct 1994. */ /* setup.c - gets setup details from user */ #include "scrab.h" #include "globals.h" #include "slate_green.xpm" #define TIME_INTS 7 #define HILIGHT "yellow" #define NORMAL "green" static char * helpstring = "Copyright 1992, \n\ Dan R. Greening, Didier Tallot, Phill Everson, and Martyn Shortley.\n\ \n"; void ShowHelp(); void Mode(); void Start(); void Quit(); void Tog_vis(); void Cycle(); char app_def_file[256]="XScrabble"; XtAppContext app_context; Widget topLevel,setup,num_ply,levels,curr_entry, lang_sel,bell_vol,help,help_frame,start,quit,sload, title,timetitle,nametitle,disptitle,typetitle, langtitle,belltitle,help_text, name[MAXPLAYERS],tog[MAXPLAYERS],disp[MAXPLAYERS],wtype[MAXPLAYERS], timet[TIME_INTS],help_item[8]; Pixmap bgxpm; XtTranslations storedt; int timevalue[TIME_INTS]; char cycle_text[NUM_TYPES+1][25]; char help_line[20][80]; static String curr_trans = "#override\n\ Tab: Move(t)\n\ Return: Move(r)\n\ CtrlR: no-op()\n\ CtrlS: no-op()\n\ MetaI: no-op()"; static String other_trans = "#override\n\ : KeyRedirect()"; char lang_str[80] = ""; void Quit() { XtDestroyApplicationContext(app_context); exit(0); } /* application data structure */ struct sAppData { int version; } sapp_data; /* option types and default values */ static XtResource resources[] = { {"version","Version",XtRInt,sizeof(int),XtOffsetOf(struct sAppData,version), XtRImmediate,(XtPointer) 0}, }; int Tog2Int() { /* get selected toggle, and convert to int */ char sw[5]; strcpy(sw,XawToggleGetCurrent(tog[0])); return (sw[3] - '0'+1); } void MakeNotCurrent() { XtVaSetValues(curr_entry,XtNtranslations, XtParseTranslationTable(other_trans),SETBG(NORMAL),NULL); XawTextDisplayCaret(curr_entry,False); } void MakeCurrent() { XtVaSetValues(curr_entry,XtNtranslations,storedt,SETBG(HILIGHT),NULL); XawTextDisplayCaret(curr_entry,True); } void KeyRedirect(Widget w, XEvent *event,String *params,Cardinal num_params) { if (w!=curr_entry) { event->xany.window = XtWindow(curr_entry); XtDispatchEvent(event); } } void Move(Widget w, XEvent *event,String *params,Cardinal num_params) { int wnum=0,i,isname=True; Boolean istab = (params[0][0] == 't'); for (i=0; i0) sprintf(&com[strlen(com)]," -n%d \"%.14s\"",i+1,ply_name); if (strlen(disp_name)>0) sprintf(&com[strlen(com)]," -d%d %s",i+1,disp_name); for (j=0; j0) { sprintf(&com[strlen(com)]," -language %s",lang_name); } if (strlen(bell_answer)>0) { ptr=malloc(16); bell_level=strtol(bell_answer,ptr,10); if (**ptr==0) { if (bell_level<0) bell_level=0; if (bell_level>100) bell_level=100; sprintf(&com[strlen(com)]," -bell %d",bell_level); } } if (w==sload) strcat(com," -load"); strcat(com," &"); printf("%s\n",com); system(com); /* XtDestroyWidget(topLevel); exit(0); */ } void load_pixmap(char *fname, Pixmap *xpm,Widget top) { int status; XpmAttributes attr; Pixmap mask; attr.valuemask = XpmReturnPixels | XpmCloseness; status = XpmReadFileToPixmap(XtDisplay(top), DefaultRootWindow(XtDisplay(top)),fname,xpm,&mask,&attr); if (status != XpmSuccess) { fprintf(stderr,"Pixmap error: %s\n",XpmGetErrorString(status)); exit(0); } } void bg_pixmap(Widget w) { XtVaSetValues(w,XtNbackgroundPixmap, (XtArgVal)bgxpm, NULL); }