1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/menu.e,v 1.6 2011/05/16 16:21:58 william Exp $
19 */
20
21#ifndef _MENU_E_
22#define _MENU_E_
23
24typedef struct tagMenuDontSendCommandInfo {
25   int dont_send_command;
26   int selected_index; /* equals INVALID if nothing is selected */
27} MenuDontSendCommandInfo;
28
29extern int	iconWindowShown;
30extern int	iconWindowCreated;
31extern int	importingIconFile;
32extern int	showVersion;
33extern int	activeMenu;
34extern GC	textMenuGC;
35extern GC	rvPixmapMenuGC;
36extern int	menuRowsBeforeScroll;
37extern int	menuColsBeforeScroll;
38
39extern int	maxScrollableMenuWidth;
40extern int	maxScrollableMenuHeight;
41
42extern int	deleteCmdAsCut;
43
44extern MenuDontSendCommandInfo	gstMenuDontSendCommandInfo;
45
46#ifdef _INCLUDE_FROM_MENU_C_
47#undef extern
48#define extern
49#endif /*_INCLUDE_FROM_MENU_C_*/
50
51extern void	SendCommandToSelf ARGS_DECL((int nCmdId, int nIndex));
52extern TgMenuItem	*FindMenuItemByCmdId ARGS_DECL((TgMenu*, int cmdid));
53extern TgMenuItem	*FindMenuItemByIndex ARGS_DECL((TgMenu*, int index));
54extern TgMenuItem	*FindMenuItemBySubMenuInfoPtr ARGS_DECL((TgMenu*,
55			                                         TgMenuInfo*));
56extern int	TgSetMenuItemCheckById ARGS_DECL((TgMenu*, int cmdid,
57		                                  int checked));
58extern int	TgSetMenuItemRadioById ARGS_DECL((TgMenu*, int cmdid,
59		                                  int checked));
60extern int	TgIsMenuItemChecked ARGS_DECL((TgMenu*, int index));
61extern int	TgIsMenuItemRadio ARGS_DECL((TgMenu*, int index));
62extern int	TgIsMenuItemEnabled ARGS_DECL((TgMenu*, int index));
63extern int	TgEnableMenuItemById ARGS_DECL((TgMenu*, int cmdid,
64		                                int enabled));
65extern int	TgEnableMenuItemByIndex ARGS_DECL((TgMenu*, int index,
66		                                   int enabled));
67extern int	TgEnableMenuItemBySubMenuInfoPtr ARGS_DECL((TgMenu*,
68		                                            TgMenuInfo*,
69		                                            int enabled));
70extern void	TgClearThreeDButton ARGS_DECL((Display*, Window, GC,
71		                              struct BBRec *, int linewidth));
72extern void	TgDrawThreeDButton ARGS_DECL((Display*, Window, GC,
73		                              struct BBRec *, int state,
74		                              int linewidth, int button));
75extern void	TgDrawStipple ARGS_DECL((Display*, Window, GC, Pixmap,
76		                         int x, int y, int w, int h,
77		                         int fg_pixel, int bg_pixel,
78		                         int fill_style));
79extern void	TgDraw2DGrayedPixmap ARGS_DECL((Display*, Window, Pixmap,
80		                                int x, int y, int w, int h,
81		                                int fg_pixel, int bg_pixel));
82extern void	TgDrawMenuItem ARGS_DECL((TgMenu*, TgMenuItem*));
83extern void	TgDrawEntireMenu ARGS_DECL((TgMenu*));
84extern int	TgWhichMenuIndex ARGS_DECL((TgMenu*, int x, int y,
85		                            int must_be_in_menu));
86extern TgMenu	*TgCreatePopUpSubMenu ARGS_DECL((TgMenu*, int selected_index));
87extern int	TgPopUpSubMenu ARGS_DECL((TgMenu*, int win_x, int win_y));
88extern void	ScrollMenu ARGS_DECL((TgMenu*, int x, int y, int menu_w,
89		                      int menu_h, int button_state));
90extern int	TgMenuLoop ARGS_DECL((TgMenu*));
91extern TgMenu	*TgDestroyMenu ARGS_DECL((TgMenu*, int free_menu));
92extern int	TgSetMenuItemInfo ARGS_DECL((TgMenuItem *to_menu_item, int mask,
93		                             TgMenuItem *from_menu_item));
94extern void	TgSetMenuCanScroll ARGS_DECL((TgMenu*));
95extern void	TgAdjustMenuGeometry ARGS_DECL((TgMenu*, int image_w,
96		                                int image_h, int max_rows));
97extern TgMenu	*TgCreateMenuFromMenuInfo ARGS_DECL((TgMenu*, int X, int Y,
98		                                     TgMenuInfo*,
99		                                     int status_str_xlated));
100extern void	SetScrollableMenuFirstIndex ARGS_DECL((TgMenu*, int index));
101extern int	RefreshMainMenu ARGS_DECL((TgMenu*));
102extern TgMenu	*CreateMainMenu ARGS_DECL((TgMenu*, int X, int Y, TgMenuInfo*,
103		                           int status_str_xlated));
104extern int	MainMenu ARGS_DECL((void));
105extern int	IsPrefix ARGS_DECL((char *Prefix, char *Str, char **Rest));
106extern void	RedrawTitleWindow ARGS_DECL((void));
107extern void	RedrawIconWindow ARGS_DECL((void));
108extern void	InitTitle ARGS_DECL((void));
109extern void	InitMenu ARGS_DECL((void));
110extern void	CleanUpMenu ARGS_DECL((void));
111extern void	SaveDrawWinInfo ARGS_DECL((void));
112extern void	UnIconify ARGS_DECL((void));
113extern void	Iconify ARGS_DECL((void));
114extern void	IconEventHandler ARGS_DECL((XEvent *));
115extern void	TitleEventHandler ARGS_DECL((XEvent *));
116extern void	CalcMenubarWindowHeight ARGS_DECL((void));
117extern void	RedrawMenubarWindow ARGS_DECL((void));
118extern int	MenubarEventHandler ARGS_DECL((XEvent *));
119
120#ifdef _INCLUDE_FROM_MENU_C_
121#undef extern
122#ifndef _NO_RECURSIVE_EXTERN
123#define extern extern
124#endif /* ~_NO_RECURSIVE_EXTERN */
125#endif /*_INCLUDE_FROM_MENU_C_*/
126
127#endif /*_MENU_E_*/
128