home *** CD-ROM | disk | FTP | other *** search
- /*
- fnslug.c
-
- % slug_funcs
-
- C-scape 3.1
- Copyright (c) 1988-1989, by Oakland Group, Inc.
- ALL RIGHTS RESERVED.
-
- Revision History:
- -----------------
- 8/30/88 jdc created
- 5/24/89 jdc added sed_DoSpecial and special_key
- 8/30/89 gam added check for MENU_VERTICAL before sed_Pop (again)
- */
-
- #include <stdio.h>
- #include <ctype.h>
-
- #include "cscape.h"
- #include "scancode.h"
- #include "oaktag.h" /* For IDs in msys.h */
- #include "msys.h"
- #include "helpdecl.h"
-
- void slug_fkey(_arg1(sed_type));
-
- OGLOBAL field_funcs_struct slug_funcs = {
- std_fenter,
- std_fexit,
- slug_fkey,
- FNULL,
- FNULL
- };
-
- void slug_fkey(sed)
- sed_type sed;
- /*
- modifies: sed.
-
- effects: Standard menu functions.
- Up and down keys change choices.
- Baton contains field number + 1 when ENTER is pressed
- or 0 if ESC pressed.
- */
- {
- int scancode, letter, choice, ret;
- int row, col;
-
- scancode = kb_Read();
-
- if (sed_DoSpecial(sed, scancode))
- return;
- if (special_key(sed, scancode))
- return;
-
- switch(scancode) {
-
- case ESC:
- sed_SetBaton(sed, 0);
- sed_ToggleExit(sed);
- return;
- case ENTER:
- break;
- case DOWN:
- case RIGHT:
- if (sed_IncField(sed) == SED_STUCK) {
- sed_GotoFirstField(sed);
- }
- return;
- case UP:
- case LEFT:
- if (sed_DecField(sed) == SED_STUCK) {
- sed_GotoLastField(sed);
- }
- return;
- case HOME:
- sed_GotoFirstField(sed);
- return;
- case END:
- sed_GotoLastField(sed);
- return;
- case PGUP:
- sed_PageUp(sed);
- return;
- case PGDN:
- sed_PageDown(sed);
- return;
- default:
- /* do first letter search */
- letter = ascii(scancode);
- if (isprint(letter) &&
- (choice = sed_SearchMerge(sed, (char)letter)) != -1) {
-
- sed_GotoField(sed, choice);
- break;
- }
- return;
- }
- sed_GetPosition(sed, &row, &col);
- if ( msys_dir(sed) == MENU_VERTICAL ) {
- sed_Pop(sed);
- }
-
- msys_RepaintBob(sed, row, col);
- ret = msys_GoBob(sed, -1, -1);
- msys_PopBob(sed);
-
- if (ret == 0) {
- sed_Repaint(sed);
- }
- else {
- sed_ToggleExit(sed);
- sed_SetBaton(sed, ret);
- }
- }
-