📄 print.c
字号:
#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <curses.h>#include <termio.h>#include <sys/types.h>#include <dirent.h>#include <signal.h>#include <unistd.h>#include "srcc.h"#define FLNM 52 /* 显示文件数(14*4) */ int pg_read(char *);int opdir(char *);FILE *fp;char argv[40];struct { int num; /* 状态位 */ int lx,ly; /* 屏幕坐标 */ char * s; } ss[FLNM]; /* 文件屏幕镜像 */FILE *fd2;int fd1;char s[80];int inter,lo;int size;WINDOW *win, *swin;int locate;int chioce;/* 对主菜单项进行选择 */int DrawPrint(win,fun)WINDOW *win;int fun;{ int i,j,n,ln; int keyid,outid; int ret; char s1[80],s2[80]; char request[25]; char filenam[40],timestr[13]; char *cp;if ((ftoal-Page*FLNM)<FLNM) size=ftoal-Page*FLNM;else size=FLNM; wstandend(win); wclear(win); i=0;inter=4;j=inter;ln=0;for (i=0;i<size;i++) { if ((i%4)==0) { ln=ln+1; j=inter; } ss[i].ly=ln; ss[i].lx=j; ss[i].s=item[i+Page*FLNM].name; ss[i].num=item[i+Page*FLNM].num; if (ss[i].num==1) { coloron(win,2,0,1); mvwaddstr(win,ln,j-2,"●"); coloroff(win,1); } else { coloron(win,6,0,2); mvwaddstr(win,ln,j-2,"○"); coloroff(win,2); } mvwaddstr(win,ln,j,ss[i].s); wrefresh(win); j=j+inter+14;}boo(win);if ( fun == 1 ) return SUCCESS;lo=0;wstandout(win);mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s);wrefresh(win);noecho();i=mgetch(&keyid);while(1) /*no F3*/{ outid=0; if ( keyid == 1 ) switch(i){ case 53: /*down*/ if (ftoal-(FLNM*(Page+1))>0) { Page=Page+1; if ((ftoal-FLNM*Page)>FLNM) size=FLNM; else size=ftoal-Page*FLNM; wstandend(win); wclear(win); refresh(); i=0; inter=4; j=inter; ln=0; for (i=0;i<size;i++) { if ((i%4)==0) { ln=ln+1; j=inter; } ss[i].ly=ln; ss[i].lx=j; ss[i].s=item[i+Page*FLNM].name; ss[i].num=item[i+Page*FLNM].num; if (ss[i].num==1) { coloron(win,2,0,1); mvwaddstr(win,ln,j-2,"●"); coloroff(win,1); } else { coloron(win,6,0,2); mvwaddstr(win,ln,j-2,"○"); coloroff(win,2); } mvwaddstr(win,ln,j,ss[i].s); wrefresh(win); j=j+inter+14; } lo=0; boo(win); wstandout(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); } else beep(); break; case 51: /*up*/ if ((Page>0)&&(ftoal>FLNM)) { Page=Page-1; size=FLNM; wstandend(win); wclear(win); refresh(); i=0; inter=4; j=inter; ln=0; for (i=0;i<size;i++) { if ((i%4)==0) { ln=ln+1; j=inter; } ss[i].ly=ln; ss[i].lx=j; ss[i].s=item[i+Page*FLNM].name; ss[i].num=item[i+Page*FLNM].num; if (ss[i].num==1) { coloron(win,2,0,1); mvwaddstr(win,ln,j-2,"●"); coloroff(win,1); } else { coloron(win,6,0,2); mvwaddstr(win,ln,j-2,"○"); coloroff(win,2); } mvwaddstr(win,ln,j,ss[i].s); wrefresh(win); j=j+inter+14; } lo=0; boo(win); wstandout(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); } else beep(); break; case 54: /*right*/ wstandend(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); if(lo==size-1) lo=0; else lo=lo+1; wstandout(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); break; case 52: /*left*/ wstandend(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); if(lo==0) lo=size-1; else lo--; wstandout(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); break; case 50: /*down*/ wstandend(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); if((lo+4)<=size-1) lo=lo+4; wstandout(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); break; case 56: /* up */ wstandend(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); if((lo-4)>=0) lo=lo-4; wstandout(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); break; case 60: /* F1 KEY */ memset(timestr,0,sizeof(timestr)); DrawInput("请输入时间∶年月日时分",timestr,12); Settime(timestr); break; } else switch(i){ case TAB : outid=1; break; case RETURN: /* FUN F1 */ j=0; for (i=0;i<80;i++) { if (ss[lo].s[i]!='\0') if(ss[lo].s[i]==' ') j=j+1; } strcpy(s2,ss[lo].s+j); ShowHelp(" 按[↑],[↓],[←],[→],[PageUp],[PageDown]键查看报表,[q]键退出!"); sprintf(s1,"%s%s",PrintPath,s2);// sprintf(s1,"pg %s",ss[lo].s); refresh(); pg_read(s1);// endwin();// i=system(s1); refresh(); wstandend(win); j=inter; ln=0; for (i=0;i<size;i++) { if ((i%4)==0) { ln=ln+1; j=inter; } if (ss[i].num==1) { coloron(win,2,0,1); mvwaddstr(win,ln,j-2,"●"); coloroff(win,1); } else { coloron(win,6,0,2); mvwaddstr(win,ln,j-2,"○"); coloroff(win,2); } mvwaddstr(win,ln,j,ss[i].s); wrefresh(win); j=j+inter+14; } wstandout(win); mvwaddstr(win,ss[lo].ly,ss[lo].lx,ss[lo].s); wrefresh(win); break; case CTRL_E: if (ss[lo].num==1) { /* strcpy(item[lo].stcd,"0"); */ item[lo+Page*FLNM].num=0; ss[lo].num=0; strcpy(s1,"cancel "); strcat(s1,item[lo+Page*FLNM].prn); system(s1); } else { char stpg[4]; memset(s1,0,sizeof(s1)); memset(stpg,0,sizeof(stpg)); DrawInput("请输入起始页号∶",stpg,3); memset(request,0,sizeof(request)); item[lo+Page*FLNM].num=1; ss[lo].num=1; j=0; for (i=0;i<80;i++) { if (ss[lo].s[i]!='\0') if(ss[lo].s[i]==' ') j=j+1; } if ( strtol(stpg,(char **)NULL,10) > 1 ) { system("prnt=11; export prnt"); sprintf(s1,"pr -t +%s %s%s|lpr -o nobanner",stpg,PrintPath,ss[lo].s+j); } else { system("prnt=00; export prnt"); if (strcmp(stpg,"0")==0) { sprintf(s1,"doscp %s%s a:/%s",PrintPath,ss[lo].s+j,ss[lo].s+j); system(s1); } else { if ((strncmp(ss[lo].s+j,"财政扣帐清单",12))==0) sprintf(s1,"pr -t -l72 %s%s|lpr -o nobanner",PrintPath,ss[lo].s+j); else { strcpy(s1,"lp -o nobanner "); strcat(s1,PrintPath); strcat(s1,ss[lo].s+j); } } } resetty(); fd1=dup(1); close(1); creat("newout",0600); i=system(s1); fd2=fopen("newout","r"); fgets(s,80,fd2); fclose(fd2); strcpy(item[lo+Page*FLNM].prn,NULL); i=strlen(s); ret=GetWord(s,"is",item[lo+Page*FLNM].prn); fprintf(fp,"print request = %s \n",item[lo+Page*FLNM].prn); ret=GetWord(strchr(s,'-'),"\0",request); fprintf(fp,"request = %s len = %d\n",request,strlen(request)); cp=request; strcpy(item[lo+Page*FLNM].stcd,++cp); /* 打印队列号 */ fprintf(fp,"request id = %s \n",item[lo+Page*FLNM].stcd); fflush(fp); close(1); dup(fd1); close(fd1); } endwin(); refresh();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -