/******************************************************************** * lindner * 3.20 * 1995/02/17 18:31:08 * /home/arcwelder/GopherSrc/CVS/gopher+/gopher/CURcurses.h,v * Exp * * Paul Lindner, University of Minnesota CIS. * * Copyright 1991, 1992 by the Regents of the University of Minnesota * see the file "Copyright" in the distribution for conditions of use. ********************************************************************* * MODULE: CURcurses.h * Header file access methods for CURcurses.c ********************************************************************* * Revision History: * CURcurses.h,v * Revision 3.20 1995/02/17 18:31:08 lindner * Fix for solaris curses routines * * Revision 3.19 1994/06/29 05:21:12 lindner * Start of AskF: * * Revision 3.18 1994/05/02 07:40:16 lindner * Mods to use setlocale() * * Revision 3.17 1994/04/13 19:14:31 lindner * AskL modifications * * Revision 3.16 1994/04/07 17:25:54 lindner * Fix for pyramids * * Revision 3.15 1994/03/04 23:39:48 lindner * Fix for log entries * * Revision 3.14 1994/03/04 23:36:30 lindner * figure out whether the terminal can do alternate character set. * * Revision 3.13 1994/02/20 21:45:20 lindner * Better sanity checks for box drawing characters * * Revision 3.12 1994/02/20 16:49:20 lindner * Fix bug in gcc for Solaris 2.x for curses routines * * Revision 3.11 1993/12/28 17:28:52 lindner * Better method of drawing box characters * * Revision 3.10 1993/11/29 01:09:46 lindner * Don't use the alternate character set for character graphics under AIX. * They don't work very well in xterms or aixterms. [However, it does work * if I use Mac NCSA Telnet to connect to our RS/6000....] (Beckett) * * Revision 3.9 1993/11/02 06:21:30 lindner * Fix for osf curses * * Revision 3.8 1993/09/26 09:19:21 lindner * Add bold #defines * * Revision 3.7 1993/09/22 15:44:36 lindner * Fix for sysv systems without KEY_HELP * * Revision 3.6 1993/09/22 01:15:47 lindner * Add support for DEC HELP key/KEY_HELP * * Revision 3.5 1993/09/21 01:46:08 lindner * Implement all remaining ASK block items.. * * Revision 3.4 1993/09/08 05:20:02 lindner * Fix for multiple CURcurses.h includes * * Revision 3.3 1993/07/30 17:31:39 lindner * Mods to support AskP: * * Revision 3.2 1993/04/15 21:25:20 lindner * Fixes for CURbox() definitions * * Revision 3.1.1.1 1993/02/11 18:02:56 lindner * Gopher+1.2beta release * * Revision 1.2 1992/12/31 05:57:38 lindner * Mods for VMS * * Revision 1.1 1992/12/10 23:32:16 lindner * gopher 1.1 release * * Revision 1.1 1992/12/10 06:16:51 lindner * Initial revision * * *********************************************************************/ #ifndef CURCURSES_H #define CURCURSES_H #include "Locale.h" #include #ifdef __svr4__ /* Fix bug in gcc for Solaris 2.x */ # define SYSV #endif #if defined(ultrix) # include #else # include #endif #include "boolean.h" #include "STRstring.h" #ifdef KEY_RIGHT # define SYSVCURSES #endif struct CursesStruct { WINDOW *Screen; String *Termtype; /** Termcap/terminfo stuff **/ String *Clearscreen; String *AudibleBell; String *Highlighton; String *Highlightoff; boolean canUseACS; boolean inCurses; int COLS; int ROWS; int Box_ul; int Box_ur; int Box_ll; int Box_lr; int Box_vline; int Box_hline; int Box_tt; int Box_bt; int Box_lt; int Box_rt; int Box_ct; void (*sigtstp)(); void (*sigwinch)(); }; typedef struct CursesStruct CursesObj; typedef struct CursesStruct *CursesObjp; #ifndef SYSVCURSES # define KEY_DOWN 0402 /* The four arrow keys ...*/ # define KEY_UP 0403 # define KEY_LEFT 0404 # define KEY_RIGHT 0405 # define KEY_NPAGE 0522 /* Next page */ # define KEY_PPAGE 0523 /* Previous page */ # define KEY_ENTER 0527 # define KEY_BACKSPACE 0407 # define KEY_HELP 0553 /* help key */ #endif /* * Definitions for character graphics */ #if defined(SYSVCURSES) && !defined(ultrix) && !defined(hpux) && !defined(_AUX_SOURCE) && !defined(__osf__) && !defined(_AIX) # define CUR_FANCY_BOXES #endif #if defined(VMS) || defined(__convex__) || defined(sequent) || defined(pyr) #if !defined(cbreak) #define cbreak crmode #endif #endif #if defined(__svr4__) # define CURS_MACROS #endif #ifndef KEY_HELP #define KEY_HELP 0553 /* help key */ #endif /* * Request types.... More to be added later.. */ #define CUR_LABEL 1 #define CUR_PROMPT 2 #define CUR_PASSWD 3 #define CUR_CHOICE 4 #define CUR_ASKL 5 #define CUR_FNAME 6 struct Requestitem_struct { char *prompt; char *stowage; int thing; int chooseitem; char **choices; }; typedef struct Requestitem_struct Requestitem; #define max(A, B) ((A) > (B) ? (A) : (B)) #define min(A, B) ((A) < (B) ? (A) : (B)) /* * access functions */ #define CURgetScreen(a) ((a)->Screen) #define CURgetTerm(a) (STRget((a)->Termtype)) #define CURgetCLS(a) (STRget((a)->Clearscreen)) #define CURgetBell(a) (STRget((a)->AudibleBell)) #define CURgetHighon(a) (STRget((a)->Highlighton)) #define CURgetHighoff(a) (STRget((a)->Highlightoff)) #ifdef VMS #define CURsetScreen(a,b) ((b),(a)->Screen=stdscr) #else #define CURsetScreen(a,b) ((a)->Screen=(b)) #endif #define CURsetTerm(a,b) (STRset((a)->Termtype, (b))) #define CURsetCLS(a,b) (STRset((a)->Clearscreen,(b))) #define CURsetBell(a,b) (STRset((a)->AudibleBell,(b))) #define CURsetHighon(a,b) (STRset((a)->Highlighton,(b))) #define CURsetHighoff(a,b) (STRset((a)->Highlightoff,(b))) #define CURsetSIGTSTP(a,b) ((a)->sigtstp=(b)) #define CURsetSIGWINCH(a,b) ((a)->sigwinch=(b)) #if defined(SYSVCURSES) || defined(A_BOLD) #define wboldout(win) (wattron(win, A_BOLD)) #define wboldend(win) (wattroff(win, A_BOLD)) #else #define wboldout(win) (wstandout(win)) #define wboldend(win) (wstandend(win)) #endif #define CURgetBox_ul(a) ((a)->Box_ul) #define CURgetBox_ur(a) ((a)->Box_ur) #define CURgetBox_ll(a) ((a)->Box_ll) #define CURgetBox_lr(a) ((a)->Box_lr) #define CURgetBox_vline(a) ((a)->Box_vline) #define CURgetBox_hline(a) ((a)->Box_hline) #define CURgetBox_tt(a) ((a)->Box_tt) #define CURgetBox_bt(a) ((a)->Box_bt) #define CURgetBox_lt(a) ((a)->Box_lt) #define CURgetBox_rt(a) ((a)->Box_rt) #define CURgetBox_ct(a) ((a)->Box_cr) CursesObj *CURnew(); void CURinit(); void CURcenterline(); void CURenter(); void CURexit(); int CURgetstr(); int CURgetch(); void CURresize(); int CURoutchar(); int CURGetOneOption(); void CURBeep(); void CURwenter(); void CURsetGraphicsChars(); #endif /* CURCURSES_H */ .