⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 help.bak

📁 Unix/Linux文本模式下显示和操作菜单的处理程序。
💻 BAK
📖 第 1 页 / 共 2 页
字号:
					wrefresh(w);				}				else if ( result=-1){					wmove( w, ny,nx );					wrefresh(w);				}			}		/*** 	当弹出菜单时的循环	***/	   	}			/*** 	   键盘循环 		***/	}				/*** 	   主题循环 		***/	Putrect( w, y, x, scr );	Free ( scr );	return (TRUE);}/***** 	初始化显示数组, (公用变量text)**		从 (HELPNAME)文件中获取当前主题***/int Initarry ( w, width, topic, filename )WINDOW *w;int width;char *topic;char *filename;{	FILE *fp;	int FEOF;	char c,s[128],s1[128];	int i=0,j=0,k=0,l=0,num=-1,len;	char str[1025];	fp = fopen( filename , "r" );	if ( fp == NULL) {		sprintf( str,"不能打开帮助文件(%s)!!!",filename);		Message(stdscr,Y+HEIGHT-2,X+2,str,"出错:",1);		return -1;		}	fseek ( fp, 0, SEEK_CUR );	sprintf( s, "BEGIN:%s", topic );	while( ! feof(fp) ) {		fgets( str, 1024, fp ) ;		if ( (char *)strstr( str, s ) ){			FEOF = 0;			break;		}	}	if ( FEOF ){		Message(stdscr,Y+HEIGHT-2,X+2,"没有找到这个主题!!!","出错:",1);		return -1;	}	FEOF = 1;	for( i= 0; i<500; i++)		text[i][0]='\x0';	i=0;	sprintf( s, "END:%s", topic );	while (!feof(fp)){		fgets( str, 1024,fp );		if ( (char *)strstr( str, s ) != NULL ){			FEOF = 0;			break;		}		while( k<strlen(str) ){/*			if ( str[k] = Key_tab ) { 				for ( l = 0 ;l<8;l++ ) 					text[j][i++] = str[k];				}			else 				text[j][i]=str[k];*/				text[j][i]=str[k];						if ( (k+1)%width==0 && k!=0 ) {				text[j][i+1]='\x0a';				text[j][i+2]='\x0';				j++;				i = 0;				k++;			}			 else if ( k>1024 ) {				text[j][i]='\0';				j++;				i=0;				k=0;				break;			}		 	else 			{				i++;				k++;			}		}		text[j][i-1]='\x0';		i=k=0;j++;	}	for(i=0;i<=j;i++) {		len = strlen(text[i]); 		k=0;		while(k<width){			if( text[i][k]=='\x9' )text[i][k]=' ';				if( text[i][k]=='\x0'||text[i][k]=='\x0a' ){				for( l=k;l<width;l++){					text[i][k]=' ';						k++;					}				break;						}			k++;					}		text[i][width] = '\x0';		if(strlen(text[i])!=width){			Message(stdscr,Y+HEIGHT-2,X+2,"程序运行(读取文件)出现错误!!!","出错:",1);			return -1;		}	}	NREC = j;	if ( FEOF==1 ){		Message(stdscr,Y+HEIGHT-2,X+2,"没有找到这个主题的终止!!!","出错:",1);		return -1;	}	fclose ( fp );	return TRUE;}/*****	显示当前主题 (text[]) 的内容*****/int Show_arry( w, y, x, height, width, index ,color,bkcolor )	WINDOW *w; int y;int x; int height; int width; int index; int bkcolor;{	int i=0,j=0;	wsetcolor(w, color, bkcolor);	for( i=0;i<height;i++){		mvwaddstr( w, y+i, x, text[i+index] );	}				wrefresh( w );	return TRUE;}/*****	反白显示主题, 隐藏主题**	y:光标移动到新位置的纵坐标. yold:光标移动前的纵坐标. **	nrerec, oldrec. 移动前后的第几行***/int Show_NxtTopic( w, y, x, yold, newrec, oldrec, row, color, bkcolor )WINDOW *w;int y;int x;int yold;int newrec;int oldrec;int row;int color;int bkcolor;{	int i=0,j=0,nstart=-1,nend=-1;	char str[80];	char s[80];	strcpy ( str, text[newrec] );	while (1) {		if ( str[i]=='\x0' ) break;		if( str[i]=='<' && str[i+1]=='<' ){			nstart=i+2;			}		if( str[i]=='>' && str[i+1]=='>' ) {						nend=i-1;			if ( row <= nend ) break;  			}		i++;					}	if( Nxt_Topic[0]!='\x0' ) {			if ( yold!=-1){				wsetcolor(w,color, bkcolor );				mvwaddstr( w, yold, x, text[oldrec]);			}			Nxt_Topic[0]='\x0';		}	if ( nstart>=0 && nend >=0 && row>=nstart && row<=nend ){		strncpy( Nxt_Topic, str+nstart, nend-nstart+1 );		Nxt_Topic[nend-nstart+1]='\x0';		if ( tFlags == 1 ) {			wsetcolor( w, bkcolor, color ); 			mvwaddstr( w, y, x+nstart, Nxt_Topic );  		}		else {				wstandout( w );			mvwaddstr( w, y, x+nstart, Nxt_Topic );  			wstandend( w );		}	}	return TRUE;}/*****	增加一个主题链表**		***/int Add_link(char *topic,int ny,int nx,int nrec,int nline,int nrow){	int i=0;	struct Help_link *link;	if( topic[0]=='\x0') return FALSE;	link=(struct Help_link *)malloc(sizeof(struct Help_link)); 	if(link==NULL)return FALSE;	strcpy(link->topic,topic);	link->ny=ny;	link->nx=nx;	link->nrec=nrec;	link->nline=nline;	link->nrow=nrow;	if(Link_head==NULL){		Link_cur=Link_head=link;		Link_cur->nxtlink=NULL;		Link_cur->prvlink=NULL;		}	else {		link->prvlink=Link_cur;		link->nxtlink=NULL;		Link_cur->nxtlink=link;		Link_cur=link;		} 	return TRUE;}/*****	删除当前主题链表**		用于返回上个主题 	***/int Del_link(){	struct Help_link *link;	if (Link_head==NULL||Link_cur==NULL) return FALSE;	if(Link_cur->prvlink==NULL){		free(Link_cur);			free(Link_head);		Link_head=Link_cur=NULL;	}	else {		link=Link_cur->prvlink;		Link_cur->prvlink->nxtlink = NULL;		free( Link_cur);		Link_cur=link;	}	return TRUE;}/*****	释放所有链表内存 *****/int Free_link(){	int i=0,n=1;	struct Help_link *link;	struct Help_link *prvlink;	if ( Link_cur==NULL )return FALSE;	link=Link_cur;	prvlink=link->prvlink;	while( prvlink!=NULL){		free(link);		link = prvlink;		prvlink = link->prvlink;	}	if( prvlink==NULL) free(link);	return 1;}/*****	打印当前主题 *****/int Print_Cur_Topic(){	int i=0;	FILE *fp;	fp=fopen( "/dev/lp0","w" ); 	if ( fp == NULL) {		Message(stdscr,Y+HEIGHT-2,X+2,"不能打开打印机!!!","出错:",1);		fclose(fp);		return FALSE;		}	for( i=0;i<=NREC;i++){		fprintf( fp, "%s\n",text[i] );	}	Message(stdscr,Y+HEIGHT-2,X+2,"打印完毕.","提示:",1);	fclose(fp);	return TRUE;}int Message( w, y, x, mesg, title, flags )WINDOW *w;int y;int x;char *mesg;char *title;int flags;{	MessageBox( title, mesg );}int Message1( w, y, x, mesg, title, flags )WINDOW *w;int y;int x;char *mesg;char *title;int flags;{	char ch;	int i;	int Return = TRUE;	int TotalLen=58;	int len1,len2;	if( ( (len1=strlen(title)) + (len2=strlen(mesg)) ) > TotalLen  )		return FALSE;	if ( tFlags != 1 ){		wstandout ( w );		for( i= x; i<x+TotalLen-2; i++ )			mvwaddstr( w, y, i, " " );		mvwaddstr( w, y, x, title );		mvwaddstr( w, y, x+len1, mesg );		if ( flags==0 ){			mvwaddstr( w, y, x+len1+len2,"(Y/N):");			wrefresh(w);			ch = getch();			if ( ch=='Y' ||ch =='y' ) Return=TRUE;				else Return=FALSE;		}		else {			mvwaddstr( w, y, x+len1+len2," (按任意键继续...)");			wrefresh(w);			getch();			Return=TRUE;		}		if( !(flags==0 && Return == TRUE) )mvwaddstr( w, y, x, HELPMSG ); 		wstandend ( w );	}	else {		wsetcolor ( w, GRAY, GRAY );		for( i= x; i<x+TotalLen-2; i++ )			mvwaddstr( w, y, i, " " );		wsetcolor ( w, BLUE, GRAY );		mvwaddstr( w, y, x, title );		wsetcolor ( w, CYAN, GRAY );		mvwaddstr( w, y, x+len1, mesg );		wrefresh(w);		if ( flags==0 ){			mvwaddstr( w, y, x+len1+len2," (Y/N):");			wrefresh(w);			ch = getch();			if ( ch=='Y' ||ch =='y' ) Return=TRUE;				else Return=FALSE;		}		else {			mvwaddstr( w, y, x+len1+len2," (按任意键继续...)");			wrefresh(w);			getch();			Return=TRUE;		}		if( !(flags==0 && Return == TRUE) )mvwaddstr( w, y, x, HELPMSG ); 	}	wrefresh(w);	return Return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -