summaryrefslogtreecommitdiff
path: root/lib/libmenu/m_item_opt.c
diff options
context:
space:
mode:
authorThorsten Lockert <tholo@cvs.openbsd.org>1996-06-02 21:34:43 +0000
committerThorsten Lockert <tholo@cvs.openbsd.org>1996-06-02 21:34:43 +0000
commitb8d379a3b8bd8bdd763abd7ea8cdc4e53351f610 (patch)
treea7f7e1c184744929e43893e3e0a2cb573c3425ae /lib/libmenu/m_item_opt.c
parent65af288d2747dc891a03f23bb5259b26adf16e7b (diff)
SYSV-style menu library; from ncurses
Diffstat (limited to 'lib/libmenu/m_item_opt.c')
-rw-r--r--lib/libmenu/m_item_opt.c130
1 files changed, 130 insertions, 0 deletions
diff --git a/lib/libmenu/m_item_opt.c b/lib/libmenu/m_item_opt.c
new file mode 100644
index 00000000000..00dd3a78d3e
--- /dev/null
+++ b/lib/libmenu/m_item_opt.c
@@ -0,0 +1,130 @@
+
+/***************************************************************************
+* COPYRIGHT NOTICE *
+****************************************************************************
+* ncurses is copyright (C) 1992-1995 *
+* Zeyd M. Ben-Halim *
+* zmbenhal@netcom.com *
+* Eric S. Raymond *
+* esr@snark.thyrsus.com *
+* *
+* Permission is hereby granted to reproduce and distribute ncurses *
+* by any means and for any fee, whether alone or as part of a *
+* larger distribution, in source or in binary form, PROVIDED *
+* this notice is included with any such distribution, and is not *
+* removed from any of its header files. Mention of ncurses in any *
+* applications linked with it is highly appreciated. *
+* *
+* ncurses comes AS IS with no warranty, implied or expressed. *
+* *
+***************************************************************************/
+
+/***************************************************************************
+* Module menu_item_opt *
+* Menus item option routines *
+***************************************************************************/
+
+#include "menu.priv.h"
+
+/*---------------------------------------------------------------------------
+| Facility : libnmenu
+| Function : int set_item_opts(ITEM *item, Item_Options opts)
+|
+| Description : Set the options of the item. If there are relevant
+| changes, the item is connected and the menu is posted,
+| the menu will be redisplayed.
+|
+| Return Values : E_OK - success
+| E_BAD_ARGUMENT - invalid item options
++--------------------------------------------------------------------------*/
+int set_item_opts(ITEM *item, Item_Options opts)
+{
+ if (opts & ~ALL_ITEM_OPTS)
+ RETURN(E_BAD_ARGUMENT);
+
+ if (item)
+ {
+ if (item->opt != opts)
+ {
+ MENU *menu = item->imenu;
+
+ item->opt = opts;
+
+ if ((!(opts & O_SELECTABLE)) && item->value)
+ item->value = FALSE;
+
+ if (menu && (menu->status & _POSTED))
+ {
+ Move_And_Post_Item( menu, item );
+ _nc_Show_Menu(menu);
+ }
+ }
+ }
+ else
+ _nc_Default_Item.opt = opts;
+
+ RETURN(E_OK);
+}
+
+/*---------------------------------------------------------------------------
+| Facility : libnmenu
+| Function : int item_opts_off(ITEM *item, Item_Options opts)
+|
+| Description : Switch of the options for this item.
+|
+| Return Values : E_OK - success
+| E_BAD_ARGUMENT - invalid options
++--------------------------------------------------------------------------*/
+int item_opts_off(ITEM *item, Item_Options opts)
+{
+ ITEM *citem = item; /* use a copy because set_item_opts must detect
+ NULL item itself to adjust its behaviour */
+
+ if (opts & ~ALL_ITEM_OPTS)
+ RETURN(E_BAD_ARGUMENT);
+ else
+ {
+ Normalize_Item(citem);
+ opts = citem->opt & ~opts;
+ return set_item_opts( item, opts );
+ }
+}
+
+/*---------------------------------------------------------------------------
+| Facility : libnmenu
+| Function : int item_opts_on(ITEM *item, Item_Options opts)
+|
+| Description : Switch on the options for this item.
+|
+| Return Values : E_OK - success
+| E_BAD_ARGUMENT - invalid options
++--------------------------------------------------------------------------*/
+int item_opts_on(ITEM *item, Item_Options opts)
+{
+ ITEM *citem = item; /* use a copy because set_item_opts must detect
+ NULL item itself to adjust its behaviour */
+
+ if (opts & ~ALL_ITEM_OPTS)
+ RETURN(E_BAD_ARGUMENT);
+ else
+ {
+ Normalize_Item(citem);
+ opts = citem->opt | opts;
+ return set_item_opts( item, opts );
+ }
+}
+
+/*---------------------------------------------------------------------------
+| Facility : libnmenu
+| Function : Item_Options item_opts(const ITEM *item)
+|
+| Description : Switch of the options for this item.
+|
+| Return Values : Items options
++--------------------------------------------------------------------------*/
+Item_Options item_opts(const ITEM * item)
+{
+ return (ALL_ITEM_OPTS & Normalize_Item(item)->opt);
+}
+
+/* m_item_opt.c ends here */