|
|
1.1 ! root 1: /* ! 2: * UAE - The Un*x Amiga Emulator ! 3: * ! 4: * DosUAE Interface - 07-17-96 02:42pm ! 5: * ! 6: * (c) 1995 Bernd Schmidt, Ed Hanway ! 7: * Interface by Tim Gunn ! 8: */ ! 9: ! 10: #include "sysconfig.h" ! 11: #include "sysdeps.h" ! 12: ! 13: #include <stdio.h> ! 14: #include <ctype.h> ! 15: #include <dpmi.h> ! 16: #include <dos.h> ! 17: #include <conio.h> ! 18: #include <grx20.h> ! 19: ! 20: #include "config.h" ! 21: #include "options.h" ! 22: #include "autoconf.h" ! 23: #include "dos-ui.h" ! 24: #include "gui.h" ! 25: #include "memory.h" ! 26: ! 27: #define TB textbackground ! 28: #define TC textcolor ! 29: #define CURSON _setcursortype(_NORMALCURSOR); ! 30: #define CURSOFF _setcursortype(_NOCURSOR); ! 31: #define SCRON _wscroll = 1; ! 32: #define SCROFF _wscroll = 0; ! 33: ! 34: int SETTC=15; ! 35: int SETTB=1; ! 36: int _CWINX = 1,_CWINY = 1,_CWINX2 = 80,_CWINY2 = 25; ! 37: int dx,dy,dx2,dy2,dlx,dly,dlx2,dly2; ! 38: char vbuff[4096]; ! 39: struct find_t sfile; ! 40: ! 41: char *tui_filereq(char *spec) ! 42: { ! 43: struct find_t *files; ! 44: struct find_t ffblk; ! 45: ! 46: int i,done,key=0,zx,zy,zx2,zy2; ! 47: int ysize=8,cur=0,xpos=10,ypos,y=0,z,count=0; ! 48: char buff2[4096]; ! 49: ! 50: int speccount=0,sc2=0,speclen; ! 51: char specbuff[12]; ! 52: specbuff[0]=0; ! 53: speclen = strlen(spec); ! 54: ! 55: done = _dos_findfirst("*.*",_A_NORMAL,&ffblk); ! 56: while(!done) { count++; done = _dos_findnext(&ffblk); } ! 57: files = (struct find_t *)calloc(count , sizeof(struct find_t)); ! 58: ! 59: count=1; // starts at 1 because the first entry is 'none'. ! 60: while(speccount<=speclen) { ! 61: ! 62: if(spec[speccount]!=' ' || speccount!=speclen) ! 63: { ! 64: specbuff[sc2]=spec[speccount]; ! 65: } ! 66: else ! 67: { ! 68: specbuff[sc2]=0; sc2=-1; //sc2=-1 so the count makes it 0; ! 69: done = _dos_findfirst(specbuff,_A_NORMAL,&ffblk); ! 70: files[count]=ffblk; ! 71: while(!done) { ! 72: count++; ! 73: done = _dos_findnext(&ffblk); ! 74: files[count]=ffblk; ! 75: } ! 76: specbuff[0]=0; ! 77: } ! 78: speccount++; sc2++; ! 79: ! 80: } ! 81: specbuff[sc2]=0; //repeated coz of no space, bad code rewrite it! ! 82: done = _dos_findfirst(specbuff,_A_NORMAL,&ffblk); ! 83: files[count]=ffblk; ! 84: while(!done) { ! 85: count++; ! 86: done = _dos_findnext(&ffblk); ! 87: files[count]=ffblk; ! 88: } ! 89: strcpy(files[0].name,"none"); ! 90: ! 91: ! 92: if(count<9) { ysize=count; } ! 93: if(ysize>15) { ysize=15; } ! 94: ypos=12-(ysize/2); ! 95: ! 96: zx=xpos; zy=ypos; zx2=xpos+20; zy2=ypos+ysize+1; ! 97: gettext(zx-1,zy-1,zx2+1,zy2+1,buff2); ! 98: window(1,1,80,25); drawbox(zx-1,zy-1,zx2+1,zy2+1); ! 99: gotoxy(zx+1,zy-1); cprintf("Select a file."); ! 100: window(zx,zy,zx2,zy2); clrscr(); ! 101: ! 102: gotoxy(1,ysize+1); cprintf("-------------"); ! 103: while(key!=13) { ! 104: switch(key) { ! 105: case 72: cur--; break; ! 106: case 80: cur++; break; ! 107: case 27: ! 108: TB(SETTB); TC(SETTC); ! 109: window(_CWINX,_CWINY,_CWINX2,_CWINY2); ! 110: puttext(zx-1,zy-1,zx2+1,zy2+1,buff2); ! 111: sfile.name[0]=0; ! 112: return sfile.name; ! 113: } ! 114: if(count-y<ysize) z=count; else z=ysize; ! 115: if(cur>z-1) { cur=z-1; y++; } ! 116: if(cur<0) { cur=0; y--; } ! 117: if(y<0) y=0; ! 118: if(y>count-z) y=count-z; ! 119: for(i=y;i<y+z;i++) { ! 120: if(i==y+cur) { TB(SETTC); TC(SETTB); } ! 121: else { TB(SETTB); TC(SETTC); } ! 122: gotoxy(1,i-y+1); ! 123: cprintf(" "); ! 124: gotoxy(1,i-y+1); ! 125: cputs(files[i].name); ! 126: } ! 127: gotoxy(1,ysize+2); ! 128: cprintf(" "); ! 129: gotoxy(1,ysize+2); ! 130: cprintf("%s",files[y+cur].name); ! 131: ! 132: key = getch(); ! 133: } ! 134: ! 135: TB(SETTB); TC(SETTC); ! 136: ! 137: if(y+cur!=0) { ! 138: sfile=files[y+cur]; ! 139: } else { ! 140: sfile.name[0]=0; ! 141: } ! 142: ! 143: window(_CWINX,_CWINY,_CWINX2,_CWINY2); ! 144: puttext(zx-1,zy-1,zx2+1,zy2+1,buff2); ! 145: ! 146: return sfile.name; ! 147: } ! 148: ! 149: void tui_dlog(int xcoord,int ycoord,int xcoord2,int ycoord2) ! 150: { ! 151: dx = xcoord; dy = ycoord; dx2 = xcoord2; dy2 = ycoord2; ! 152: gettext(dx-1,dy-1,dx2+1,dy2+1,vbuff); ! 153: window(1,1,80,25); drawbox(dx-1,dy-1,dx2+1,dy2+1); ! 154: window(dx,dy,dx2,dy2); ! 155: dlx = _CWINX; dly = _CWINY; dlx2 = _CWINX2; dly2 = _CWINY2; ! 156: _CWINX = dx; _CWINY = dy; _CWINX2 = dx2 ;_CWINY2 = dy2; ! 157: clrscr(); ! 158: } ! 159: ! 160: void tui_dlogdie() ! 161: { ! 162: window(dlx,dly,dlx2,dly2); ! 163: _CWINX = dlx; _CWINY = dly; _CWINX2 = dlx2; _CWINY2 = dly2; ! 164: puttext(dx-1,dy-1,dx2+1,dy2+1,vbuff); ! 165: } ! 166: ! 167: void tui_drawbox(int x, int y, int x2, int y2) ! 168: { ! 169: int i; ! 170: gotoxy(x,y); cprintf("�"); ! 171: for(i=0;i<x2-x-1;i++){ cprintf("�"); } ! 172: cprintf("�"); ! 173: gotoxy(x,y2); cprintf("�"); ! 174: for(i=0;i<x2-x-1;i++){ cprintf("�"); } ! 175: cprintf("�"); ! 176: for(i=y+1;i<y2;i++) { ! 177: gotoxy(x,i); cprintf("�"); ! 178: gotoxy(x2,i); cprintf("�"); ! 179: } ! 180: } ! 181: ! 182: void tui_errorbox(char *errortxt) ! 183: { ! 184: int half,zx,zy,zx2,zy2; ! 185: char buff[2048]; ! 186: half = strlen(errortxt)/2; ! 187: ! 188: TC(SETTC); TB(SETTB); ! 189: ! 190: zx=35-half; zy=10; zx2=45+half; zy2=15; ! 191: ! 192: gettext(zx-1,zy-1,zx2+1,zy2+1,buff); ! 193: window(1,1,80,25); drawbox(zx-1,zy-1,zx2+1,zy2+1); ! 194: window(zx,zy,zx2,zy2); clrscr(); ! 195: ! 196: gotoxy(5,3); cprintf(errortxt); ! 197: gotoxy(half+1,5); cprintf("HIT A KEY"); ! 198: getch(); ! 199: ! 200: window(_CWINX,_CWINY,_CWINX2,_CWINY2); ! 201: puttext(zx-1,zy-1,zx2+1,zy2+1,buff); ! 202: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.