home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Photo CD Demo 1
/
Demo.bin
/
gle
/
gle
/
newhelp.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-29
|
3KB
|
114 lines
extern char *tk[500];
extern char inbuff[300];
extern char tkbuff[500];
extern char space_str[3];
extern int ntk;
do_help(char *hstr)
{
char ss[90];
strcpy(ss,"gle graph ");
strcat(ss,hstr);
do_help2(ss);
}
do_help2(char *hstr)
{
FILE *hfile;
int i,yy,cp,match;
char hbuff[90],mstr[80],mstr2[80];
char *page;
char h[90];
char *hfilename="graph.hlp";
page = mymallocz(sizeof(char *) * 200);
npage = 0;
strcpy(h,hstr);
help_again:;
token_data(h,tk,&ntk,tkbuff);
for (i=1;i<=ntk;i++) strlwr(tk[i]);
scr_menuval();
clrscr();
if (*tk[2] == 'd' && strlen(tk[2])==2) tk[2] = "dn";
if (strcmp(tk[3],"yaxis")==0) tk[3] = "xaxis";
if (strcmp(tk[3],"y2axis")==0) tk[3] = "xaxis";
if (strcmp(tk[3],"x2axis")==0) tk[3] = "xaxis";
if (strcmp(tk[3],"ylabels")==0) tk[3] = "xlabels";
if (strcmp(tk[3],"y2labels")==0) {tk[3] = "xlabels"; k2 = "off";}
if (strcmp(tk[3],"x2labels")==0) {tk[3] = "xlabels"; k2 = "off";}
if (strcmp(tk[3],"ynames")==0) tk[3] = "xnames";
if (strcmp(tk[3],"y2names")==0) tk[3] = "xnames";
if (strcmp(tk[3],"x2names")==0) tk[3] = "xnames";
if (strcmp(tk[3],"ytitle")==0) tk[3] = "xtitle";
if (strcmp(tk[3],"y2title")==0) tk[3] = "xtitle";
if (strcmp(tk[3],"x2title")==0) tk[3] = "xtitle";
if (strcmp(tk[3],"title")==0) tk[3] = "xtitle";
gotoxy(1,1); wprintf("GLE help ");
for (i=1;i<=ntk;i++) wprintf("{%s} ",tk[i]);
scr_menubg();
hfile = fopen(gledir(hfilename),"rt");
if (hfile==NULL) perror("Unable to open graph.hlp ");
/* Find match for each key word, display that section of file
and find rest of key words at that level */
match = 1; /* trying to match a level one word */
for (;!feof(hfile);) {
if (fgets(hbuff,90,hfile)!=NULL) {
sprintf(mstr,"%d",match);
sprintf(mstr2,"%d",match-1);
if (match>ntk) {
if (strncmp(hbuff,mstr2,1)==0) { /* End of section */
goto got_help;
}
if (strncmp(hbuff,mstr,1)==0) { /* Sub topic */
capture = false;
strtok(hbuff," \h\n");
strcat(subtopic,strtok(NULL," \h\n"));
strcat(subtopic," ");
}
} else if (strncmp(hbuff,mstr,1)==0) { /* correct level */
capture = true;
strtok(hbuff," \h\n");
strcpy(fk1,strtok(NULL," \h\n"));
if (strncmp(fk1,tk[match],strlen(tk[match]))==0) {
match++;
}
} else if (capture) page[npage++] = sdup(hbuff);
}
}
fclose(hfile);
scr_menuval();
gotoxy(1,9);
wprintf("Help text not found sorry ??? \n");
text_inkey();
return;
got_help:;
/* Add subtopic's onto page[npage] */
page[npage++] = sdup("Subtopics:");
page[npage++] = sdup(subtopic);
cp = 0; /* start on first page */
yy = cp+22;
next_page:;
if (yy>=npage) yy = npage;
for (i==cp;i<yy;i++) {
strcpy(hbuff,page[i+cp]);
gotoxy(1,i+3); cputs(tabtospace(hbuff));
}
scr_menuval();
gotoxy(1,24);
read_command(hbuff,"Subtopic [return to continue] ");
scr_menubg();
strupr(hbuff);
if (strlen(hbuff)!=0) {
strcat(h," ");
strcat(h,hbuff);
goto help_again;
}
}