1*0Sstevel@tonic-gate /* 2*0Sstevel@tonic-gate * CDDL HEADER START 3*0Sstevel@tonic-gate * 4*0Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*0Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*0Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*0Sstevel@tonic-gate * with the License. 8*0Sstevel@tonic-gate * 9*0Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*0Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*0Sstevel@tonic-gate * See the License for the specific language governing permissions 12*0Sstevel@tonic-gate * and limitations under the License. 13*0Sstevel@tonic-gate * 14*0Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*0Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*0Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*0Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*0Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*0Sstevel@tonic-gate * 20*0Sstevel@tonic-gate * CDDL HEADER END 21*0Sstevel@tonic-gate */ 22*0Sstevel@tonic-gate /* Copyright (c) 1988 AT&T */ 23*0Sstevel@tonic-gate /* All Rights Reserved */ 24*0Sstevel@tonic-gate 25*0Sstevel@tonic-gate 26*0Sstevel@tonic-gate /* 27*0Sstevel@tonic-gate * Copyright (c) 1997, by Sun Microsystems, Inc. 28*0Sstevel@tonic-gate * All rights reserved. 29*0Sstevel@tonic-gate */ 30*0Sstevel@tonic-gate 31*0Sstevel@tonic-gate #ifndef _MENU_H 32*0Sstevel@tonic-gate #define _MENU_H 33*0Sstevel@tonic-gate 34*0Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.15 */ 35*0Sstevel@tonic-gate 36*0Sstevel@tonic-gate #include <curses.h> 37*0Sstevel@tonic-gate #include <eti.h> 38*0Sstevel@tonic-gate 39*0Sstevel@tonic-gate #ifdef __cplusplus 40*0Sstevel@tonic-gate extern "C" { 41*0Sstevel@tonic-gate #endif 42*0Sstevel@tonic-gate 43*0Sstevel@tonic-gate /* Menu options: */ 44*0Sstevel@tonic-gate #define O_ONEVALUE 0x01 45*0Sstevel@tonic-gate #define O_SHOWDESC 0x02 46*0Sstevel@tonic-gate #define O_ROWMAJOR 0x04 47*0Sstevel@tonic-gate #define O_IGNORECASE 0x08 48*0Sstevel@tonic-gate #define O_SHOWMATCH 0x10 49*0Sstevel@tonic-gate #define O_NONCYCLIC 0x20 50*0Sstevel@tonic-gate 51*0Sstevel@tonic-gate /* Item options: */ 52*0Sstevel@tonic-gate #define O_SELECTABLE 0x01 53*0Sstevel@tonic-gate 54*0Sstevel@tonic-gate typedef struct { 55*0Sstevel@tonic-gate char *str; 56*0Sstevel@tonic-gate int length; 57*0Sstevel@tonic-gate } TEXT; 58*0Sstevel@tonic-gate 59*0Sstevel@tonic-gate typedef struct ITEM { 60*0Sstevel@tonic-gate TEXT name; 61*0Sstevel@tonic-gate TEXT description; 62*0Sstevel@tonic-gate int index; /* Item number */ 63*0Sstevel@tonic-gate struct MENU *imenu; /* Pointer to parent menu */ 64*0Sstevel@tonic-gate int value; 65*0Sstevel@tonic-gate char *userptr; 66*0Sstevel@tonic-gate OPTIONS opt; 67*0Sstevel@tonic-gate int status; 68*0Sstevel@tonic-gate short y; /* y and x location of item in menu */ 69*0Sstevel@tonic-gate short x; 70*0Sstevel@tonic-gate struct ITEM *left; 71*0Sstevel@tonic-gate struct ITEM *right; 72*0Sstevel@tonic-gate struct ITEM *up; 73*0Sstevel@tonic-gate struct ITEM *down; 74*0Sstevel@tonic-gate } ITEM; 75*0Sstevel@tonic-gate 76*0Sstevel@tonic-gate #define _POSTED 0x1 77*0Sstevel@tonic-gate #define _IN_DRIVER 0x2 78*0Sstevel@tonic-gate #define _LINK_NEEDED 0x4 79*0Sstevel@tonic-gate 80*0Sstevel@tonic-gate typedef struct MENU { 81*0Sstevel@tonic-gate int height; /* Number of chars high */ 82*0Sstevel@tonic-gate int width; /* Number of chars wide */ 83*0Sstevel@tonic-gate int rows; /* Number of items high */ 84*0Sstevel@tonic-gate int cols; /* Number of items wide */ 85*0Sstevel@tonic-gate int frows; /* Number of formated items high */ 86*0Sstevel@tonic-gate int fcols; /* Number of formated items wide */ 87*0Sstevel@tonic-gate int namelen; /* Length of widest name */ 88*0Sstevel@tonic-gate int desclen; /* Length of widest description */ 89*0Sstevel@tonic-gate int marklen; /* Length of mark */ 90*0Sstevel@tonic-gate int itemlen; /* Length of an one item */ 91*0Sstevel@tonic-gate char *pattern; /* Buffer used to store match chars */ 92*0Sstevel@tonic-gate int pindex; /* Index into pattern buffer */ 93*0Sstevel@tonic-gate WINDOW *win; /* Window containing entire menu */ 94*0Sstevel@tonic-gate WINDOW *sub; /* Portion of menu displayed */ 95*0Sstevel@tonic-gate WINDOW *userwin; /* User's window */ 96*0Sstevel@tonic-gate WINDOW *usersub; /* User's subwindow */ 97*0Sstevel@tonic-gate ITEM **items; 98*0Sstevel@tonic-gate int nitems; /* Total number of items in menu */ 99*0Sstevel@tonic-gate ITEM *curitem; /* Current item */ 100*0Sstevel@tonic-gate int toprow; /* Top row of menu */ 101*0Sstevel@tonic-gate int pad; /* Pad character */ 102*0Sstevel@tonic-gate chtype fore; /* Attribute for selection */ 103*0Sstevel@tonic-gate chtype back; /* Attribute for nonselection */ 104*0Sstevel@tonic-gate chtype grey; /* Attribute for inactive */ 105*0Sstevel@tonic-gate PTF_void menuinit; 106*0Sstevel@tonic-gate PTF_void menuterm; 107*0Sstevel@tonic-gate PTF_void iteminit; 108*0Sstevel@tonic-gate PTF_void itemterm; 109*0Sstevel@tonic-gate char *userptr; 110*0Sstevel@tonic-gate char *mark; 111*0Sstevel@tonic-gate OPTIONS opt; 112*0Sstevel@tonic-gate int status; 113*0Sstevel@tonic-gate } MENU; 114*0Sstevel@tonic-gate 115*0Sstevel@tonic-gate /* Define keys */ 116*0Sstevel@tonic-gate 117*0Sstevel@tonic-gate #define REQ_LEFT_ITEM KEY_MAX+1 118*0Sstevel@tonic-gate #define REQ_RIGHT_ITEM KEY_MAX+2 119*0Sstevel@tonic-gate #define REQ_UP_ITEM KEY_MAX+3 120*0Sstevel@tonic-gate #define REQ_DOWN_ITEM KEY_MAX+4 121*0Sstevel@tonic-gate #define REQ_SCR_ULINE KEY_MAX+5 122*0Sstevel@tonic-gate #define REQ_SCR_DLINE KEY_MAX+6 123*0Sstevel@tonic-gate #define REQ_SCR_DPAGE KEY_MAX+7 124*0Sstevel@tonic-gate #define REQ_SCR_UPAGE KEY_MAX+8 125*0Sstevel@tonic-gate #define REQ_FIRST_ITEM KEY_MAX+9 126*0Sstevel@tonic-gate #define REQ_LAST_ITEM KEY_MAX+10 127*0Sstevel@tonic-gate #define REQ_NEXT_ITEM KEY_MAX+11 128*0Sstevel@tonic-gate #define REQ_PREV_ITEM KEY_MAX+12 129*0Sstevel@tonic-gate #define REQ_TOGGLE_ITEM KEY_MAX+13 130*0Sstevel@tonic-gate #define REQ_CLEAR_PATTERN KEY_MAX+14 131*0Sstevel@tonic-gate #define REQ_BACK_PATTERN KEY_MAX+15 132*0Sstevel@tonic-gate #define REQ_NEXT_MATCH KEY_MAX+16 133*0Sstevel@tonic-gate #define REQ_PREV_MATCH KEY_MAX+17 134*0Sstevel@tonic-gate 135*0Sstevel@tonic-gate #ifdef __STDC__ 136*0Sstevel@tonic-gate 137*0Sstevel@tonic-gate extern ITEM **menu_items(MENU *), 138*0Sstevel@tonic-gate *current_item(MENU *), 139*0Sstevel@tonic-gate *new_item(char *, char *); 140*0Sstevel@tonic-gate extern MENU *new_menu(ITEM **); 141*0Sstevel@tonic-gate extern OPTIONS item_opts(ITEM *), 142*0Sstevel@tonic-gate menu_opts(MENU *); 143*0Sstevel@tonic-gate extern PTF_void item_init(MENU *), 144*0Sstevel@tonic-gate item_term(MENU *), 145*0Sstevel@tonic-gate menu_init(MENU *), 146*0Sstevel@tonic-gate menu_term(MENU *); 147*0Sstevel@tonic-gate extern WINDOW *menu_sub(MENU *), 148*0Sstevel@tonic-gate *menu_win(MENU *); 149*0Sstevel@tonic-gate extern char *item_description(ITEM *), 150*0Sstevel@tonic-gate *item_name(ITEM *), 151*0Sstevel@tonic-gate *item_userptr(ITEM *), 152*0Sstevel@tonic-gate *menu_mark(MENU *), 153*0Sstevel@tonic-gate *menu_pattern(MENU *), 154*0Sstevel@tonic-gate *menu_userptr(MENU *); 155*0Sstevel@tonic-gate extern chtype menu_back(MENU *), 156*0Sstevel@tonic-gate menu_fore(MENU *), 157*0Sstevel@tonic-gate menu_grey(MENU *); 158*0Sstevel@tonic-gate extern int free_item(ITEM *), 159*0Sstevel@tonic-gate free_menu(MENU *), 160*0Sstevel@tonic-gate item_count(MENU *), 161*0Sstevel@tonic-gate item_index(ITEM *), 162*0Sstevel@tonic-gate item_opts_off(ITEM *, OPTIONS), 163*0Sstevel@tonic-gate item_opts_on(ITEM *, OPTIONS), 164*0Sstevel@tonic-gate item_value(ITEM *), 165*0Sstevel@tonic-gate item_visible(ITEM *), 166*0Sstevel@tonic-gate menu_driver(MENU *, int), 167*0Sstevel@tonic-gate menu_opts_off(MENU *, OPTIONS), 168*0Sstevel@tonic-gate menu_opts_on(MENU *, OPTIONS), 169*0Sstevel@tonic-gate menu_pad(MENU *), 170*0Sstevel@tonic-gate pos_menu_cursor(MENU *), 171*0Sstevel@tonic-gate post_menu(MENU *), 172*0Sstevel@tonic-gate scale_menu(MENU *, int *, int *), 173*0Sstevel@tonic-gate set_current_item(MENU *, ITEM *), 174*0Sstevel@tonic-gate set_item_init(MENU *, PTF_void), 175*0Sstevel@tonic-gate set_item_opts(ITEM *, OPTIONS), 176*0Sstevel@tonic-gate set_item_term(MENU *, PTF_void), 177*0Sstevel@tonic-gate set_item_userptr(ITEM *, char *), 178*0Sstevel@tonic-gate set_item_value(ITEM *, int), 179*0Sstevel@tonic-gate set_menu_back(MENU *, chtype), 180*0Sstevel@tonic-gate set_menu_fore(MENU *, chtype), 181*0Sstevel@tonic-gate set_menu_format(MENU *, int, int), 182*0Sstevel@tonic-gate set_menu_grey(MENU *, chtype), 183*0Sstevel@tonic-gate set_menu_init(MENU *, PTF_void), 184*0Sstevel@tonic-gate set_menu_items(MENU *, ITEM **), 185*0Sstevel@tonic-gate set_menu_mark(MENU *, char *), 186*0Sstevel@tonic-gate set_menu_opts(MENU *, OPTIONS), 187*0Sstevel@tonic-gate set_menu_pad(MENU *, int), 188*0Sstevel@tonic-gate set_menu_pattern(MENU *, char *), 189*0Sstevel@tonic-gate set_menu_sub(MENU *, WINDOW *), 190*0Sstevel@tonic-gate set_menu_term(MENU *, PTF_void), 191*0Sstevel@tonic-gate set_menu_userptr(MENU *, char *), 192*0Sstevel@tonic-gate set_menu_win(MENU *, WINDOW *), 193*0Sstevel@tonic-gate set_top_row(MENU *, int), 194*0Sstevel@tonic-gate top_row(MENU *), 195*0Sstevel@tonic-gate unpost_menu(MENU *); 196*0Sstevel@tonic-gate void menu_format(MENU *, int *, int *); 197*0Sstevel@tonic-gate 198*0Sstevel@tonic-gate #else /* old style extern's */ 199*0Sstevel@tonic-gate 200*0Sstevel@tonic-gate extern ITEM **menu_items(), 201*0Sstevel@tonic-gate *current_item(), 202*0Sstevel@tonic-gate *new_item(); 203*0Sstevel@tonic-gate extern MENU *new_menu(); 204*0Sstevel@tonic-gate extern OPTIONS item_opts(), 205*0Sstevel@tonic-gate menu_opts(); 206*0Sstevel@tonic-gate extern PTF_void item_init(), 207*0Sstevel@tonic-gate item_term(), 208*0Sstevel@tonic-gate menu_init(), 209*0Sstevel@tonic-gate menu_term(); 210*0Sstevel@tonic-gate extern WINDOW *menu_sub(), 211*0Sstevel@tonic-gate *menu_win(); 212*0Sstevel@tonic-gate extern char *item_description(), 213*0Sstevel@tonic-gate *item_name(), 214*0Sstevel@tonic-gate *item_userptr(), 215*0Sstevel@tonic-gate *menu_mark(), 216*0Sstevel@tonic-gate *menu_pattern(), 217*0Sstevel@tonic-gate *menu_userptr(); 218*0Sstevel@tonic-gate extern chtype menu_back(), 219*0Sstevel@tonic-gate menu_fore(), 220*0Sstevel@tonic-gate menu_grey(); 221*0Sstevel@tonic-gate extern int free_item(), 222*0Sstevel@tonic-gate free_menu(), 223*0Sstevel@tonic-gate item_count(), 224*0Sstevel@tonic-gate item_index(), 225*0Sstevel@tonic-gate item_opts_off(), 226*0Sstevel@tonic-gate item_opts_on(), 227*0Sstevel@tonic-gate item_value(), 228*0Sstevel@tonic-gate item_visible(), 229*0Sstevel@tonic-gate menu_driver(), 230*0Sstevel@tonic-gate menu_opts_off(), 231*0Sstevel@tonic-gate menu_opts_on(), 232*0Sstevel@tonic-gate menu_pad(), 233*0Sstevel@tonic-gate pos_menu_cursor(), 234*0Sstevel@tonic-gate post_menu(), 235*0Sstevel@tonic-gate scale_menu(), 236*0Sstevel@tonic-gate set_current_item(), 237*0Sstevel@tonic-gate set_item_init(), 238*0Sstevel@tonic-gate set_item_opts(), 239*0Sstevel@tonic-gate set_item_term(), 240*0Sstevel@tonic-gate set_item_userptr(), 241*0Sstevel@tonic-gate set_item_value(), 242*0Sstevel@tonic-gate set_menu_back(), 243*0Sstevel@tonic-gate set_menu_fore(), 244*0Sstevel@tonic-gate set_menu_format(), 245*0Sstevel@tonic-gate set_menu_grey(), 246*0Sstevel@tonic-gate set_menu_init(), 247*0Sstevel@tonic-gate set_menu_items(), 248*0Sstevel@tonic-gate set_menu_mark(), 249*0Sstevel@tonic-gate set_menu_opts(), 250*0Sstevel@tonic-gate set_menu_pad(), 251*0Sstevel@tonic-gate set_menu_pattern(), 252*0Sstevel@tonic-gate set_menu_sub(), 253*0Sstevel@tonic-gate set_menu_term(), 254*0Sstevel@tonic-gate set_menu_userptr(), 255*0Sstevel@tonic-gate set_menu_win(), 256*0Sstevel@tonic-gate set_top_row(), 257*0Sstevel@tonic-gate top_row(), 258*0Sstevel@tonic-gate unpost_menu(); 259*0Sstevel@tonic-gate void menu_format(); 260*0Sstevel@tonic-gate 261*0Sstevel@tonic-gate #endif /* __STDC__ */ 262*0Sstevel@tonic-gate 263*0Sstevel@tonic-gate #ifdef __cplusplus 264*0Sstevel@tonic-gate } 265*0Sstevel@tonic-gate #endif 266*0Sstevel@tonic-gate 267*0Sstevel@tonic-gate #endif /* _MENU_H */ 268