mirror of
https://github.com/Stichting-MINIX-Research-Foundation/xsrc.git
synced 2025-09-22 02:57:17 -04:00
271 lines
12 KiB
C
271 lines
12 KiB
C
/*****************************************************************************/
|
|
/** 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. **/
|
|
/*****************************************************************************/
|
|
/*
|
|
* [ ctwm ]
|
|
*
|
|
* Copyright 1992 Claude Lecommandeur.
|
|
*
|
|
* Permission to use, copy, modify and distribute this software [ctwm] and
|
|
* its documentation for any purpose is hereby granted without fee, provided
|
|
* that the above copyright notice appear in all copies and that both that
|
|
* copyright notice and this permission notice appear in supporting documen-
|
|
* tation, and that the name of Claude Lecommandeur not be used in adverti-
|
|
* sing or publicity pertaining to distribution of the software without
|
|
* specific, written prior permission. Claude Lecommandeur make no represen-
|
|
* tations about the suitability of this software for any purpose. It is
|
|
* provided "as is" without express or implied warranty.
|
|
*
|
|
* Claude Lecommandeur DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
|
|
* EVENT SHALL Claude Lecommandeur BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
* CONSEQUENTIAL DAMAGES 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.
|
|
*
|
|
* Author: Claude Lecommandeur [ lecom@sic.epfl.ch ][ April 1992 ]
|
|
*/
|
|
|
|
|
|
/***********************************************************************
|
|
*
|
|
* $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 TWM_ROOT "bLoB_GoOp" /* my private root menu */
|
|
#define TWM_WINDOWS "TwmWindows" /* for f.menu "TwmWindows" */
|
|
#define TWM_ICONS "TwmIcons" /* for f.menu "TwmIcons" */
|
|
#define TWM_WORKSPACES "TwmWorkspaces" /* for f.menu "TwmWorkspaces" */
|
|
#define TWM_ALLWINDOWS "TwmAllWindows" /* for f.menu "TwmAllWindows" */
|
|
|
|
/* Added by dl 2004 */
|
|
#define TWM_ALLICONS "TwmAllIcons" /* for f.menu "TwmAllIcons" */
|
|
|
|
/*******************************************************************/
|
|
/* Added by Dan Lilliehorn (dl@dl.nu) 2000-02-29 */
|
|
#define TWM_KEYS "TwmKeys" /* for f.menu "TwmKeys" */
|
|
#define TWM_VISIBLE "TwmVisible" /* for f.menu "TwmVisible" */
|
|
|
|
#define MAX_FILE_SIZE 4096 /* max chars to read from file for cut */
|
|
|
|
struct MenuItem
|
|
{
|
|
struct MenuItem *next; /* next menu item */
|
|
struct MenuItem *prev; /* prev menu item */
|
|
struct MenuRoot *sub; /* MenuRoot of a pull right menu */
|
|
struct MenuRoot *root; /* back pointer to my MenuRoot */
|
|
char *item; /* the character string displayed */
|
|
char *action; /* action to be performed */
|
|
ColorPair normal; /* unhiglight colors */
|
|
ColorPair highlight; /* highlight colors */
|
|
short item_num; /* item number of this menu */
|
|
short x; /* x coordinate for text */
|
|
short func; /* twm built in function */
|
|
short state; /* video state, 0 = normal, 1 = reversed */
|
|
short strlen; /* strlen(item) */
|
|
short user_colors; /* colors were specified */
|
|
short separated; /* separated from the next item */
|
|
};
|
|
|
|
struct MenuRoot
|
|
{
|
|
struct MenuItem *first; /* first item in menu */
|
|
struct MenuItem *last; /* last item in menu */
|
|
struct MenuItem *lastactive; /* last active item in menu */
|
|
struct MenuItem *defaultitem; /* default item in menu */
|
|
struct MenuRoot *prev; /* previous root menu if pull right */
|
|
struct MenuRoot *next; /* next in list of root menus */
|
|
char *name; /* name of root */
|
|
Window w; /* the window of the menu */
|
|
Window shadow; /* the shadow window */
|
|
ColorPair highlight; /* highlight colors */
|
|
short mapped; /* NEVER_MAPPED, UNMAPPED, or MAPPED */
|
|
short height; /* height of the menu */
|
|
short width; /* width of the menu */
|
|
short items; /* number of items in the menu */
|
|
short pull; /* is there a pull right entry ? */
|
|
short entered; /* EnterNotify following pop up */
|
|
short real_menu; /* this is a real menu */
|
|
short x, y; /* position (for pinned menus) */
|
|
short pinned; /* is this a pinned menu*/
|
|
struct MenuRoot *pmenu; /* the associated pinned menu */
|
|
};
|
|
|
|
#define NEVER_MAPPED 0 /* constants for mapped field of MenuRoot */
|
|
#define UNMAPPED 1
|
|
#define MAPPED 2
|
|
|
|
|
|
struct MouseButton
|
|
{
|
|
int func; /* the function number */
|
|
int mask; /* modifier mask */
|
|
MenuRoot *menu; /* menu if func is F_MENU */
|
|
MenuItem *item; /* action to perform if func != F_MENU */
|
|
};
|
|
|
|
struct FuncButton
|
|
{
|
|
struct FuncButton *next; /* next in the list of function buttons */
|
|
int num; /* button number */
|
|
int cont; /* context */
|
|
int mods; /* modifiers */
|
|
int func; /* the function number */
|
|
MenuRoot *menu; /* menu if func is F_MENU */
|
|
MenuItem *item; /* action to perform if func != F_MENU */
|
|
};
|
|
|
|
struct FuncKey
|
|
{
|
|
struct FuncKey *next; /* next in the list of function keys */
|
|
char *name; /* key name */
|
|
KeySym keysym; /* X keysym */
|
|
KeyCode keycode; /* X keycode */
|
|
int cont; /* context */
|
|
int mods; /* modifiers */
|
|
int func; /* function to perform */
|
|
char *win_name; /* window name (if any) */
|
|
char *action; /* action string (if any) */
|
|
MenuRoot *menu; /* menu if func is F_MENU */
|
|
};
|
|
|
|
extern int RootFunction;
|
|
extern MenuRoot *ActiveMenu;
|
|
extern MenuItem *ActiveItem;
|
|
extern int MoveFunction;
|
|
extern int WindowMoved;
|
|
extern int ConstMove;
|
|
extern int ConstMoveDir;
|
|
extern int ConstMoveX;
|
|
extern int ConstMoveY;
|
|
extern int ConstMoveXL;
|
|
extern int ConstMoveXR;
|
|
extern int ConstMoveYT;
|
|
extern int ConstMoveYB;
|
|
|
|
#define MAXMENUDEPTH 10 /* max number of nested menus */
|
|
extern int MenuDepth;
|
|
|
|
#define MOVE_NONE 0 /* modes of constrained move */
|
|
#define MOVE_VERT 1
|
|
#define MOVE_HORIZ 2
|
|
|
|
#define WARPSCREEN_NEXT "next"
|
|
#define WARPSCREEN_PREV "prev"
|
|
#define WARPSCREEN_BACK "back"
|
|
|
|
#define COLORMAP_NEXT "next"
|
|
#define COLORMAP_PREV "prev"
|
|
#define COLORMAP_DEFAULT "default"
|
|
|
|
extern void InitTitlebarButtons(void);
|
|
extern void InitMenus(void);
|
|
extern MenuRoot *NewMenuRoot(char *name);
|
|
extern MenuItem *AddToMenu(MenuRoot *menu, char *item, char *action,
|
|
MenuRoot *sub, int func, char *fore, char *back);
|
|
extern Bool PopUpMenu(MenuRoot *menu, int x, int y, Bool center);
|
|
extern void MakeWorkspacesMenu (void);
|
|
extern MenuRoot *FindMenuRoot(char *name);
|
|
extern Bool AddFuncKey(char *name, int cont, int mods, int func,
|
|
MenuRoot *menu, char *win_name, char *action);
|
|
extern Bool AddFuncButton(int num, int cont, int mods, int func,
|
|
MenuRoot *menu, MenuItem *item);
|
|
extern void DestroyMenu (MenuRoot *menu);
|
|
extern int PopDownMenu(void);
|
|
extern int HideMenu(MenuRoot *menu);
|
|
extern int ExecuteFunction(int func, void *action,
|
|
Window w, TwmWindow *tmp_win,
|
|
XEvent *eventp,
|
|
int context, int pulldown);
|
|
extern int DeferExecution(int context, int func, Cursor cursor);
|
|
extern int NeedToDefer(MenuRoot *root);
|
|
extern void ReGrab(void);
|
|
extern int CreateTitleButton(char *name, int func, char *action,
|
|
MenuRoot *menuroot, Bool rightside,
|
|
Bool append);
|
|
extern void PaintEntry(MenuRoot *mr, MenuItem *mi, int exposure);
|
|
extern void Paint3DEntry(MenuRoot *mr, MenuItem *mi, int exposure);
|
|
extern void PaintNormalEntry(MenuRoot *mr, MenuItem *mi, int exposure);
|
|
extern void PaintMenu(MenuRoot *mr, XEvent *e);
|
|
extern int UpdateMenu(void);
|
|
extern void MakeMenus(void);
|
|
extern int MakeMenu(MenuRoot *mr);
|
|
extern int MoveMenu(XEvent *eventp);
|
|
extern void DeIconify(TwmWindow *tmp_win);
|
|
extern void Iconify(TwmWindow *tmp_win, int def_x, int def_y);
|
|
extern int WarpToScreen(int n, int inc);
|
|
extern int BumpWindowColormap(TwmWindow *tmp, int inc);
|
|
extern void SetMapStateProp(TwmWindow *tmp_win, int state);
|
|
extern void SendDeleteWindowMessage (TwmWindow *tmp, Time timestamp);
|
|
extern void SendSaveYourselfMessage (TwmWindow *tmp, Time timestamp);
|
|
extern void SendTakeFocusMessage (TwmWindow *tmp, Time timestamp);
|
|
extern int FindConstraint (TwmWindow *tmp_win, int direction);
|
|
extern void MosaicFade (TwmWindow *tmp_win, Window blanket);
|
|
extern void ZoomInWindow (TwmWindow *tmp_win, Window blanket);
|
|
extern void ZoomOutWindow (TwmWindow *tmp_win, Window blanket);
|
|
extern void FadeWindow (TwmWindow *tmp_win, Window blanket);
|
|
extern void SweepWindow (TwmWindow *tmp_win, Window blanket);
|
|
extern int WarpCursorToDefaultEntry (MenuRoot *menu);
|
|
extern void PlaceTransients(TwmWindow *tmp_win, int where);
|
|
extern void PlaceOntop (int ontop, int where);
|
|
extern void ModifyCurrentTB(int button, int mods, int func, char *action,
|
|
MenuRoot *menuroot);
|
|
extern void Execute(char *s);
|
|
extern void ShowIconManager (void);
|
|
extern void HideIconManager (void);
|
|
extern void RaiseWindow(TwmWindow *tmp_win);
|
|
extern void LowerWindow(TwmWindow *tmp_win);
|
|
extern void RaiseLower(TwmWindow *tmp_win);
|
|
extern void RaiseLowerFrame(Window frame, int ontop);
|
|
extern void MapRaised(TwmWindow *tmp_win);
|
|
extern void RaiseFrame(Window frame);
|
|
extern void FocusOnRoot(void);
|
|
extern void TryToPack (TwmWindow *tmp_win, int *x, int *y);
|
|
extern void TryToPush (TwmWindow *tmp_win, int x, int y, int dir);
|
|
extern void TryToGrid (TwmWindow *tmp_win, int *x, int *y);
|
|
extern void resizeFromCenter(Window w, TwmWindow *tmp_win);
|
|
extern void WarpAlongRing (XButtonEvent *ev, Bool forward);
|
|
extern void WarpToWindow (TwmWindow *t, int must_raise);
|
|
extern void DisplayPosition (TwmWindow *tmp_win, int x, int y);
|
|
extern void packwindow (TwmWindow *tmp_win, char *direction);
|
|
extern void fillwindow (TwmWindow *tmp_win, char *direction);
|
|
#if 0 /* Not implemented!!! */
|
|
extern Boolean TryNotToMoveOff ();
|
|
#endif
|
|
extern void AutoSqueeze (TwmWindow *tmp_win);
|
|
extern void Squeeze(TwmWindow *tmp_win);
|
|
|
|
#endif /* _MENUS_ */
|