mirror of
https://github.com/NishiOwO/fvwm1.git
synced 2025-04-21 08:44:39 +00:00
145 lines
5.8 KiB
C
145 lines
5.8 KiB
C
/****************************************************************************
|
|
* This module is based on Twm, but has been siginificantly modified
|
|
* by Rob Nation
|
|
****************************************************************************/
|
|
/*****************************************************************************/
|
|
/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/
|
|
/** Salt Lake City, Utah **/
|
|
/** Portions Copyright 1989 by the Massachusetts Institute of Technology **/
|
|
/** Cambridge, Massachusetts **/
|
|
/** **/
|
|
/** All Rights Reserved **/
|
|
/** **/
|
|
/** Permission to use, copy, modify, and distribute this software and **/
|
|
/** its documentation for any purpose and without fee is hereby **/
|
|
/** granted, provided that the above copyright notice appear in all **/
|
|
/** copies and that both that copyright notice and this permis- **/
|
|
/** sion notice appear in supporting documentation, and that the **/
|
|
/** names of Evans & Sutherland and M.I.T. not be used in advertising **/
|
|
/** in publicity pertaining to distribution of the software without **/
|
|
/** specific, written prior permission. **/
|
|
/** **/
|
|
/** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/
|
|
/** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/
|
|
/** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/
|
|
/** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/
|
|
/** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/
|
|
/** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/
|
|
/** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/
|
|
/** OR PERFORMANCE OF THIS SOFTWARE. **/
|
|
/*****************************************************************************/
|
|
|
|
|
|
/***********************************************************************
|
|
*
|
|
* $XConsortium: menus.h,v 1.24 89/12/10 17:46:26 jim Exp $
|
|
*
|
|
* twm menus include file
|
|
*
|
|
* 17-Nov-87 Thomas E. LaStrange File created
|
|
*
|
|
***********************************************************************/
|
|
|
|
#ifndef _MENUS_
|
|
#define _MENUS_
|
|
|
|
#define MAX_FILE_SIZE 4096 /* max chars to read from file for cut */
|
|
#define MAXPOPUPS 50
|
|
|
|
|
|
typedef struct MenuItem
|
|
{
|
|
struct MenuItem *next; /* next menu item */
|
|
struct MenuItem *prev; /* prev menu item */
|
|
char *item; /* the character string displayed on left*/
|
|
char *item2; /* the character string displayed on right*/
|
|
char *action; /* action to be performed */
|
|
short item_num; /* item number of this menu */
|
|
short x; /* x coordinate for text (item) */
|
|
short x2; /* x coordinate for text (item2) */
|
|
short y_offset; /* y coordinate for item */
|
|
short y_height; /* y height for item */
|
|
short func; /* twm built in function */
|
|
long val1; /* values needed for F_SCROLL */
|
|
long val2;
|
|
long val1_unit; /* units for val1, val2 */
|
|
long val2_unit; /* pixels (unit=1) or percent of screen
|
|
* (unit = Scr.MyDisplayWidth/Height */
|
|
short state; /* video state, 0 = normal, 1 = reversed */
|
|
short strlen; /* strlen(item) */
|
|
short strlen2; /* strlen(item2) */
|
|
short hotkey; /* Hot key offset (pete@tecc.co.uk).
|
|
0 - No hot key
|
|
+ve - offset to hot key char in item
|
|
-ve - offset to hot key char in item2
|
|
(offsets have 1 added, so +1 or -1
|
|
refer to the *first* character)
|
|
*/
|
|
struct MenuRoot *menu; /* sub-menu */
|
|
} MenuItem;
|
|
|
|
typedef struct MenuRoot
|
|
{
|
|
struct MenuItem *first; /* first item in menu */
|
|
struct MenuItem *last; /* last item in menu */
|
|
struct MenuRoot *next; /* next in list of root menus */
|
|
char *name; /* name of root */
|
|
Window w; /* the window of the menu */
|
|
short height; /* height of the menu */
|
|
short width; /* width of the menu for 1st col */
|
|
short width2; /* width of the menu for 2nd col */
|
|
short items; /* number of items in the menu */
|
|
Bool in_use;
|
|
} MenuRoot;
|
|
|
|
typedef struct MouseButton
|
|
{
|
|
int func; /* the function number */
|
|
MenuRoot *menu; /* menu if func is F_POPUP */
|
|
MenuItem *item; /* action to perform if func != F_POPUP */
|
|
int Button;
|
|
int Context;
|
|
int Modifier;
|
|
int val1;
|
|
int val2;
|
|
long val1_unit; /* units for val1, val2 */
|
|
long val2_unit; /* pixels (unit=1) or percent of screen
|
|
* (unit = Scr.MyDisplayWidth/Height */
|
|
struct MouseButton *NextButton;
|
|
} MouseButton;
|
|
|
|
typedef struct FuncKey
|
|
{
|
|
struct FuncKey *next; /* next in the list of function keys */
|
|
char *name; /* key name */
|
|
KeyCode keycode; /* X keycode */
|
|
int cont; /* context */
|
|
int mods; /* modifiers */
|
|
int func; /* function to perform */
|
|
int val1; /* values needed for F_SCROLL */
|
|
int val2;
|
|
long val1_unit; /* units for val1, val2 */
|
|
long val2_unit; /* pixels (unit=1) or percent of screen */
|
|
MenuRoot *menu; /* menu if func is F_POPUP */
|
|
char *action; /* action string (if any) */
|
|
} FuncKey;
|
|
|
|
#define MENU_ERROR -1
|
|
#define MENU_NOP 0
|
|
#define MENU_DONE 1
|
|
#define SUBMENU_DONE 2
|
|
|
|
|
|
/* Types of events for the FUNCTION builtin */
|
|
#define MOTION 'm'
|
|
#define IMMEDIATE 'i'
|
|
#define CLICK 'c'
|
|
#define DOUBLE_CLICK 'd'
|
|
#define ONE_AND_A_HALF_CLICKS 'o'
|
|
|
|
extern MenuRoot *ActiveMenu;
|
|
extern MenuItem *ActiveItem;
|
|
|
|
|
|
#endif /* _MENUS_ */
|