Files
Arquivotheca.SunOS-4.1.4/usr.lib/libsuntool/include/suntool/walkmenu.h
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

219 lines
8.2 KiB
C

/* @(#)walkmenu.h 1.1 94/10/31 SMI */
/***********************************************************************/
/* walkmenu.h */
/* Copyright (c) 1985 by Sun Microsystems, Inc. */
/***********************************************************************/
#ifndef walkmenu_DEFINED
#define walkmenu_DEFINED
#include <sunwindow/attr.h>
/***********************************************************************/
/* Attributes */
/***********************************************************************/
#define MENU_ATTR(type, ordinal) ATTR(ATTR_PKG_MENU, type, ordinal)
#define MENU_ATTR_LIST(ltype, type, ordinal) \
MENU_ATTR(ATTR_LIST_INLINE((ltype), (type)), (ordinal))
/* Fake types -- This should be resolved someday */
#define ATTR_MENU ATTR_OPAQUE
#define ATTR_IMAGE ATTR_OPAQUE
#define ATTR_MENU_ITEM ATTR_OPAQUE
#define ATTR_MENU_ITEM_PAIR ATTR_INT_PAIR
#define ATTR_STRING_VALUE_PAIR ATTR_INT_PAIR
#define ATTR_IMAGE_VALUE_PAIR ATTR_INT_PAIR
#define ATTR_STRING_MENU_PAIR ATTR_INT_PAIR
#define ATTR_IMAGE_MENU_PAIR ATTR_INT_PAIR
#define ATTR_STRING_FUNCTION_PAIR ATTR_INT_PAIR
#define ATTR_IMAGE_FUNCTION_PAIR ATTR_INT_PAIR
#define ATTR_INT_MENU_ITEM_PAIR ATTR_INT_PAIR
/* Reserved for future use */
#define MENU_ATTR_UNUSED_FIRST 0
#define MENU_ATTR_UNUSED_LAST 31
typedef enum {
MENU_ACTION_PROC = MENU_ATTR(ATTR_FUNCTION_PTR, 32),
MENU_ACTION = MENU_ACTION_PROC,
MENU_ACTION_IMAGE = MENU_ATTR(ATTR_IMAGE_FUNCTION_PAIR, 33),
MENU_ACTION_ITEM = MENU_ATTR(ATTR_STRING_FUNCTION_PAIR, 34),
MENU_APPEND_ITEM = MENU_ATTR(ATTR_MENU_ITEM, 35),
MENU_APPEND = MENU_APPEND_ITEM,
MENU_BOXED = MENU_ATTR(ATTR_BOOLEAN, 56),
MENU_CENTER = MENU_ATTR(ATTR_BOOLEAN, 156),
MENU_CLIENT_DATA = MENU_ATTR(ATTR_OPAQUE, 36),
MENU_COLUMN_MAJOR = MENU_ATTR(ATTR_BOOLEAN, 136),
MENU_DEFAULT = MENU_ATTR(ATTR_INT, 37),
MENU_DEFAULT_ITEM = MENU_ATTR(ATTR_MENU_ITEM, 38),
MENU_DEFAULT_IMAGE = MENU_ATTR(ATTR_IMAGE, 39),
MENU_DISABLE_ITEM = MENU_ATTR(ATTR_ENUM, 40), /* NYI */
MENU_DEFAULT_SELECTION = MENU_ATTR(ATTR_ENUM, 41),
MENU_DESCEND_FIRST = MENU_ATTR(ATTR_BOOLEAN, 141), /* menu_find */
MENU_FEEDBACK = MENU_ATTR(ATTR_BOOLEAN, 42),
MENU_FIRST_EVENT = MENU_ATTR(ATTR_NO_VALUE, 43), /* Get only */
MENU_FONT = MENU_ATTR(ATTR_PIXFONT_PTR, 44),
MENU_GEN_PULLRIGHT = MENU_ATTR(ATTR_FUNCTION_PTR, 45),
MENU_GEN_PULLRIGHT_IMAGE = MENU_ATTR(ATTR_IMAGE_FUNCTION_PAIR, 46),
MENU_GEN_PULLRIGHT_ITEM = MENU_ATTR(ATTR_STRING_FUNCTION_PAIR, 47),
MENU_GEN_PROC = MENU_ATTR(ATTR_FUNCTION_PTR, 48),
MENU_GEN_PROC_IMAGE = MENU_ATTR(ATTR_IMAGE_FUNCTION_PAIR, 49),
MENU_GEN_PROC_ITEM = MENU_ATTR(ATTR_STRING_FUNCTION_PAIR, 50),
MENU_HEIGHT = MENU_ATTR(ATTR_INT, 51),
MENU_IMAGE = MENU_ATTR(ATTR_IMAGE, 52),
MENU_IMAGE_ITEM = MENU_ATTR(ATTR_IMAGE_VALUE_PAIR, 53),
MENU_IMAGES = MENU_ATTR_LIST(ATTR_NULL, ATTR_IMAGE, 54),
MENU_INITIAL_SELECTION = MENU_ATTR(ATTR_ENUM, 55),
/* MENU_ACCELERATED_SELECTION = MENU_INITIAL_SELECTION, /* OBS */
MENU_INITIAL_SELECTION_SELECTED = MENU_ATTR(ATTR_BOOLEAN, 57),
MENU_INITIAL_SELECTION_EXPANDED = MENU_ATTR(ATTR_BOOLEAN, 58),
/* MENU_DISPLAY_ONE_LEVEL = MENU_ATTR(ATTR_INT, 59), !attr58 /* OBS */
MENU_INACTIVE = MENU_ATTR(ATTR_BOOLEAN, 60),
MENU_INSERT = MENU_ATTR(ATTR_INT_MENU_ITEM_PAIR, 61),
MENU_INSERT_ITEM = MENU_ATTR(ATTR_MENU_ITEM_PAIR, 62),
MENU_ITEM = MENU_ATTR_LIST(ATTR_RECURSIVE, ATTR_AV, 63),
MENU_INVERT = MENU_ATTR(ATTR_BOOLEAN, 64),
MENU_JUMP_AFTER_SELECTION = MENU_ATTR(ATTR_BOOLEAN, 65),
MENU_JUMP_AFTER_NO_SELECTION = MENU_ATTR(ATTR_BOOLEAN, 66),
MENU_LAST_EVENT = MENU_ATTR(ATTR_NO_VALUE, 67), /* Get only */
MENU_LEFT_MARGIN = MENU_ATTR(ATTR_INT, 68),
MENU_LIKE = MENU_ATTR(ATTR_MENU, 69), /* NYI */
MENU_MARGIN = MENU_ATTR(ATTR_INT, 70),
MENU_MENU = MENU_ATTR(ATTR_NO_VALUE, 71), /* Type only */
MENU_NITEMS = MENU_ATTR(ATTR_NO_VALUE, 72), /* Get only */
MENU_NOTIFY_PROC = MENU_ACTION_PROC,
MENU_NTH_ITEM = MENU_ATTR(ATTR_INT, 73), /* Origin 1 */
MENU_NCOLS = MENU_ATTR(ATTR_INT, 74),
MENU_NROWS = MENU_ATTR(ATTR_INT, 75),
MENU_PARENT = MENU_ATTR(ATTR_NO_VALUE, 76), /* Get only */
MENU_PULLRIGHT = MENU_ATTR(ATTR_MENU, 77),
MENU_PULLRIGHT_DELTA = MENU_ATTR(ATTR_INT, 78),
MENU_PULLRIGHT_IMAGE = MENU_ATTR(ATTR_IMAGE_MENU_PAIR, 79),
MENU_PULLRIGHT_ITEM = MENU_ATTR(ATTR_STRING_MENU_PAIR, 80),
MENU_RELEASE = MENU_ATTR(ATTR_NO_VALUE, 81),
MENU_RELEASE_IMAGE = MENU_ATTR(ATTR_NO_VALUE, 82),
MENU_REMOVE = MENU_ATTR(ATTR_INT, 83),
MENU_REMOVE_ITEM = MENU_ATTR(ATTR_MENU_ITEM, 84),
MENU_REPLACE = MENU_ATTR(ATTR_INT_MENU_ITEM_PAIR, 85),
MENU_REPLACE_ITEM = MENU_ATTR(ATTR_MENU_ITEM_PAIR, 86),
MENU_RIGHT_MARGIN = MENU_ATTR(ATTR_INT, 87),
MENU_SELECTED = MENU_ATTR(ATTR_INT, 88),
MENU_SELECTED_ITEM = MENU_ATTR(ATTR_MENU_ITEM, 89),
MENU_SHADOW = MENU_ATTR(ATTR_PIXRECT_PTR, 90),
MENU_STAY_UP = MENU_ATTR(ATTR_BOOLEAN, 190),
MENU_STRING = MENU_ATTR(ATTR_STRING, 91),
MENU_STRING_ITEM = MENU_ATTR(ATTR_STRING_VALUE_PAIR, 92),
MENU_STRINGS = MENU_ATTR_LIST(ATTR_NULL, ATTR_STRING, 93),
MENU_TITLE_ITEM = MENU_ATTR(ATTR_STRING, 94),
MENU_TITLE_IMAGE = MENU_ATTR(ATTR_IMAGE, 95),
MENU_TYPE = MENU_ATTR(ATTR_NO_VALUE, 96), /* Get only */
MENU_VALID_RESULT = MENU_ATTR(ATTR_INT, 97),
MENU_VALUE = MENU_ATTR(ATTR_OPAQUE, 98),/* union */
MENU_WIDTH = MENU_ATTR(ATTR_INT, 99),
MENU_NOP = MENU_ATTR(ATTR_NO_VALUE, 100),
/* Used in menu_show() as named parameters */
MENU_BUTTON = MENU_ATTR(ATTR_INT, 101), /* Call */
MENU_FD = MENU_ATTR(ATTR_INT, 102), /* Call */
MENU_IE = MENU_ATTR(ATTR_INT, 103), /* Call */
MENU_POS = MENU_ATTR(ATTR_INT_PAIR, 104), /* Call */
/* New Attributes for putting lines in between items */
MENU_LINE_AFTER_ITEM = MENU_ATTR(ATTR_INT,105),
MENU_HORIZONTAL_LINE = MENU_ATTR(ATTR_INT,106),
MENU_VERTICAL_LINE = MENU_ATTR(ATTR_INT,107),
} Menu_attribute;
typedef enum {
MENU_PROVIDE_FEEDBACK,
MENU_REMOVE_FEEDBACK
} Menu_feedback;
/* This are obsolete generate names and should be removed someday */
#define MENU_CREATE MENU_DISPLAY
#define MENU_DESTROY MENU_DISPLAY_DONE
#define MENU_NOTIFY_CREATE MENU_NOTIFY
#define MENU_NOTIFY_DESTROY MENU_NOTIFY_DONE
/* New generate names intended to be less confusing */
typedef enum {
MENU_DISPLAY,
MENU_DISPLAY_DONE,
MENU_NOTIFY,
MENU_NOTIFY_DONE
} Menu_generate;
/***********************************************************************/
/* opaque types for menus and useful constants */
/***********************************************************************/
typedef caddr_t Menu;
typedef caddr_t Menu_item;
#define MENU_BUT MS_RIGHT
#define SELECT_BUT MS_LEFT
#define MENU_NULL ((Menu)0)
#define MENU_ITEM_NULL ((Menu_item)0)
#define MENU_NO_ITEM MENU_ITEM_NULL
#define MENU_NO_VALUE 0
#define MENU_DEFAULT_SHADOW &menu_gray75_pr
#define MENU_DEFAULT_NOTIFY_PROC menu_return_value
#define MENU_DEFAULT_PULLRIGHT_DELTA 9999
/***********************************************************************/
/* external declarations */
/***********************************************************************/
extern Menu menu_create();
extern Menu menu_create_customizable();
extern Menu_item menu_create_item();
extern caddr_t menu_get();
extern int menu_set();
extern void menu_destroy();
extern void menu_destroy_with_proc();
extern caddr_t menu_show();
extern caddr_t menu_show_using_fd();
extern Menu_item menu_find();
extern caddr_t menu_pullright_return_result();
extern caddr_t menu_return_value();
extern caddr_t menu_return_item();
extern caddr_t menu_return_no_value();
extern caddr_t menu_return_no_item();
extern struct pixrect menu_gray25_pr;
extern struct pixrect menu_gray50_pr;
extern struct pixrect menu_gray75_pr;
/***********************************************************************/
#endif ~walkmenu_DEFINED