/***************************************************************************** * * * Subor LINE_EDI.C * * * *****************************************************************************/ #include #include "glob.h" #include "video.h" #include "key.h" #include "line_edi.h" //************************************************************************// // RIADKOVY_EDITOR // // 30.10.1997 // //************************************************************************// int riadkovy_editor(int zacx,int zacy,int sirka,int maxdlzka,unsigned char attr1, unsigned char attr2,char *retazec) { register int i; //pomocna int zaciatocny=0; // int aktualny=0; // int koniec=0; //koniec cyklu int kl; //klaves int dlzka; //aktualna dlzka retazca dlzka=strlen(retazec); if(dlzka=' ' && kl<=255) { *retazec='\0'; zaciatocny=0; aktualny=0; dlzka=0; } } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr2,attr2,retazec); while(!koniec) { switch(kl) { case ESC:vypni_kurzor();return FALSE; case ENTER:vypni_kurzor();return TRUE; case BKSPC:if(aktualny+zaciatocny>0) { if(aktualny+zaciatocnydlzka) aktualny--; else if(aktualny>sirka-2) { aktualny--; zaciatocny++; } break; vlavo: case LEFT: if(--aktualny<0) { aktualny++; if(--zaciatocny<0) zaciatocny++; } break; case HOME: aktualny=0; zaciatocny=0; break; case END: if(dlzka=' ' && kl<=255 && dlzka=dlzka) { if ( (kl>='A') && (kl<='Z') ) kl=kl + (224-'A'); retazec[dlzka++]=kl; retazec[dlzka]='\0'; } else { for(i=dlzka;i>zaciatocny+aktualny;i--) retazec[i]=retazec[i-1]; if(dlzka=' ' && kl<=255) { *retazec='\0'; zaciatocny=0; aktualny=0; dlzka=0; } } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr2,attr2,retazec); while(!koniec) { switch(kl) { case ESC: vypni_kurzor();return ESC; case ENTER:vypni_kurzor();return ENTER; case TAB: vypni_kurzor();return TAB; case UP: vypni_kurzor();return UP; case DOWN: vypni_kurzor();return DOWN; case F1 : vypni_kurzor();return F1; case F6 : vypni_kurzor();return F6; case BKSPC:if(aktualny+zaciatocny>0) { if(aktualny+zaciatocnydlzka) aktualny--; else if(aktualny>sirka-2) { aktualny--; zaciatocny++; } break; vlavo: case LEFT: if(--aktualny<0) { aktualny++; if(--zaciatocny<0) zaciatocny++; } break; case HOME: aktualny=0; zaciatocny=0; break; case END: if(dlzka=' ' && kl<=255 && dlzka=dlzka) { retazec[dlzka++]=kl; retazec[dlzka]='\0'; } else { for(i=dlzka;i>zaciatocny+aktualny;i--) retazec[i]=retazec[i-1]; if(dlzka0) tlac_znak(zacx,zacy,attr2,17); else tlac_znak(zacx,zacy,attr2,' '); while(zaciatocny-->0)ret++; for(i=0;i