245 lines
5.8 KiB
C
Executable File
245 lines
5.8 KiB
C
Executable File
/* Copyright (c) 1988 AT&T */
|
|
/* All Rights Reserved */
|
|
|
|
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
|
|
/* The copyright notice above does not evidence any */
|
|
/* actual or intended publication of such source code. */
|
|
|
|
#ifndef _MENU_H
|
|
#define _MENU_H
|
|
|
|
#pragma ident "@(#)menu.h 1.5 93/11/01 SMI" /* SVr4.0 1.15 */
|
|
|
|
#include <curses.h>
|
|
#include <eti.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Menu options: */
|
|
#define O_ONEVALUE 0x01
|
|
#define O_SHOWDESC 0x02
|
|
#define O_ROWMAJOR 0x04
|
|
#define O_IGNORECASE 0x08
|
|
#define O_SHOWMATCH 0x10
|
|
#define O_NONCYCLIC 0x20
|
|
|
|
/* Item options: */
|
|
#define O_SELECTABLE 0x01
|
|
|
|
typedef struct {
|
|
char *str;
|
|
int length;
|
|
} TEXT;
|
|
|
|
typedef struct ITEM {
|
|
TEXT name;
|
|
TEXT description;
|
|
int index; /* Item number */
|
|
struct MENU *imenu; /* Pointer to parent menu */
|
|
int value;
|
|
char *userptr;
|
|
OPTIONS opt;
|
|
int status;
|
|
short y; /* y and x location of item in menu */
|
|
short x;
|
|
struct ITEM *left;
|
|
struct ITEM *right;
|
|
struct ITEM *up;
|
|
struct ITEM *down;
|
|
} ITEM;
|
|
|
|
#define _POSTED 0x1
|
|
#define _IN_DRIVER 0x2
|
|
#define _LINK_NEEDED 0x4
|
|
|
|
typedef struct MENU {
|
|
int height; /* Number of chars high */
|
|
int width; /* Number of chars wide */
|
|
int rows; /* Number of items high */
|
|
int cols; /* Number of items wide */
|
|
int frows; /* Number of formated items high */
|
|
int fcols; /* Number of formated items wide */
|
|
int namelen; /* Length of widest name */
|
|
int desclen; /* Length of widest description */
|
|
int marklen; /* Length of mark */
|
|
int itemlen; /* Length of an one item */
|
|
char *pattern; /* Buffer used to store match chars */
|
|
int pindex; /* Index into pattern buffer */
|
|
WINDOW *win; /* Window containing entire menu */
|
|
WINDOW *sub; /* Portion of menu displayed */
|
|
WINDOW *userwin; /* User's window */
|
|
WINDOW *usersub; /* User's subwindow */
|
|
ITEM **items;
|
|
int nitems; /* Total number of items in menu */
|
|
ITEM *curitem; /* Current item */
|
|
int toprow; /* Top row of menu */
|
|
int pad; /* Pad character */
|
|
chtype fore; /* Attribute for selection */
|
|
chtype back; /* Attribute for nonselection */
|
|
chtype grey; /* Attribute for inactive */
|
|
PTF_void menuinit;
|
|
PTF_void menuterm;
|
|
PTF_void iteminit;
|
|
PTF_void itemterm;
|
|
char *userptr;
|
|
char *mark;
|
|
OPTIONS opt;
|
|
int status;
|
|
} MENU;
|
|
|
|
/* Define keys */
|
|
|
|
#define REQ_LEFT_ITEM KEY_MAX+1
|
|
#define REQ_RIGHT_ITEM KEY_MAX+2
|
|
#define REQ_UP_ITEM KEY_MAX+3
|
|
#define REQ_DOWN_ITEM KEY_MAX+4
|
|
#define REQ_SCR_ULINE KEY_MAX+5
|
|
#define REQ_SCR_DLINE KEY_MAX+6
|
|
#define REQ_SCR_DPAGE KEY_MAX+7
|
|
#define REQ_SCR_UPAGE KEY_MAX+8
|
|
#define REQ_FIRST_ITEM KEY_MAX+9
|
|
#define REQ_LAST_ITEM KEY_MAX+10
|
|
#define REQ_NEXT_ITEM KEY_MAX+11
|
|
#define REQ_PREV_ITEM KEY_MAX+12
|
|
#define REQ_TOGGLE_ITEM KEY_MAX+13
|
|
#define REQ_CLEAR_PATTERN KEY_MAX+14
|
|
#define REQ_BACK_PATTERN KEY_MAX+15
|
|
#define REQ_NEXT_MATCH KEY_MAX+16
|
|
#define REQ_PREV_MATCH KEY_MAX+17
|
|
|
|
#ifdef __STDC__
|
|
|
|
extern ITEM **menu_items(MENU *),
|
|
*current_item(MENU *),
|
|
*new_item(char *, char *);
|
|
extern MENU *new_menu(ITEM **);
|
|
extern OPTIONS item_opts(ITEM *),
|
|
menu_opts(MENU *);
|
|
extern PTF_void item_init(MENU *),
|
|
item_term(MENU *),
|
|
menu_init(MENU *),
|
|
menu_term(MENU *);
|
|
extern WINDOW *menu_sub(MENU *),
|
|
*menu_win(MENU *);
|
|
extern char *item_description(ITEM *),
|
|
*item_name(ITEM *),
|
|
*item_userptr(ITEM *),
|
|
*menu_mark(MENU *),
|
|
*menu_pattern(MENU *),
|
|
*menu_userptr(MENU *);
|
|
extern chtype menu_back(MENU *),
|
|
menu_fore(MENU *),
|
|
menu_grey(MENU *);
|
|
extern int free_item(ITEM *),
|
|
free_menu(MENU *),
|
|
item_count(MENU *),
|
|
item_index(ITEM *),
|
|
item_opts_off(ITEM *, OPTIONS),
|
|
item_opts_on(ITEM *, OPTIONS),
|
|
item_value(ITEM *),
|
|
item_visible(ITEM *),
|
|
menu_driver(MENU *, int),
|
|
menu_opts_off(MENU *, OPTIONS),
|
|
menu_opts_on(MENU *, OPTIONS),
|
|
menu_pad(MENU *),
|
|
pos_menu_cursor(MENU *),
|
|
post_menu(MENU *),
|
|
scale_menu(MENU *, int *, int *),
|
|
set_current_item(MENU *, ITEM *),
|
|
set_item_init(MENU *, PTF_void),
|
|
set_item_opts(ITEM *, OPTIONS),
|
|
set_item_term(MENU *, PTF_void),
|
|
set_item_userptr(ITEM *, char *),
|
|
set_item_value(ITEM *, int),
|
|
set_menu_back(MENU *, chtype),
|
|
set_menu_fore(MENU *, chtype),
|
|
set_menu_format(MENU *, int, int),
|
|
set_menu_grey(MENU *, chtype),
|
|
set_menu_init(MENU *, PTF_void),
|
|
set_menu_items(MENU *, ITEM **),
|
|
set_menu_mark(MENU *, char *),
|
|
set_menu_opts(MENU *, OPTIONS),
|
|
set_menu_pad(MENU *, int),
|
|
set_menu_pattern(MENU *, char *),
|
|
set_menu_sub(MENU *, WINDOW *),
|
|
set_menu_term(MENU *, PTF_void),
|
|
set_menu_userptr(MENU *, char *),
|
|
set_menu_win(MENU *, WINDOW *),
|
|
set_top_row(MENU *, int),
|
|
top_row(MENU *),
|
|
unpost_menu(MENU *);
|
|
void menu_format(MENU *, int *, int *);
|
|
|
|
#else /* old style extern's */
|
|
|
|
extern ITEM **menu_items(),
|
|
*current_item(),
|
|
*new_item();
|
|
extern MENU *new_menu();
|
|
extern OPTIONS item_opts(),
|
|
menu_opts();
|
|
extern PTF_void item_init(),
|
|
item_term(),
|
|
menu_init(),
|
|
menu_term();
|
|
extern WINDOW *menu_sub(),
|
|
*menu_win();
|
|
extern char *item_description(),
|
|
*item_name(),
|
|
*item_userptr(),
|
|
*menu_mark(),
|
|
*menu_pattern(),
|
|
*menu_userptr();
|
|
extern chtype menu_back(),
|
|
menu_fore(),
|
|
menu_grey();
|
|
extern int free_item(),
|
|
free_menu(),
|
|
item_count(),
|
|
item_index(),
|
|
item_opts_off(),
|
|
item_opts_on(),
|
|
item_value(),
|
|
item_visible(),
|
|
menu_driver(),
|
|
menu_opts_off(),
|
|
menu_opts_on(),
|
|
menu_pad(),
|
|
pos_menu_cursor(),
|
|
post_menu(),
|
|
scale_menu(),
|
|
set_current_item(),
|
|
set_item_init(),
|
|
set_item_opts(),
|
|
set_item_term(),
|
|
set_item_userptr(),
|
|
set_item_value(),
|
|
set_menu_back(),
|
|
set_menu_fore(),
|
|
set_menu_format(),
|
|
set_menu_grey(),
|
|
set_menu_init(),
|
|
set_menu_items(),
|
|
set_menu_mark(),
|
|
set_menu_opts(),
|
|
set_menu_pad(),
|
|
set_menu_pattern(),
|
|
set_menu_sub(),
|
|
set_menu_term(),
|
|
set_menu_userptr(),
|
|
set_menu_win(),
|
|
set_top_row(),
|
|
top_row(),
|
|
unpost_menu();
|
|
void menu_format();
|
|
|
|
#endif /* __STDC__ */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _MENU_H */
|