X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=menu%2Fmenu.h;h=bef5a5cbb74f93cf2befcf73ad4cbf9611950f50;hp=d827072248f9ad75a5249d2654a2b160a7aecd37;hb=04d942c3d98cf0a929c6afb17be8c10d4ae39af0;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01 diff --git a/menu/menu.h b/menu/menu.h index d8270722..bef5a5cb 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -28,9 +29,10 @@ /**************************************************************************** * Author: Juergen Pfeifer, 1995,1997 * - * Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en * ****************************************************************************/ +/* $Id: menu.h,v 1.25 2020/07/04 20:38:43 tom Exp $ */ + #ifndef ETI_MENU #define ETI_MENU @@ -45,6 +47,17 @@ extern "C" { #endif +#if defined(BUILDING_MENU) +# define MENU_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT +#else +# define MENU_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT +#endif + +#define MENU_WRAPPED_VAR(type,name) extern MENU_IMPEXP type NCURSES_PUBLIC_VAR(name)(void) + +#define MENU_EXPORT(type) MENU_IMPEXP type NCURSES_API +#define MENU_EXPORT_VAR(type) MENU_IMPEXP type + typedef int Menu_Options; typedef int Item_Options; @@ -55,17 +68,23 @@ typedef int Item_Options; #define O_IGNORECASE (0x08) #define O_SHOWMATCH (0x10) #define O_NONCYCLIC (0x20) +#define O_MOUSE_MENU (0x40) /* Item options: */ #define O_SELECTABLE (0x01) +#if !NCURSES_OPAQUE_MENU typedef struct { const char* str; unsigned short length; } TEXT; +#endif /* !NCURSES_OPAQUE_MENU */ + +struct tagMENU; typedef struct tagITEM +#if !NCURSES_OPAQUE_MENU { TEXT name; /* name of menu item */ TEXT description; /* description of item, optional in display */ @@ -77,16 +96,19 @@ typedef struct tagITEM short x; bool value; /* Selection value */ - struct tagITEM *left; /* neighbour items */ + struct tagITEM *left; /* neighbor items */ struct tagITEM *right; struct tagITEM *up; struct tagITEM *down; -} ITEM; +} +#endif /* !NCURSES_OPAQUE_MENU */ +ITEM; typedef void (*Menu_Hook)(struct tagMENU *); typedef struct tagMENU +#if 1 /* not yet: !NCURSES_OPAQUE_MENU */ { short height; /* Nr. of chars high */ short width; /* Nr. of chars wide */ @@ -127,8 +149,9 @@ typedef struct tagMENU Menu_Options opt; /* Menu options */ unsigned short status; /* Internal state of menu */ - -} MENU; +} +#endif /* !NCURSES_OPAQUE_MENU */ +MENU; /* Define keys */ @@ -171,82 +194,86 @@ typedef struct tagMENU /* --------- prototypes for libmenu functions ----------------------------- */ -extern NCURSES_EXPORT(ITEM **) menu_items (const MENU *); -extern NCURSES_EXPORT(ITEM *) current_item (const MENU *); -extern NCURSES_EXPORT(ITEM *) new_item (const char *,const char *); - -extern NCURSES_EXPORT(MENU *) new_menu (ITEM **); - -extern NCURSES_EXPORT(Item_Options) item_opts (const ITEM *); -extern NCURSES_EXPORT(Menu_Options) menu_opts (const MENU *); - -extern NCURSES_EXPORT(Menu_Hook) item_init (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) item_term (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) menu_init (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) menu_term (const MENU *); - -extern NCURSES_EXPORT(WINDOW *) menu_sub (const MENU *); -extern NCURSES_EXPORT(WINDOW *) menu_win (const MENU *); - -extern NCURSES_EXPORT(const char *) item_description (const ITEM *); -extern NCURSES_EXPORT(const char *) item_name (const ITEM *); -extern NCURSES_EXPORT(const char *) menu_mark (const MENU *); -extern NCURSES_EXPORT(const char *) menu_request_name (int); - -extern NCURSES_EXPORT(char *) menu_pattern (const MENU *); - -extern NCURSES_EXPORT(void *) menu_userptr (const MENU *); -extern NCURSES_EXPORT(void *) item_userptr (const ITEM *); - -extern NCURSES_EXPORT(chtype) menu_back (const MENU *); -extern NCURSES_EXPORT(chtype) menu_fore (const MENU *); -extern NCURSES_EXPORT(chtype) menu_grey (const MENU *); - -extern NCURSES_EXPORT(int) free_item (ITEM *); -extern NCURSES_EXPORT(int) free_menu (MENU *); -extern NCURSES_EXPORT(int) item_count (const MENU *); -extern NCURSES_EXPORT(int) item_index (const ITEM *); -extern NCURSES_EXPORT(int) item_opts_off (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) item_opts_on (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) menu_driver (MENU *,int); -extern NCURSES_EXPORT(int) menu_opts_off (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) menu_opts_on (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) menu_pad (const MENU *); -extern NCURSES_EXPORT(int) pos_menu_cursor (const MENU *); -extern NCURSES_EXPORT(int) post_menu (MENU *); -extern NCURSES_EXPORT(int) scale_menu (const MENU *,int *,int *); -extern NCURSES_EXPORT(int) set_current_item (MENU *menu,ITEM *item); -extern NCURSES_EXPORT(int) set_item_init (MENU *,void(*)(MENU *)); -extern NCURSES_EXPORT(int) set_item_opts (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) set_item_term (MENU *,void(*)(MENU *)); -extern NCURSES_EXPORT(int) set_item_userptr (ITEM *, void *); -extern NCURSES_EXPORT(int) set_item_value (ITEM *,bool); -extern NCURSES_EXPORT(int) set_menu_back (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_fore (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_format (MENU *,int,int); -extern NCURSES_EXPORT(int) set_menu_grey (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_init (MENU *,void(*)(MENU *)); -extern NCURSES_EXPORT(int) set_menu_items (MENU *,ITEM **); -extern NCURSES_EXPORT(int) set_menu_mark (MENU *, const char *); -extern NCURSES_EXPORT(int) set_menu_opts (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) set_menu_pad (MENU *,int); -extern NCURSES_EXPORT(int) set_menu_pattern (MENU *,const char *); -extern NCURSES_EXPORT(int) set_menu_sub (MENU *,WINDOW *); -extern NCURSES_EXPORT(int) set_menu_term (MENU *,void(*)(MENU *)); -extern NCURSES_EXPORT(int) set_menu_userptr (MENU *,void *); -extern NCURSES_EXPORT(int) set_menu_win (MENU *,WINDOW *); -extern NCURSES_EXPORT(int) set_top_row (MENU *,int); -extern NCURSES_EXPORT(int) top_row (const MENU *); -extern NCURSES_EXPORT(int) unpost_menu (MENU *); -extern NCURSES_EXPORT(int) menu_request_by_name (const char *); -extern NCURSES_EXPORT(int) set_menu_spacing (MENU *,int,int,int); -extern NCURSES_EXPORT(int) menu_spacing (const MENU *,int *,int *,int *); - - -extern NCURSES_EXPORT(bool) item_value (const ITEM *); -extern NCURSES_EXPORT(bool) item_visible (const ITEM *); - -extern NCURSES_EXPORT(void) menu_format (const MENU *,int *,int *); +extern MENU_EXPORT(ITEM **) menu_items (const MENU *); +extern MENU_EXPORT(ITEM *) current_item (const MENU *); +extern MENU_EXPORT(ITEM *) new_item (const char *,const char *); + +extern MENU_EXPORT(MENU *) new_menu (ITEM **); + +extern MENU_EXPORT(Item_Options) item_opts (const ITEM *); +extern MENU_EXPORT(Menu_Options) menu_opts (const MENU *); + +extern MENU_EXPORT(Menu_Hook) item_init (const MENU *); +extern MENU_EXPORT(Menu_Hook) item_term (const MENU *); +extern MENU_EXPORT(Menu_Hook) menu_init (const MENU *); +extern MENU_EXPORT(Menu_Hook) menu_term (const MENU *); + +extern MENU_EXPORT(WINDOW *) menu_sub (const MENU *); +extern MENU_EXPORT(WINDOW *) menu_win (const MENU *); + +extern MENU_EXPORT(const char *) item_description (const ITEM *); +extern MENU_EXPORT(const char *) item_name (const ITEM *); +extern MENU_EXPORT(const char *) menu_mark (const MENU *); +extern MENU_EXPORT(const char *) menu_request_name (int); + +extern MENU_EXPORT(char *) menu_pattern (const MENU *); + +extern MENU_EXPORT(void *) menu_userptr (const MENU *); +extern MENU_EXPORT(void *) item_userptr (const ITEM *); + +extern MENU_EXPORT(chtype) menu_back (const MENU *); +extern MENU_EXPORT(chtype) menu_fore (const MENU *); +extern MENU_EXPORT(chtype) menu_grey (const MENU *); + +extern MENU_EXPORT(int) free_item (ITEM *); +extern MENU_EXPORT(int) free_menu (MENU *); +extern MENU_EXPORT(int) item_count (const MENU *); +extern MENU_EXPORT(int) item_index (const ITEM *); +extern MENU_EXPORT(int) item_opts_off (ITEM *,Item_Options); +extern MENU_EXPORT(int) item_opts_on (ITEM *,Item_Options); +extern MENU_EXPORT(int) menu_driver (MENU *,int); +extern MENU_EXPORT(int) menu_opts_off (MENU *,Menu_Options); +extern MENU_EXPORT(int) menu_opts_on (MENU *,Menu_Options); +extern MENU_EXPORT(int) menu_pad (const MENU *); +extern MENU_EXPORT(int) pos_menu_cursor (const MENU *); +extern MENU_EXPORT(int) post_menu (MENU *); +extern MENU_EXPORT(int) scale_menu (const MENU *,int *,int *); +extern MENU_EXPORT(int) set_current_item (MENU *menu,ITEM *item); +extern MENU_EXPORT(int) set_item_init (MENU *, Menu_Hook); +extern MENU_EXPORT(int) set_item_opts (ITEM *,Item_Options); +extern MENU_EXPORT(int) set_item_term (MENU *, Menu_Hook); +extern MENU_EXPORT(int) set_item_userptr (ITEM *, void *); +extern MENU_EXPORT(int) set_item_value (ITEM *,bool); +extern MENU_EXPORT(int) set_menu_back (MENU *,chtype); +extern MENU_EXPORT(int) set_menu_fore (MENU *,chtype); +extern MENU_EXPORT(int) set_menu_format (MENU *,int,int); +extern MENU_EXPORT(int) set_menu_grey (MENU *,chtype); +extern MENU_EXPORT(int) set_menu_init (MENU *, Menu_Hook); +extern MENU_EXPORT(int) set_menu_items (MENU *,ITEM **); +extern MENU_EXPORT(int) set_menu_mark (MENU *, const char *); +extern MENU_EXPORT(int) set_menu_opts (MENU *,Menu_Options); +extern MENU_EXPORT(int) set_menu_pad (MENU *,int); +extern MENU_EXPORT(int) set_menu_pattern (MENU *,const char *); +extern MENU_EXPORT(int) set_menu_sub (MENU *,WINDOW *); +extern MENU_EXPORT(int) set_menu_term (MENU *, Menu_Hook); +extern MENU_EXPORT(int) set_menu_userptr (MENU *,void *); +extern MENU_EXPORT(int) set_menu_win (MENU *,WINDOW *); +extern MENU_EXPORT(int) set_top_row (MENU *,int); +extern MENU_EXPORT(int) top_row (const MENU *); +extern MENU_EXPORT(int) unpost_menu (MENU *); +extern MENU_EXPORT(int) menu_request_by_name (const char *); +extern MENU_EXPORT(int) set_menu_spacing (MENU *,int,int,int); +extern MENU_EXPORT(int) menu_spacing (const MENU *,int *,int *,int *); + + +extern MENU_EXPORT(bool) item_value (const ITEM *); +extern MENU_EXPORT(bool) item_visible (const ITEM *); + +extern MENU_EXPORT(void) menu_format (const MENU *,int *,int *); + +#if NCURSES_SP_FUNCS +extern MENU_EXPORT(MENU *) NCURSES_SP_NAME(new_menu) (SCREEN*, ITEM **); +#endif #ifdef __cplusplus }