menu.h 2.24 KB
Newer Older
Andreas Schwab's avatar
Andreas Schwab committed
1
/* Functions to manipulate menus.
Paul Eggert's avatar
Paul Eggert committed
2
   Copyright (C) 2008-2017 Free Software Foundation, Inc.
Andreas Schwab's avatar
Andreas Schwab committed
3 4 5 6 7

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
8 9
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.
Andreas Schwab's avatar
Andreas Schwab committed
10 11 12 13 14 15 16 17 18 19 20 21

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */

#ifndef MENU_H
#define MENU_H

22
#include "../lwlib/lwlib-widget.h"
23

24 25 26
/* Bit fields used by terminal-specific menu_show_hook.  */

enum {
27
  MENU_KEYMAPS = 0x1,
28 29 30 31
  MENU_FOR_CLICK = 0x2,
  MENU_KBD_NAVIGATION = 0x4
};

Jan D's avatar
Jan D committed
32
extern void init_menu_items (void);
33
extern void finish_menu_items (void) ATTRIBUTE_CONST;
Jan D's avatar
Jan D committed
34 35
extern void discard_menu_items (void);
extern void save_menu_items (void);
36
extern bool parse_single_submenu (Lisp_Object, Lisp_Object, Lisp_Object);
Jan D's avatar
Jan D committed
37
extern void list_of_panes (Lisp_Object);
38 39
#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI) \
  || defined (HAVE_NS)
Jan D's avatar
Jan D committed
40 41
extern void free_menubar_widget_value_tree (widget_value *);
extern void update_submenu_strings (widget_value *);
Dmitry Antipov's avatar
Dmitry Antipov committed
42
extern void find_and_call_menu_selection (struct frame *, int,
Jan D's avatar
Jan D committed
43
                                          Lisp_Object, void *);
44
extern widget_value *make_widget_value (const char *, char *, bool, Lisp_Object);
45
extern widget_value *digest_single_submenu (int, int, bool);
Andreas Schwab's avatar
Andreas Schwab committed
46 47
#endif

48 49 50 51 52 53
#if defined (HAVE_X_WINDOWS) || defined (MSDOS)
extern Lisp_Object x_menu_show (struct frame *, int, int, int,
				Lisp_Object, const char **);
#endif
#ifdef HAVE_NTGUI
extern Lisp_Object w32_menu_show (struct frame *, int, int, int,
54
				  Lisp_Object, const char **);
Eli Zaretskii's avatar
Eli Zaretskii committed
55
#endif
56 57
#ifdef HAVE_NS
extern Lisp_Object ns_menu_show (struct frame *, int, int, int,
58
				 Lisp_Object, const char **);
59
#endif
60 61
extern Lisp_Object tty_menu_show (struct frame *, int, int, int,
				  Lisp_Object, const char **);
62
extern ptrdiff_t menu_item_width (const unsigned char *);
Andreas Schwab's avatar
Andreas Schwab committed
63
#endif /* MENU_H */