|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: */ ! 17: ! 18: #ifndef lint ! 19: static char sccsid[] = "@(#)cmd1.c 3.33 (Berkeley) 6/29/88"; ! 20: #endif /* not lint */ ! 21: ! 22: #include "defs.h" ! 23: #include "char.h" ! 24: ! 25: c_window() ! 26: { ! 27: int col, row, xcol, xrow; ! 28: int id; ! 29: ! 30: if ((id = findid()) < 0) ! 31: return; ! 32: if (!terse) ! 33: wwputs("New window (upper left corner): ", cmdwin); ! 34: col = 0; ! 35: row = 1; ! 36: wwadd(boxwin, framewin->ww_back); ! 37: for (;;) { ! 38: wwbox(boxwin, row - 1, col - 1, 3, 3); ! 39: wwsetcursor(row, col); ! 40: while (wwpeekc() < 0) ! 41: wwiomux(); ! 42: switch (getpos(&row, &col, row > 1, 0, ! 43: wwnrow - 1, wwncol - 1)) { ! 44: case 3: ! 45: wwunbox(boxwin); ! 46: wwdelete(boxwin); ! 47: return; ! 48: case 2: ! 49: wwunbox(boxwin); ! 50: break; ! 51: case 1: ! 52: wwunbox(boxwin); ! 53: case 0: ! 54: continue; ! 55: } ! 56: break; ! 57: } ! 58: if (!terse) ! 59: wwputs("\nNew window (lower right corner): ", cmdwin); ! 60: xcol = col; ! 61: xrow = row; ! 62: for (;;) { ! 63: wwbox(boxwin, row - 1, col - 1, ! 64: xrow - row + 3, xcol - col + 3); ! 65: wwsetcursor(xrow, xcol); ! 66: wwflush(); ! 67: while (wwpeekc() < 0) ! 68: wwiomux(); ! 69: switch (getpos(&xrow, &xcol, row, col, wwnrow - 1, wwncol - 1)) ! 70: { ! 71: case 3: ! 72: wwunbox(boxwin); ! 73: wwdelete(boxwin); ! 74: return; ! 75: case 2: ! 76: wwunbox(boxwin); ! 77: break; ! 78: case 1: ! 79: wwunbox(boxwin); ! 80: case 0: ! 81: continue; ! 82: } ! 83: break; ! 84: } ! 85: wwdelete(boxwin); ! 86: if (!terse) ! 87: wwputc('\n', cmdwin); ! 88: wwcurtowin(cmdwin); ! 89: (void) openwin(id, row, col, xrow-row+1, xcol-col+1, nbufline, ! 90: (char *) 0, 1, 1, shellfile, shell); ! 91: } ! 92: ! 93: getpos(row, col, minrow, mincol, maxrow, maxcol) ! 94: register int *row, *col; ! 95: int minrow, mincol; ! 96: int maxrow, maxcol; ! 97: { ! 98: static int scount; ! 99: int count; ! 100: char c; ! 101: int oldrow = *row, oldcol = *col; ! 102: ! 103: while ((c = wwgetc()) >= 0) { ! 104: switch (c) { ! 105: case '0': case '1': case '2': case '3': case '4': ! 106: case '5': case '6': case '7': case '8': case '9': ! 107: scount = scount * 10 + c - '0'; ! 108: continue; ! 109: } ! 110: count = scount ? scount : 1; ! 111: scount = 0; ! 112: switch (c) { ! 113: case 'h': ! 114: if ((*col -= count) < mincol) ! 115: *col = mincol; ! 116: break; ! 117: case 'H': ! 118: *col = mincol; ! 119: break; ! 120: case 'l': ! 121: if ((*col += count) > maxcol) ! 122: *col = maxcol; ! 123: break; ! 124: case 'L': ! 125: *col = maxcol; ! 126: break; ! 127: case 'j': ! 128: if ((*row += count) > maxrow) ! 129: *row = maxrow; ! 130: break; ! 131: case 'J': ! 132: *row = maxrow; ! 133: break; ! 134: case 'k': ! 135: if ((*row -= count) < minrow) ! 136: *row = minrow; ! 137: break; ! 138: case 'K': ! 139: *row = minrow; ! 140: break; ! 141: case ctrl('['): ! 142: if (!terse) ! 143: wwputs("\nCancelled. ", cmdwin); ! 144: return 3; ! 145: case '\r': ! 146: return 2; ! 147: default: ! 148: if (!terse) ! 149: wwputs("\nType [hjklHJKL] to move, return to enter position, escape to cancel.", cmdwin); ! 150: wwbell(); ! 151: } ! 152: } ! 153: return oldrow != *row || oldcol != *col; ! 154: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.