#include "xsb.h" #include "startup.h" extern struct Library *XSBBase; extern char xsbname[]; static struct TextAttr top80={"topaz.font",8,0,0}; void doprefs(char *name) { struct XSBParams *xp,*xpp; struct Window *w; struct Gadget *g=0,*lastg,*ga[10],*gp; struct NewGadget ng; int argcount=0; int c,ypos=15; struct IntuiMessage *im; struct VisualInfo *vi=0; long code,class; int running=1; if(!(XSBBase=OldOpenLibrary(name))) { doreq("XSBCX","Couldn't open blanker library\n%s","Cancel",name); return; } if(!(xp=XSBGetParams())) { doreq(name,"This blanker don't\nhas preferences","Cancel"); CloseLibrary(XSBBase); return; } xpp=xp; while(xpp) { argcount++; xpp=xpp->next; } xpp=xp; if(!(w=OpenWindowTags(0,WA_Top,30,WA_Left,120, WA_Width,320,WA_Height,50+argcount*16, WA_IDCMP,GADGETUP|GADGETDOWN|MOUSEMOVE|CLOSEWINDOW, WA_AutoAdjust,TRUE, WA_Title,name, WA_Flags,ACTIVATE|RMBTRAP|WINDOWDRAG|WINDOWCLOSE|WINDOWDEPTH, TAG_DONE))) goto xit; vi=GetVisualInfo(w->WScreen,TAG_DONE); lastg=CreateContext(&g); ng.ng_LeftEdge=19; ng.ng_TopEdge=30+argcount*16; ng.ng_Width=60; ng.ng_Height=13; ng.ng_GadgetText="Save"; ng.ng_GadgetID=20; ng.ng_TextAttr=&top80; ng.ng_Flags=PLACETEXT_IN; ng.ng_VisualInfo=vi; lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE); ng.ng_GadgetText="Load"; ng.ng_LeftEdge=92; ng.ng_GadgetID++; lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE); ng.ng_GadgetText="Use"; ng.ng_LeftEdge=165; ng.ng_GadgetID++; lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE); ng.ng_GadgetText="Cancel"; ng.ng_LeftEdge=240; ng.ng_GadgetID++; lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE); c=0; ng.ng_LeftEdge=100; ng.ng_Width=170; ng.ng_Height=14; ng.ng_GadgetID=1; ng.ng_Flags=NG_HIGHLABEL|PLACETEXT_LEFT; while(xpp) { ng.ng_GadgetText=xpp->text; ng.ng_TopEdge=ypos; ypos+=16; switch(xpp->type) { case XSBP_BOOL: ng.ng_TopEdge++; lastg=CreateGadget(CHECKBOX_KIND,lastg,&ng,GTCB_Checked,xpp->value->xsb_arg,TAG_DONE); ng.ng_TopEdge--; break; case XSBP_STRING: lastg=CreateGadget(STRING_KIND,lastg,&ng,GTST_MaxChars,40,GTST_String,xpp->value->xsb_string,TAG_DONE); break; case XSBP_INTEGER: lastg=CreateGadget(INTEGER_KIND,lastg,&ng,GTIN_MaxChars,40,GTIN_Number,xpp->value->xsb_arg,TAG_DONE); break; case XSBP_CYCLE: lastg=CreateGadget(CYCLE_KIND,lastg,&ng,GTCY_Labels,xpp->labels,GTCY_Active,xpp->value->xsb_arg,TAG_DONE); break; case XSBP_SLIDER: lastg=CreateGadget(SLIDER_KIND,lastg,&ng, GTSL_Max,xpp->max,GTSL_Min,xpp->min, GTSL_Level,xpp->value->xsb_arg, PGA_Freedom,LORIENT_HORIZ, GTSL_MaxLevelLen,4, GTSL_LevelPlace,PLACETEXT_RIGHT, GA_RelVerify,TRUE, GTSL_LevelFormat,"%-4ld",TAG_DONE); break; } ga[c++]=lastg; xpp=xpp->next; ng.ng_GadgetID++; } AddGList(w,g,-1,-1,0); RefreshGList(g,w,0,-1); GT_RefreshWindow(w,0); while(running) { while(!(im=GT_GetIMsg(w->UserPort))) WaitPort(w->UserPort); code=im->Code; class=im->Class; gp=im->IAddress; GT_ReplyIMsg(im); if(class==CLOSEWINDOW) break; if(class==GADGETUP) { switch(gp->GadgetID) { case 20: case 21: case 22: case 23: running=0; break; } } } xit: if(g) FreeGadgets(g); if(vi) FreeVisualInfo(vi); if(w) CloseWindow(w); CloseLibrary(XSBBase); }