CONSTANT mtit=%"fgl.helpViewer.title" CONSTANT mop1=%"fgl.helpViewer.screen" CONSTANT mhp1=%"fgl.helpViewer.nextpage" CONSTANT mop2=%"fgl.helpViewer.resume" CONSTANT mhp2=%"fgl.helpViewer.finish" CONSTANT eohm=%"fgl.helpViewer.endmsg" FUNCTION showhelp(id) DEFINE id INTEGER DEFINE txt STRING LET txt=fgl_gethelp(id) IF txt IS NULL THEN RETURN END IF IF fgl_getenv("FGLGUI")=0 THEN CALL __showhelp_txt(txt) ELSE CALL __showhelp_gui(txt) END IF END FUNCTION FUNCTION __showhelp_txt(txt) CONSTANT nlines = 24 DEFINE idx INTEGER,again INTEGER DEFINE txt STRING DEFINE l,p,y,y0,y1,nrows INTEGER DEFINE sep CHAR(2),psep CHAR(1) DEFINE tok,ptok base.StringTokenizer DEFINE s STRING DEFINE lastPage STRING LET sep[1]=ascii(10) -- \n LET sep[2]=ascii(13) -- \r LET psep[1]=ascii(12) -- \f LET nrows=nlines+1 OPEN WINDOW helpSessionTxt AT 1,1 WITH nrows ROWS, 80 COLUMNS ATTRIBUTE(MESSAGE LINE LAST, MENU LINE FIRST) LET y0 = 4 LET y1 = nlines-1 MENU mtit BEFORE MENU LABEL nextpage: LET y=y0 IF ptok IS NULL THEN LET ptok=base.StringTokenizer.createExt(txt,psep,NULL,FALSE); INITIALIZE tok TO NULL END IF IF tok IS NULL THEN LET s=ptok.nextToken() LET tok=base.StringTokenizer.createExt(s,sep,NULL,TRUE) END IF IF NOT tok.hasMoreTokens() THEN IF NOT ptok.hasMoreTokens() THEN INITIALIZE ptok TO NULL MESSAGE eohm CLIPPED ATTRIBUTE(REVERSE) NEXT OPTION mop2 ELSE LET s=ptok.nextToken() LET tok=base.StringTokenizer.createExt(s,sep,NULL,TRUE) END IF END IF IF NOT tok.hasMoreTokens() THEN INITIALIZE ptok TO NULL MESSAGE eohm CLIPPED ATTRIBUTE(REVERSE) NEXT OPTION mop2 END IF CLEAR WINDOW helpSessionTxt DISPLAY "-------------------------------------------------------------------------------" AT 3,1 WHILE tok.hasMoreTokens() AND y<=y1 DISPLAY tok.nextToken() AT y,1 LET y=y+1 END WHILE IF NOT ptok.hasMoreTokens() AND NOT tok.hasMoreTokens() THEN INITIALIZE ptok TO NULL MESSAGE eohm CLIPPED ATTRIBUTE(REVERSE) NEXT OPTION mop2 ELSE NEXT OPTION mop1 END IF COMMAND mop1 mhp1 GOTO nextpage COMMAND mop2 mhp2 EXIT MENU END MENU CLOSE WINDOW helpSessionTxt END FUNCTION FUNCTION __showhelp_gui(thetext) DEFINE thetext STRING DEFINE ptok base.StringTokenizer DEFINE s STRING DEFINE psep CHAR(1) LET psep[1]=ascii(12) OPEN WINDOW helpSessionGui WITH FORM "fglhelp" MENU BEFORE MENU LABEL gui_nextpage: IF ptok IS NULL THEN LET ptok=base.StringTokenizer.createExt(thetext,psep,NULL,FALSE); END IF IF ptok.hasMoreTokens() THEN LET s=ptok.nextToken() DISPLAY s TO theText END IF IF NOT ptok.hasMoreTokens() THEN INITIALIZE ptok TO NULL END IF ON ACTION helpscreen GOTO gui_nextpage ON ACTION helpresume EXIT MENU ON ACTION close EXIT MENU END MENU CLOSE WINDOW helpSessionGui END FUNCTION