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 #pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.9 */ 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate #include <menu.h> 37*7c478bd9Sstevel@tonic-gate 38*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 39*7c478bd9Sstevel@tonic-gate extern "C" { 40*7c478bd9Sstevel@tonic-gate #endif 41*7c478bd9Sstevel@tonic-gate 42*7c478bd9Sstevel@tonic-gate /* Menu macros to access menu structure */ 43*7c478bd9Sstevel@tonic-gate 44*7c478bd9Sstevel@tonic-gate #define Height(m) (m)->height 45*7c478bd9Sstevel@tonic-gate #define Width(m) (m)->width 46*7c478bd9Sstevel@tonic-gate #define Rows(m) (m)->rows 47*7c478bd9Sstevel@tonic-gate #define Cols(m) (m)->cols 48*7c478bd9Sstevel@tonic-gate #define FRows(m) (m)->frows 49*7c478bd9Sstevel@tonic-gate #define FCols(m) (m)->fcols 50*7c478bd9Sstevel@tonic-gate #define MaxName(m) (m)->namelen 51*7c478bd9Sstevel@tonic-gate #define MaxDesc(m) (m)->desclen 52*7c478bd9Sstevel@tonic-gate #define Marklen(m) (m)->marklen 53*7c478bd9Sstevel@tonic-gate #define Itemlen(m) (m)->itemlen 54*7c478bd9Sstevel@tonic-gate #define Pattern(m) (m)->pattern 55*7c478bd9Sstevel@tonic-gate #define Pindex(m) (m)->pindex 56*7c478bd9Sstevel@tonic-gate #define IthPattern(m, i) (m)->pattern[i] 57*7c478bd9Sstevel@tonic-gate #define Win(m) (m)->win 58*7c478bd9Sstevel@tonic-gate #define Sub(m) (m)->sub 59*7c478bd9Sstevel@tonic-gate #define UserWin(m) (m)->userwin 60*7c478bd9Sstevel@tonic-gate #define UserSub(m) (m)->usersub 61*7c478bd9Sstevel@tonic-gate #define UW(m) (UserWin(m) ? UserWin(m) : stdscr) 62*7c478bd9Sstevel@tonic-gate #define US(m) (UserSub(m) ? UserSub(m) : UW(m)) 63*7c478bd9Sstevel@tonic-gate #define Items(m) (m)->items 64*7c478bd9Sstevel@tonic-gate #define IthItem(m, i) (m)->items[i] 65*7c478bd9Sstevel@tonic-gate #define Nitems(m) (m)->nitems 66*7c478bd9Sstevel@tonic-gate #define Current(m) (m)->curitem 67*7c478bd9Sstevel@tonic-gate #define Top(m) (m)->toprow 68*7c478bd9Sstevel@tonic-gate #define Pad(m) (m)->pad 69*7c478bd9Sstevel@tonic-gate #define Fore(m) (m)->fore 70*7c478bd9Sstevel@tonic-gate #define Back(m) (m)->back 71*7c478bd9Sstevel@tonic-gate #define Grey(m) (m)->grey 72*7c478bd9Sstevel@tonic-gate #define InvalidAttr(a) (((a) & (chtype) A_ATTRIBUTES) != (a)) 73*7c478bd9Sstevel@tonic-gate #define Mhelp(m) (m)->help 74*7c478bd9Sstevel@tonic-gate #define Muserptr(m) (m)->userptr 75*7c478bd9Sstevel@tonic-gate #define Mopt(m) (m)->opt 76*7c478bd9Sstevel@tonic-gate #define Mark(m) (m)->mark 77*7c478bd9Sstevel@tonic-gate #define Mstatus(m) (m)->status 78*7c478bd9Sstevel@tonic-gate #define Posted(m) (Mstatus(m) & _POSTED) 79*7c478bd9Sstevel@tonic-gate #define Indriver(m) (Mstatus(m) & _IN_DRIVER) 80*7c478bd9Sstevel@tonic-gate #define LinkNeeded(m) (Mstatus(m) & _LINK_NEEDED) 81*7c478bd9Sstevel@tonic-gate #define SetPost(m) (Mstatus(m) |= _POSTED) 82*7c478bd9Sstevel@tonic-gate #define SetDriver(m) (Mstatus(m) |= _IN_DRIVER) 83*7c478bd9Sstevel@tonic-gate #define SetLink(m) (Mstatus(m) |= _LINK_NEEDED) 84*7c478bd9Sstevel@tonic-gate #define ResetPost(m) (Mstatus(m) &= ~_POSTED) 85*7c478bd9Sstevel@tonic-gate #define ResetDriver(m) (Mstatus(m) &= ~_IN_DRIVER) 86*7c478bd9Sstevel@tonic-gate #define ResetLink(m) (Mstatus(m) &= ~_LINK_NEEDED) 87*7c478bd9Sstevel@tonic-gate #define SMinit(m) (m)->menuinit 88*7c478bd9Sstevel@tonic-gate #define SMterm(m) (m)->menuterm 89*7c478bd9Sstevel@tonic-gate #define SIinit(m) (m)->iteminit 90*7c478bd9Sstevel@tonic-gate #define SIterm(m) (m)->itemterm 91*7c478bd9Sstevel@tonic-gate #define Minit(m) if (m->menuinit) { \ 92*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 93*7c478bd9Sstevel@tonic-gate (m)->menuinit(m); \ 94*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 95*7c478bd9Sstevel@tonic-gate } 96*7c478bd9Sstevel@tonic-gate #define Mterm(m) if (m->menuterm) { \ 97*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 98*7c478bd9Sstevel@tonic-gate (m)->menuterm(m); \ 99*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 100*7c478bd9Sstevel@tonic-gate } 101*7c478bd9Sstevel@tonic-gate #define Iinit(m) if (m->iteminit) { \ 102*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 103*7c478bd9Sstevel@tonic-gate (m)->iteminit(m); \ 104*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 105*7c478bd9Sstevel@tonic-gate } 106*7c478bd9Sstevel@tonic-gate #define Iterm(m) if (m->itemterm) { \ 107*7c478bd9Sstevel@tonic-gate SetDriver(m); \ 108*7c478bd9Sstevel@tonic-gate (m)->itemterm(m); \ 109*7c478bd9Sstevel@tonic-gate ResetDriver(m); \ 110*7c478bd9Sstevel@tonic-gate } 111*7c478bd9Sstevel@tonic-gate 112*7c478bd9Sstevel@tonic-gate /* Define access to Mopt */ 113*7c478bd9Sstevel@tonic-gate 114*7c478bd9Sstevel@tonic-gate #define OneValue(m) (Mopt(m) & O_ONEVALUE) 115*7c478bd9Sstevel@tonic-gate #define ShowDesc(m) (Mopt(m) & O_SHOWDESC) 116*7c478bd9Sstevel@tonic-gate #define RowMajor(m) (Mopt(m) & O_ROWMAJOR) 117*7c478bd9Sstevel@tonic-gate #define IgnoreCase(m) (Mopt(m) & O_IGNORECASE) 118*7c478bd9Sstevel@tonic-gate #define ShowMatch(m) (Mopt(m) & O_SHOWMATCH) 119*7c478bd9Sstevel@tonic-gate #define Cyclic(m) (!(Mopt(m) & O_NONCYCLIC)) 120*7c478bd9Sstevel@tonic-gate 121*7c478bd9Sstevel@tonic-gate /* Item macros to access item structure */ 122*7c478bd9Sstevel@tonic-gate 123*7c478bd9Sstevel@tonic-gate #define Name(i) (i)->name.str 124*7c478bd9Sstevel@tonic-gate #define NameLen(i) (i)->name.length 125*7c478bd9Sstevel@tonic-gate #define Description(i) (i)->description.str 126*7c478bd9Sstevel@tonic-gate #define DescriptionLen(i) (i)->description.length 127*7c478bd9Sstevel@tonic-gate #define Index(i) (i)->index 128*7c478bd9Sstevel@tonic-gate #define Y(i) (i)->y 129*7c478bd9Sstevel@tonic-gate #define X(i) (i)->x 130*7c478bd9Sstevel@tonic-gate #define Imenu(i) (i)->imenu 131*7c478bd9Sstevel@tonic-gate #define Value(i) (i)->value 132*7c478bd9Sstevel@tonic-gate #define Ihelp(i) (i)->help 133*7c478bd9Sstevel@tonic-gate #define Iuserptr(i) (i)->userptr 134*7c478bd9Sstevel@tonic-gate #define Iopt(i) (i)->opt 135*7c478bd9Sstevel@tonic-gate #define Istatus(i) (i)->status 136*7c478bd9Sstevel@tonic-gate #define Up(i) (i)->up 137*7c478bd9Sstevel@tonic-gate #define Down(i) (i)->down 138*7c478bd9Sstevel@tonic-gate #define Left(i) (i)->left 139*7c478bd9Sstevel@tonic-gate #define Right(i) (i)->right 140*7c478bd9Sstevel@tonic-gate #define Selectable(i) (Iopt(i) & O_SELECTABLE) 141*7c478bd9Sstevel@tonic-gate 142*7c478bd9Sstevel@tonic-gate /* Default menu macros */ 143*7c478bd9Sstevel@tonic-gate 144*7c478bd9Sstevel@tonic-gate #define Dfl_Menu (&_Default_Menu) 145*7c478bd9Sstevel@tonic-gate #define Dfl_Item (&_Default_Item) 146*7c478bd9Sstevel@tonic-gate 147*7c478bd9Sstevel@tonic-gate #define max(a, b) ((a) > (b)) ? (a) : (b) 148*7c478bd9Sstevel@tonic-gate #define min(a, b) ((a) < (b)) ? (a) : (b) 149*7c478bd9Sstevel@tonic-gate 150*7c478bd9Sstevel@tonic-gate extern MENU _Default_Menu; 151*7c478bd9Sstevel@tonic-gate extern ITEM _Default_Item; 152*7c478bd9Sstevel@tonic-gate 153*7c478bd9Sstevel@tonic-gate extern void _affect_change(MENU *, int, ITEM *); 154*7c478bd9Sstevel@tonic-gate extern void _chk_current(MENU *, int *, ITEM *); 155*7c478bd9Sstevel@tonic-gate extern void _chk_top(MENU *, int *, ITEM *); 156*7c478bd9Sstevel@tonic-gate extern void _disconnect(MENU *); 157*7c478bd9Sstevel@tonic-gate extern void _draw(MENU *); 158*7c478bd9Sstevel@tonic-gate extern void _link_items(MENU *); 159*7c478bd9Sstevel@tonic-gate extern void _move_post_item(MENU *, ITEM *); 160*7c478bd9Sstevel@tonic-gate extern void _movecurrent(MENU *, ITEM *); 161*7c478bd9Sstevel@tonic-gate extern void _position_cursor(MENU *); 162*7c478bd9Sstevel@tonic-gate extern void _scale(MENU *); 163*7c478bd9Sstevel@tonic-gate extern void _show(MENU *); 164*7c478bd9Sstevel@tonic-gate extern int _match(MENU *, char, ITEM **); 165*7c478bd9Sstevel@tonic-gate extern int _connect(MENU *, ITEM **); 166*7c478bd9Sstevel@tonic-gate 167*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 168*7c478bd9Sstevel@tonic-gate } 169*7c478bd9Sstevel@tonic-gate #endif 170*7c478bd9Sstevel@tonic-gate 171*7c478bd9Sstevel@tonic-gate #endif /* _MENU_PRIVATE_H */ 172