⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 walkmenu_get.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lint#ifdef sccsstatic	char sccsid[] = "@(#)walkmenu_get.c 1.1 92/07/30 Copyright 1985 Sun Micro";#endif#endif/* * Copyright (c) 1985 by Sun Microsystems, Inc. *//*-	WALKING MENU PACKAGE	walkmenu_get.c, Sun Jun 30 15:38:39 1985		Craig Taylor,		Sun Microsystems *//* ------------------------------------------------------------------------- */#include <sys/types.h>#include <stdio.h>#include <varargs.h>#include <sunwindow/sun.h> /* for LINT_CAST */#include <suntool/walkmenu_impl.h>/* ------------------------------------------------------------------------- *//*  * Public */    /* None *//*  * Package private */Pkg_private	caddr_t	menu_gets();Pkg_private	caddr_t menu_item_gets();/*  * Private */    /* None *//*  * Private defs */    /* None *//* ------------------------------------------------------------------------- */#define	CADDR_CAST(arg) ((caddr_t)LINT_CAST((arg)))Pkg_private caddr_tmenu_gets(m, attr, value)	struct menu *m;	Menu_attribute attr;	caddr_t value;{       caddr_t v = NULL;        switch (attr) {      case MENU_BOXED:	 v = (caddr_t)m->default_image.boxed;	break;	          case MENU_CENTER:	v = (caddr_t)m->default_image.center;	break;	          case MENU_CLIENT_DATA:	v = (caddr_t)m->client_data;	break;      case HELP_DATA:	v = (caddr_t)m->help_data;	break;	          case MENU_COLUMN_MAJOR:	v = (caddr_t)m->column_major;	break;	          case MENU_DEFAULT:	v = (caddr_t)m->default_position;	break;	          case MENU_DEFAULT_ITEM:	if (range(m->default_position, 1, m->nitems))	    v = (caddr_t)m->item_list[m->default_position - 1];	break;	          case MENU_DEFAULT_IMAGE:	v = (caddr_t)&m->default_image;	break;	          case MENU_DEFAULT_SELECTION:	v = (caddr_t)m->default_selection;	break;	          case MENU_FIRST_EVENT:	v = m->dynamic_info ? (caddr_t)m->dynamic_info->first_iep : NULL;	break;	          case MENU_FONT:	v = image_get(&m->default_image, &m->default_image, IMAGE_FONT);	break;	          case MENU_GEN_PROC:	v = CADDR_CAST(m->gen_proc);	break;	          case MENU_HEIGHT:	v = (caddr_t)m->height;	break;	          case MENU_INITIAL_SELECTION:      /* case MENU_ACCELERATED_SELECTION: Obsolete */	v = (caddr_t)m->initial_selection;	break;	          case MENU_INITIAL_SELECTION_EXPANDED:	v = (caddr_t)!m->display_one_level;	break;	          case MENU_INITIAL_SELECTION_SELECTED:	v = (caddr_t)!m->stand_off;	break;	          case MENU_JUMP_AFTER_SELECTION:	v = (caddr_t)m->jump_after_selection;	break;      case MENU_JUMP_AFTER_NO_SELECTION:	v = (caddr_t)m->jump_after_no_selection;	break;      case MENU_LAST_EVENT:	v = m->dynamic_info ? (caddr_t)m->dynamic_info->last_iep : NULL;	break;	          case MENU_LEFT_MARGIN:	v = (caddr_t)m->default_image.left_margin;	break;	    /*    case /--/MENU_LIKE: Copy menu and items into current menu	break; */	          case MENU_MARGIN:	v = (caddr_t)m->default_image.margin;	break;	          case MENU_NOTIFY_PROC:	v = CADDR_CAST(m->notify_proc);	break;	          case MENU_NTH_ITEM:      	if ((int)value > 0 && (int)value <= m->nitems)	    v = (caddr_t)m->item_list[(int)value - 1];	break;            case MENU_NCOLS:	/* FIXME: to return correct size m->ncols (e.g., ifdef notdef below) */	v = (caddr_t)m->ncols;#ifdef	notdef	    int cols, rows;	    menu_compute_size(m, &cols, &rows);	    v = (caddr_t)cols;#endif	notdef	break;      case MENU_NITEMS:	v = (caddr_t)m->nitems;	break;      case MENU_NROWS:	/* FIXME: to return correct size m->nrows (e.g., ifdef notdef below) */	v = (caddr_t)m->nrows;#ifdef	notdef	    int cols, rows;	    menu_compute_size(m, &cols, &rows);	    v = (caddr_t)rows;#endif	notdef	break;      case MENU_PARENT:        v = (caddr_t)m->parent;	break;      case MENU_PULLRIGHT_DELTA:        v = (caddr_t)m->pullright_delta;	break;      case MENU_RIGHT_MARGIN:	v = (caddr_t)m->default_image.right_margin;	break;	          case MENU_SELECTED:	v = (caddr_t)m->selected_position;	break;	          case MENU_SELECTED_ITEM:	if (range(m->selected_position, 1, m->nitems))	    v = (caddr_t)m->item_list[m->selected_position - 1];	break;	          case MENU_SHADOW:	v = (caddr_t)m->shadow_pr;	break;	          case MENU_STAY_UP:	v = (caddr_t)m->stay_up;	break;	          case MENU_TYPE:	v = (caddr_t)MENU_MENU;	break;            case MENU_VALID_RESULT:	v = (caddr_t)m->valid_result;	break;            case MENU_WIDTH:	v = (caddr_t)m->width;	break;	          case MENU_NOP:	break;	      default:	if (ATTR_PKG_MENU == ATTR_PKG(attr))	    (void) fprintf(stderr,	"menu_get: 0x%x not recognized as a menu attribute.\n", attr);	break;	        }    return v;}/* ARGSUSED */Pkg_private caddr_tmenu_item_gets(mi, attr, value)	struct menu_item *mi;	Menu_attribute attr;	caddr_t value;{       caddr_t v = NULL;        switch (attr) {      case MENU_ACTION: /* & case MENU_NOTIFY_PROC: */	v = CADDR_CAST(mi->notify_proc);	break;	          case MENU_BOXED:	if (mi->image) v = (caddr_t)mi->image->boxed;	break;	          case MENU_CENTER:	if (mi->image) v = (caddr_t)mi->image->center;	break;	          case MENU_CLIENT_DATA:	v = (caddr_t)mi->client_data;	break;      case HELP_DATA:	v = (caddr_t)mi->help_data;	break;	          case MENU_FEEDBACK:	v = (caddr_t)!mi->no_feedback;	break;            case MENU_FONT:	v = image_get(mi->image, (struct image *)NULL, IMAGE_FONT);	break;	          case MENU_GEN_PROC:	v = CADDR_CAST(mi->gen_proc);	break;	          case MENU_GEN_PULLRIGHT:	v = CADDR_CAST(mi->gen_pullright);	break;	          case MENU_IMAGE: /* Questionable use of the word image */	if (mi->image) v = (caddr_t)mi->image->pr;	break;      case MENU_INACTIVE:	v = (caddr_t)mi->inactive;	break;	          case MENU_INVERT:	if (mi->image) v = (caddr_t)mi->image->invert;	break;	          case MENU_LEFT_MARGIN:	if (mi->image) v = (caddr_t)mi->image->left_margin;	break;	          case MENU_MARGIN:	if (mi->image) v = (caddr_t)mi->image->margin;	break;	          case MENU_PARENT:        v = (caddr_t)mi->parent;	break;      case MENU_PULLRIGHT:	v = (caddr_t)(mi->pullright ? mi->value : 0);	break;	          case MENU_RELEASE:	v = (caddr_t)mi->free_item;	break;	          case MENU_RELEASE_IMAGE:	if (mi->image)	    v = (caddr_t)(mi->image->free_string || mi->image->free_pr);	break;	          case MENU_RIGHT_MARGIN:	if (mi->image) v = (caddr_t)mi->image->right_margin;	break;	          case MENU_SELECTED:	v = (caddr_t)mi->selected;	break;	          case MENU_STRING:	if (mi->image) v = mi->image->string;	break;      case MENU_TYPE:	v = (caddr_t)MENU_ITEM;	break;            case MENU_VALUE: /* FIXME: If mi parent is invalid this will die */	if (mi->pullright && mi->parent && mi->parent->dynamic_info)	    v = (caddr_t)menu_pullright_return_result((Menu_item)mi);	else	    v = (caddr_t)mi->value;	break;	          case MENU_NOP:	break;	      default:	if (ATTR_PKG_MENU == ATTR_PKG(attr))	    (void) fprintf(stderr,	"menu_set: 0x%x not recognized as a menu attribute.\n", attr);	break;	        }    return v;   }/*  FIXME: to get screen size */#ifdef not_implemented/* ARGSUSED */Privatemenu_compute_size(m, colp, rowp)	struct menu *m;{    register int col = *colp, row = *rowp;    if (!(cols && rows)) return;    if (cols) {    /*  case: cols=n, rows=to fit */	    if (!cols) cols = m->nitems;	    menurect.r_width = (m->ncols * max_width) +		2*MENU_BORDER + (m->shadow_pr ? MENU_SHADOW : 0);	    if (menurect.r_width > m_fs->fs_screenrect.r_width) {		cols = (m_fs->fs_screenrect.r_width			- 2*MENU_BORDER + (m->shadow_pr ? MENU_SHADOW : 0))		       / max_width;	    }	    rows = (m->nitems - 1) / cols + 1;	} else { /* case: rows=n, cols=to fit */	    menurect.r_height = (m->nrows * max_height) +		2*MENU_BORDER + (m->shadow_pr ? MENU_SHADOW : 0);	    if (menurect.r_height > m_fs->fs_screenrect.r_height) {		rows = (m_fs->fs_screenrect.r_height			- 2*MENU_BORDER + (m->shadow_pr ? MENU_SHADOW : 0))		       / max_height;	    }	    cols = (m->nitems - 1) / rows + 1;	}    *colp = col, *rowp = row;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -