/**********************************************************************/ /* Gadtools addition code */ /**********************************************************************/ #include "psx.h" #include #include #define SIZEINIT(ng,x,y,w,h,text) ng.ng_LeftEdge=x; ng.ng_TopEdge=y; ng.ng_Width=w; ng.ng_Height=h; extern char NewPubScreenName[MAXPUBSCREENNAME]; char *XDimLabels[] = { "Hires", "Lores", NULL, }; char *YDimLabels[] = { "Non-Interlace", "Interlace", NULL, }; char *DepthLabels[] = { "1 Bitplane (2 Colours)", "2 Bitplanes (4 Colours)", "3 Bitplanes (8 Colours)", "4 Bitplanes (16 Colours)", NULL, }; char *ShanghaiLabels[] = { "Shanghai On", "Shanghai Off", NULL}; char *PopLabels[] = { "PopPubScreen On", "PopPubScreen Off", NULL}; Tag ListViewTags[] = { GTLV_Labels, &ScreenList, GTLV_Top, 0, LAYOUTA_SPACING, 1, GTLV_ShowSelected, NULL, GTLV_Selected, 0, GTLV_ScrollWidth, 18, TAG_DONE }; Tag TextTags[] = { GTST_String, &MessageText, GTST_MaxChars, 255, GTBB_Recessed, TRUE, TAG_DONE }; Tag TVTag[] = { GTTX_Text, &MessageText[0], GTTX_Border, TRUE, TAG_DONE, }; struct Gadget *TextDisplayGad; /**********************************************************************/ /* Change the PSX Message */ /**********************************************************************/ void SetMessage(char *text) { if (text) strcpy(MessageText, text); GT_SetGadgetAttrsA(TextDisplayGad, Window, 0, (struct TagItem *)TVTag); } /**********************************************************************/ /* Add the gadgets to the PSX Window */ /**********************************************************************/ int CreatePSXGadgets(struct GadList **GList, void *VI, UWORD TopBorder, struct TextAttr *TA) { struct NewGadget NG; struct Gadget *Gad; int GHeight, GSpace; int WHeight; int GadYPos, TopGadYPos; int RowWidth; short FontY=TA->ta_YSize; int index; TopBorder+=FontY; WHeight=TopBorder+(FontY); GadYPos=TopBorder+(FontY/2); GHeight=FontY+((FontY/4)*2); if (FontY>14) GSpace=5; else GSpace=3; Gad=CreateContext(GList); TopGadYPos=GadYPos; RowWidth=TextLength(&Screen->RastPort, " Dummy String Ya ", 21); NG.ng_VisualInfo=VI; NG.ng_TextAttr=TA; NG.ng_Flags=PLACETEXT_IN; SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetText="Open New Screen"; NG.ng_GadgetID=GADID_OPENSCREEN; Gad=CreateGadgetA(BUTTON_KIND, Gad, &NG, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetText="Close Screen"; NG.ng_GadgetID=GADID_CLOSESCREEN; Gad=CreateGadgetA(BUTTON_KIND, Gad, &NG, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetText="Move To Screen"; NG.ng_GadgetID=GADID_MOVEPSX; Gad=CreateGadgetA(BUTTON_KIND, Gad, &NG, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetText="Make Default"; NG.ng_GadgetID=GADID_MAKEDEFAULT; Gad=CreateGadgetA(BUTTON_KIND, Gad, &NG, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetText="Refresh List"; NG.ng_GadgetID=GADID_REFRESH; Gad=CreateGadgetA(BUTTON_KIND, Gad, &NG, TAG_DONE); NG.ng_Flags=PLACETEXT_IN|NG_HIGHLABEL; NG.ng_GadgetText=NULL; SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetID=GADID_SHANGHAI; ShanghaiGad=Gad=CreateGadget(CYCLE_KIND, Gad, &NG, GTCY_Labels, ShanghaiLabels, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetID=GADID_POP; PopGad=Gad=CreateGadget(CYCLE_KIND, Gad, &NG, GTCY_Labels, PopLabels, TAG_DONE); NG.ng_Flags=PLACETEXT_IN; SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetText="Quit"; NG.ng_GadgetID=GADID_QUIT; Gad=CreateGadgetA(BUTTON_KIND, Gad, &NG, TAG_DONE); SIZEINIT(NG, 20, GadYPos, WIN_WIDTH-40, GHeight); index=GadYPos-GSpace; WHeight+=(GHeight+GSpace); NG.ng_GadgetText=MessageText; NG.ng_Flags=NG_HIGHLABEL; NG.ng_GadgetID=0; MessageText[0]=0; TextDisplayGad=Gad=CreateGadgetA(TEXT_KIND, Gad, &NG, (struct TagItem *)&TVTag[0]); SIZEINIT(NG, 20+RowWidth+20, TopGadYPos, WIN_WIDTH-(60+RowWidth), index-TopGadYPos); NG.ng_GadgetText=NULL; NG.ng_GadgetID=GADID_SCREENLIST; NG.ng_Flags=PLACETEXT_IN; LVGad=Gad=CreateGadgetA(LISTVIEW_KIND, Gad, &NG, (struct TagItem *)&ListViewTags[0]); if (Gad==0) return(0); else return(WHeight); } /**********************************************************************/ /* Create the Screen Requester gadgets */ /**********************************************************************/ int CreateScreenGadgets(struct GadList **GList, void *VI, UWORD TopBorder, struct TextAttr *TA, int *WinWidth) { struct NewGadget NG; struct Gadget *Gad; int GHeight, GSpace; int WHeight; int GadYPos, TopGadYPos; int RowWidth; short FontY=TA->ta_YSize; TopBorder+=FontY; WHeight=TopBorder+(FontY); GadYPos=TopBorder+(FontY/2); GHeight=FontY+((FontY/4)*2); if (FontY>14) GSpace=5; else GSpace=3; Gad=CreateContext(GList); RowWidth=TextLength(&Screen->RastPort, "This is a rather long screen name.", 34); *WinWidth=RowWidth+40; NG.ng_VisualInfo=VI; NG.ng_TextAttr=TA; NG.ng_Flags=PLACETEXT_IN|NG_HIGHLABEL; NG.ng_GadgetText=NULL; SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight+GSpace); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace)+GSpace; NG.ng_GadgetID=SGID_NAME; Gad=CreateGadget(STRING_KIND, Gad, &NG, GTST_String, &NewPubScreenName, GTST_MaxChars, MAXPUBSCREENNAME, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetID=SGID_XDIM; Gad=CreateGadget(CYCLE_KIND, Gad, &NG, GTCY_Labels, XDimLabels, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetID=SGID_YDIM; Gad=CreateGadget(CYCLE_KIND, Gad, &NG, GTCY_Labels, YDimLabels, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetID=SGID_DEPTH; Gad=CreateGadget(CYCLE_KIND, Gad, &NG, GTCY_Labels, DepthLabels, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); GadYPos+=(GHeight+GSpace); NG.ng_GadgetID=SGID_OPEN; NG.ng_GadgetText="Open Screen"; NG.ng_Flags=PLACETEXT_IN; Gad=CreateGadget(BUTTON_KIND, Gad, &NG, TAG_DONE); SIZEINIT(NG, 20, GadYPos, RowWidth, GHeight); WHeight+=(GHeight+GSpace); NG.ng_GadgetID=SGID_CANCEL; NG.ng_GadgetText="Cancel"; NG.ng_Flags=PLACETEXT_IN; Gad=CreateGadget(BUTTON_KIND, Gad, &NG, TAG_DONE); WHeight+=GSpace; if (Gad==0) return(0); else return(WHeight); }