1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* Copyright (c) 1988 AT&T */ 23*7c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 24*7c478bd9Sstevel@tonic-gate 25*7c478bd9Sstevel@tonic-gate 26*7c478bd9Sstevel@tonic-gate /* 27*7c478bd9Sstevel@tonic-gate * Copyright (c) 1997, by Sun Mircrosystems, Inc. 28*7c478bd9Sstevel@tonic-gate * All rights reserved. 29*7c478bd9Sstevel@tonic-gate */ 30*7c478bd9Sstevel@tonic-gate 31*7c478bd9Sstevel@tonic-gate #ifndef _MENU_PRIVATE_H 32*7c478bd9Sstevel@tonic-gate #define _MENU_PRIVATE_H 33*7c478bd9Sstevel@tonic-gate 34*7c478bd9Sstevel@tonic-gate #include <menu.h> 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 37*7c478bd9Sstevel@tonic-gate extern "C" { 38*7c478bd9Sstevel@tonic-gate #endif 39*7c478bd9Sstevel@tonic-gate 40*7c478bd9Sstevel@tonic-gate /* Menu macros to access menu structure */ 41*7c478bd9Sstevel@tonic-gate 42*7c478bd9Sstevel@tonic-gate #define Height(m) (m)->height 43*7c478bd9Sstevel@tonic-gate #define Width(m) (m)->width 44*7c478bd9Sstevel@tonic-gate #define Rows(m) (m)->rows 45*7c478bd9Sstevel@tonic-gate #define Cols(m) (m)->cols 46*7c478bd9Sstevel@tonic-gate #define FRows(m) (m)->frows 47*7c478bd9Sstevel@tonic-gate #define FCols(m) (m)->fcols 48*7c478bd9Sstevel@tonic-gate #define MaxName(m) (m)->namelen 49*7c478bd9Sstevel@tonic-gate #define MaxDesc(m) (m)->desclen 50*7c478bd9Sstevel@tonic-gate #define Marklen(m) (m)->marklen 51*7c478bd9Sstevel@tonic-gate #define Itemlen(m) (m)->itemlen 52*7c478bd9Sstevel@tonic-gate #define Pattern(m) (m)->pattern 53*7c478bd9Sstevel@tonic-gate #define Pindex(m) (m)->pindex 54*7c478bd9Sstevel@tonic-gate #define IthPattern(m, i) (m)->pattern[i] 55*7c478bd9Sstevel@tonic-gate #define Win(m) (m)->win 56*7c478bd9Sstevel@tonic-gate #define Sub(m) (m)->sub 57*7c478bd9Sstevel@tonic-gate #define UserWin(m) (m)->userwin 58*7c478bd9Sstevel@tonic-gate #define UserSub(m) (m)->usersub 59*7c478bd9Sstevel@tonic-gate #define UW(m) (UserWin(m) ? UserWin(m) : stdscr) 60*7c478bd9Sstevel@tonic-gate #define US(m) (UserSub(m) ? UserSub(m) : UW(m)) 61*7c478bd9Sstevel@tonic-gate #define Items(m) (m)->items 62*7c478bd9Sstevel@tonic-gate #define IthItem(m, i) (m)->items[i] 63*7c478bd9Sstevel@tonic-gate #define Nitems(m) (m)->nitems 64*7c478bd9Sstevel@tonic-gate #define Current(m) (m)->curitem 65*7c478bd9Sstevel@tonic-gate #define Top(m) (m)->toprow 66*7c478bd9Sstevel@tonic-gate #define Pad(m) (m)->pad 67*7c478bd9Sstevel@tonic-gate #define Fore(m) (m)->fore 68*7c478bd9Sstevel@tonic-gate #define Back(m) (m)->back 69*7c478bd9Sstevel@tonic-gate #define Grey(m) (m)->grey 70*7c478bd9Sstevel@tonic-gate #define InvalidAttr(a) (((a) & (chtype) A_ATTRIBUTES) != (a)) 71*7c478bd9Sstevel@tonic-gate #define Mhelp(m) (m)->help 72*7c478bd9Sstevel@tonic-gate #define Muserptr(m) (m)->userptr 73*7c478bd9Sstevel@tonic-gate #define Mopt(m) (m)->opt 74*7c478bd9Sstevel@tonic-gate #define Mark(m) (m)->mark 75*7c478bd9Sstevel@tonic-gate #define Mstatus(m) (m)->status 76*7c478bd9Sstevel@tonic-gate #define Posted(m) (Mstatus(m) & _POSTED) 77*7c478bd9Sstevel@tonic-gate #define Indriver(m) (Mstatus(m) & _IN_DRIVER) 78*7c478bd9Sstevel@tonic-gate #define LinkNeeded(m) (Mstatus(m) & _LINK_NEEDED) 79*7c478bd9Sstevel@tonic-gate #define SetPost(m) (Mstatus(m) |= _POSTED) 80*7c478bd9Sstevel@tonic-gate #define SetDriver(m) (Mstatus(m) |= _IN_DRIVER) 81*7c478bd9Sstevel@tonic-gate #define SetLink(m) (Mstatus(m) |= _LINK_NEEDED) 82*7c478bd9Sstevel@tonic-gate #define ResetPost(m) (Mstatus(m) &= ~_POSTED) 83*7c478bd9Sstevel@tonic-gate #define ResetDriver(m) (Mstatus(m) &= ~_IN_DRIVER) 84*7c478bd9Sstevel@tonic-gate #define ResetLink(m) (Mstatus(m) &= ~_LINK_NEEDED) 85*7c478bd9Sstevel@tonic-gate #define SMinit(m) (m)->menuinit 86*7c478bd9Sstevel@tonic-gate #define SMterm(m) (m)->menuterm 87*7c478bd9Sstevel@tonic-gate #define SIinit(m) (m)->iteminit 88*7c478bd9Sstevel@tonic-gate #define SIterm(m) (m)->itemterm 89*7c478bd9Sstevel@tonic-gate #define Minit(m) if (m->menuinit) { \ 90*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 91*7c478bd9Sstevel@tonic-gate (m)->menuinit(m); \ 92*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 93*7c478bd9Sstevel@tonic-gate } 94*7c478bd9Sstevel@tonic-gate #define Mterm(m) if (m->menuterm) { \ 95*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 96*7c478bd9Sstevel@tonic-gate (m)->menuterm(m); \ 97*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 98*7c478bd9Sstevel@tonic-gate } 99*7c478bd9Sstevel@tonic-gate #define Iinit(m) if (m->iteminit) { \ 100*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 101*7c478bd9Sstevel@tonic-gate (m)->iteminit(m); \ 102*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 103*7c478bd9Sstevel@tonic-gate } 104*7c478bd9Sstevel@tonic-gate #define Iterm(m) if (m->itemterm) { \ 105*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 106*7c478bd9Sstevel@tonic-gate (m)->itemterm(m); \ 107*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 108*7c478bd9Sstevel@tonic-gate } 109*7c478bd9Sstevel@tonic-gate 110*7c478bd9Sstevel@tonic-gate /* Define access to Mopt */ 111*7c478bd9Sstevel@tonic-gate 112*7c478bd9Sstevel@tonic-gate #define OneValue(m) (Mopt(m) & O_ONEVALUE) 113*7c478bd9Sstevel@tonic-gate #define ShowDesc(m) (Mopt(m) & O_SHOWDESC) 114*7c478bd9Sstevel@tonic-gate #define RowMajor(m) (Mopt(m) & O_ROWMAJOR) 115*7c478bd9Sstevel@tonic-gate #define IgnoreCase(m) (Mopt(m) & O_IGNORECASE) 116*7c478bd9Sstevel@tonic-gate #define ShowMatch(m) (Mopt(m) & O_SHOWMATCH) 117*7c478bd9Sstevel@tonic-gate #define Cyclic(m) (!(Mopt(m) & O_NONCYCLIC)) 118*7c478bd9Sstevel@tonic-gate 119*7c478bd9Sstevel@tonic-gate /* Item macros to access item structure */ 120*7c478bd9Sstevel@tonic-gate 121*7c478bd9Sstevel@tonic-gate #define Name(i) (i)->name.str 122*7c478bd9Sstevel@tonic-gate #define NameLen(i) (i)->name.length 123*7c478bd9Sstevel@tonic-gate #define Description(i) (i)->description.str 124*7c478bd9Sstevel@tonic-gate #define DescriptionLen(i) (i)->description.length 125*7c478bd9Sstevel@tonic-gate #define Index(i) (i)->index 126*7c478bd9Sstevel@tonic-gate #define Y(i) (i)->y 127*7c478bd9Sstevel@tonic-gate #define X(i) (i)->x 128*7c478bd9Sstevel@tonic-gate #define Imenu(i) (i)->imenu 129*7c478bd9Sstevel@tonic-gate #define Value(i) (i)->value 130*7c478bd9Sstevel@tonic-gate #define Ihelp(i) (i)->help 131*7c478bd9Sstevel@tonic-gate #define Iuserptr(i) (i)->userptr 132*7c478bd9Sstevel@tonic-gate #define Iopt(i) (i)->opt 133*7c478bd9Sstevel@tonic-gate #define Istatus(i) (i)->status 134*7c478bd9Sstevel@tonic-gate #define Up(i) (i)->up 135*7c478bd9Sstevel@tonic-gate #define Down(i) (i)->down 136*7c478bd9Sstevel@tonic-gate #define Left(i) (i)->left 137*7c478bd9Sstevel@tonic-gate #define Right(i) (i)->right 138*7c478bd9Sstevel@tonic-gate #define Selectable(i) (Iopt(i) & O_SELECTABLE) 139*7c478bd9Sstevel@tonic-gate 140*7c478bd9Sstevel@tonic-gate /* Default menu macros */ 141*7c478bd9Sstevel@tonic-gate 142*7c478bd9Sstevel@tonic-gate #define Dfl_Menu (&_Default_Menu) 143*7c478bd9Sstevel@tonic-gate #define Dfl_Item (&_Default_Item) 144*7c478bd9Sstevel@tonic-gate 145*7c478bd9Sstevel@tonic-gate #define max(a, b) ((a) > (b)) ? (a) : (b) 146*7c478bd9Sstevel@tonic-gate #define min(a, b) ((a) < (b)) ? (a) : (b) 147*7c478bd9Sstevel@tonic-gate 148*7c478bd9Sstevel@tonic-gate extern MENU _Default_Menu; 149*7c478bd9Sstevel@tonic-gate extern ITEM _Default_Item; 150*7c478bd9Sstevel@tonic-gate 151*7c478bd9Sstevel@tonic-gate extern void _affect_change(MENU *, int, ITEM *); 152*7c478bd9Sstevel@tonic-gate extern void _chk_current(MENU *, int *, ITEM *); 153*7c478bd9Sstevel@tonic-gate extern void _chk_top(MENU *, int *, ITEM *); 154*7c478bd9Sstevel@tonic-gate extern void _disconnect(MENU *); 155*7c478bd9Sstevel@tonic-gate extern void _draw(MENU *); 156*7c478bd9Sstevel@tonic-gate extern void _link_items(MENU *); 157*7c478bd9Sstevel@tonic-gate extern void _move_post_item(MENU *, ITEM *); 158*7c478bd9Sstevel@tonic-gate extern void _movecurrent(MENU *, ITEM *); 159*7c478bd9Sstevel@tonic-gate extern void _position_cursor(MENU *); 160*7c478bd9Sstevel@tonic-gate extern void _scale(MENU *); 161*7c478bd9Sstevel@tonic-gate extern void _show(MENU *); 162*7c478bd9Sstevel@tonic-gate extern int _match(MENU *, char, ITEM **); 163*7c478bd9Sstevel@tonic-gate extern int _connect(MENU *, ITEM **); 164*7c478bd9Sstevel@tonic-gate 165*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 166*7c478bd9Sstevel@tonic-gate } 167*7c478bd9Sstevel@tonic-gate #endif 168*7c478bd9Sstevel@tonic-gate 169*7c478bd9Sstevel@tonic-gate #endif /* _MENU_PRIVATE_H */ 170