m_item_opt.c revision 262629
1251876Speter/**************************************************************************** 2251876Speter * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * 3251876Speter * * 4251876Speter * Permission is hereby granted, free of charge, to any person obtaining a * 5251876Speter * copy of this software and associated documentation files (the * 6251876Speter * "Software"), to deal in the Software without restriction, including * 7251876Speter * without limitation the rights to use, copy, modify, merge, publish, * 8251876Speter * distribute, distribute with modifications, sublicense, and/or sell * 9251876Speter * copies of the Software, and to permit persons to whom the Software is * 10251876Speter * furnished to do so, subject to the following conditions: * 11251876Speter * * 12251876Speter * The above copyright notice and this permission notice shall be included * 13251876Speter * in all copies or substantial portions of the Software. * 14251876Speter * * 15251876Speter * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 16251876Speter * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 17251876Speter * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 18251876Speter * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 19251876Speter * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 20251876Speter * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 21251876Speter * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 22251876Speter * * 23251876Speter * Except as contained in this notice, the name(s) of the above copyright * 24251876Speter * holders shall not be used in advertising or otherwise to promote the * 25251876Speter * sale, use or other dealings in this Software without prior written * 26251876Speter * authorization. * 27251876Speter ****************************************************************************/ 28251876Speter 29251876Speter/**************************************************************************** 30251876Speter * Author: Juergen Pfeifer, 1995,1997 * 31251876Speter ****************************************************************************/ 32251876Speter 33251876Speter/*************************************************************************** 34251876Speter* Module m_item_opt * 35251876Speter* Menus item option routines * 36251876Speter***************************************************************************/ 37251876Speter 38251876Speter#include "menu.priv.h" 39251876Speter 40251876SpeterMODULE_ID("$Id: m_item_opt.c,v 1.18 2010/01/23 21:20:10 tom Exp $") 41251876Speter 42251876Speter/*--------------------------------------------------------------------------- 43251876Speter| Facility : libnmenu 44251876Speter| Function : int set_item_opts(ITEM *item, Item_Options opts) 45251876Speter| 46251876Speter| Description : Set the options of the item. If there are relevant 47251876Speter| changes, the item is connected and the menu is posted, 48251876Speter| the menu will be redisplayed. 49251876Speter| 50251876Speter| Return Values : E_OK - success 51251876Speter| E_BAD_ARGUMENT - invalid item options 52251876Speter+--------------------------------------------------------------------------*/ 53251876SpeterNCURSES_EXPORT(int) 54251876Speterset_item_opts(ITEM * item, Item_Options opts) 55251876Speter{ 56251876Speter T((T_CALLED("set_menu_opts(%p,%d)"), (void *)item, opts)); 57251876Speter 58251876Speter opts &= ALL_ITEM_OPTS; 59251876Speter 60251876Speter if (opts & ~ALL_ITEM_OPTS) 61251876Speter RETURN(E_BAD_ARGUMENT); 62251876Speter 63251876Speter if (item) 64251876Speter { 65251876Speter if (item->opt != opts) 66251876Speter { 67251876Speter MENU *menu = item->imenu; 68251876Speter 69251876Speter item->opt = opts; 70251876Speter 71251876Speter if ((!(opts & O_SELECTABLE)) && item->value) 72251876Speter item->value = FALSE; 73251876Speter 74251876Speter if (menu && (menu->status & _POSTED)) 75251876Speter { 76251876Speter Move_And_Post_Item(menu, item); 77251876Speter _nc_Show_Menu(menu); 78251876Speter } 79251876Speter } 80251876Speter } 81251876Speter else 82251876Speter _nc_Default_Item.opt = opts; 83251876Speter 84251876Speter RETURN(E_OK); 85251876Speter} 86251876Speter 87251876Speter/*--------------------------------------------------------------------------- 88251876Speter| Facility : libnmenu 89251876Speter| Function : int item_opts_off(ITEM *item, Item_Options opts) 90251876Speter| 91251876Speter| Description : Switch of the options for this item. 92251876Speter| 93251876Speter| Return Values : E_OK - success 94251876Speter| E_BAD_ARGUMENT - invalid options 95251876Speter+--------------------------------------------------------------------------*/ 96251876SpeterNCURSES_EXPORT(int) 97251876Speteritem_opts_off(ITEM * item, Item_Options opts) 98251876Speter{ 99251876Speter ITEM *citem = item; /* use a copy because set_item_opts must detect 100251876Speter 101251876Speter NULL item itself to adjust its behavior */ 102251876Speter 103251876Speter T((T_CALLED("item_opts_off(%p,%d)"), (void *)item, opts)); 104251876Speter 105251876Speter if (opts & ~ALL_ITEM_OPTS) 106251876Speter RETURN(E_BAD_ARGUMENT); 107251876Speter else 108251876Speter { 109251876Speter Normalize_Item(citem); 110251876Speter opts = citem->opt & ~(opts & ALL_ITEM_OPTS); 111251876Speter returnCode(set_item_opts(item, opts)); 112251876Speter } 113251876Speter} 114251876Speter 115251876Speter/*--------------------------------------------------------------------------- 116251876Speter| Facility : libnmenu 117251876Speter| Function : int item_opts_on(ITEM *item, Item_Options opts) 118251876Speter| 119251876Speter| Description : Switch on the options for this item. 120251876Speter| 121251876Speter| Return Values : E_OK - success 122251876Speter| E_BAD_ARGUMENT - invalid options 123251876Speter+--------------------------------------------------------------------------*/ 124251876SpeterNCURSES_EXPORT(int) 125251876Speteritem_opts_on(ITEM * item, Item_Options opts) 126251876Speter{ 127251876Speter ITEM *citem = item; /* use a copy because set_item_opts must detect 128251876Speter 129251876Speter NULL item itself to adjust its behavior */ 130251876Speter 131251876Speter T((T_CALLED("item_opts_on(%p,%d)"), (void *)item, opts)); 132251876Speter 133251876Speter opts &= ALL_ITEM_OPTS; 134251876Speter if (opts & ~ALL_ITEM_OPTS) 135251876Speter RETURN(E_BAD_ARGUMENT); 136251876Speter else 137251876Speter { 138251876Speter Normalize_Item(citem); 139251876Speter opts = citem->opt | opts; 140251876Speter returnCode(set_item_opts(item, opts)); 141251876Speter } 142251876Speter} 143251876Speter 144251876Speter/*--------------------------------------------------------------------------- 145251876Speter| Facility : libnmenu 146251876Speter| Function : Item_Options item_opts(const ITEM *item) 147251876Speter| 148251876Speter| Description : Switch of the options for this item. 149251876Speter| 150251876Speter| Return Values : Items options 151251876Speter+--------------------------------------------------------------------------*/ 152251876SpeterNCURSES_EXPORT(Item_Options) 153251876Speteritem_opts(const ITEM * item) 154251876Speter{ 155251876Speter T((T_CALLED("item_opts(%p)"), (const void *)item)); 156251876Speter returnItemOpts(ALL_ITEM_OPTS & Normalize_Item(item)->opt); 157251876Speter} 158251876Speter 159251876Speter/* m_item_opt.c ends here */ 160251876Speter