|
|
1.1 ! root 1: /* $Header: uwm.h,v 1.4 87/08/21 13:31:43 swick Exp $ */ ! 2: ! 3: #include <X11/copyright.h> ! 4: ! 5: /* ! 6: * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. ! 7: * ! 8: * All Rights Reserved ! 9: * ! 10: * Permission to use, copy, modify, and distribute this software and its ! 11: * documentation for any purpose and without fee is hereby granted, ! 12: * provided that the above copyright notice appear in all copies and that ! 13: * both that copyright notice and this permission notice appear in ! 14: * supporting documentation, and that the name of Digital Equipment ! 15: * Corporation not be used in advertising or publicity pertaining to ! 16: * distribution of the software without specific, written prior permission. ! 17: * ! 18: * ! 19: * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ! 20: * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ! 21: * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ! 22: * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ! 23: * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ! 24: * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ! 25: * SOFTWARE. ! 26: */ ! 27: ! 28: ! 29: ! 30: /* ! 31: * MODIFICATION HISTORY ! 32: * ! 33: * 000 -- M. Gancarz, DEC Ultrix Engineering Group ! 34: * 001 -- R. Kittell, DEC Storage A/D May 19, 1986 ! 35: * Added global vars for warp options. ! 36: * 002 -- Loretta Guarino Reid, DEC Ultrix Engineering Group, ! 37: * Western Software Lab, Port to X11 ! 38: */ ! 39: ! 40: #include <errno.h> ! 41: #include <stdio.h> ! 42: #include <strings.h> ! 43: #include <X11/Xlib.h> ! 44: ! 45: ! 46: #define MIN(x, y) ((x) <= (y) ? (x) : (y)) ! 47: #define MAX(x, y) ((x) >= (y) ? (x) : (y)) ! 48: #define VOLUME_PERCENTAGE(x) ((x)*14) ! 49: #define ModMask 0xFF ! 50: #define ButtonMask(b) (((b)==Button1) ? Button1Mask : \ ! 51: (((b)==Button2) ? Button2Mask : Button3Mask)) ! 52: ! 53: #define FALSE False ! 54: #define TRUE True ! 55: ! 56: ! 57: #define DEF_DELTA 1 ! 58: #define DEF_FONT "6x10" ! 59: #define DEF_FUNC GXcopy ! 60: #define DEF_ICON_BORDER_WIDTH 2 ! 61: #define DEF_ICON_PADDING 4 ! 62: #define DEF_POP_BORDER_WIDTH 2 ! 63: #define DEF_POP_PADDING 4 ! 64: #define DEF_MENU_BORDER_WIDTH 2 ! 65: #define DEF_MENU_PADDING 4 ! 66: #define DEF_VOLUME 4 ! 67: #define DEF_PUSH 5 ! 68: ! 69: #define INIT_PTEXT {'0', '0', '0', 'x', '0', '0', '0'} ! 70: #define TEMPFILE "/tmp/uwm.XXXXXX" ! 71: #define SYSFILE "/usr/lib/X11/uwm/system.uwmrc" ! 72: ! 73: #define CURSOR_WIDTH 16 ! 74: #define CURSOR_HEIGHT 16 ! 75: ! 76: #define MAX_ZAP_VECTORS 8 ! 77: #define MAX_BOX_VECTORS 16 ! 78: ! 79: #define DRAW_WIDTH 0 /* use fastest hardware draw */ ! 80: #define DRAW_VALUE 0xfd ! 81: #define DRAW_FUNC GXxor ! 82: #define DRAW_PLANES 1 ! 83: ! 84: #define ROOT 0x1 ! 85: #define WINDOW 0x2 ! 86: #define ICON 0x4 ! 87: ! 88: #define FAILURE 0 ! 89: #define NAME_LEN 256 /* Maximum length of filenames. */ ! 90: #define EVENTMASK (ButtonPressMask | ButtonReleaseMask) ! 91: ! 92: #define DrawBox() XDrawSegments(dpy, RootWindow(dpy, scr),DrawGC,box,num_vectors) ! 93: #define DrawZap() XDrawSegments(dpy, RootWindow(dpy, scr),DrawGC,zap,num_vectors) ! 94: ! 95: /* ! 96: * Keyword table entry. ! 97: */ ! 98: typedef struct _keyword { ! 99: char *name; ! 100: int type; ! 101: Bool *bptr; ! 102: int *nptr; ! 103: char *sptr; ! 104: Bool (*fptr)(); ! 105: } Keyword; ! 106: ! 107: /* ! 108: * Keyword table type entry. ! 109: */ ! 110: #define IsString 1 ! 111: #define IsBoolTrue 2 ! 112: #define IsBoolFalse 3 ! 113: #define IsFunction 4 ! 114: #define IsMenuMap 5 ! 115: #define IsMenu 6 ! 116: #define IsDownFunction 7 ! 117: #define IsParser 8 ! 118: #define IsNumeric 9 ! 119: #define IsQuitFunction 10 ! 120: ! 121: /* ! 122: * Button/key binding type. ! 123: */ ! 124: typedef struct _binding { ! 125: struct _binding *next; ! 126: int context; ! 127: int mask; ! 128: int button; ! 129: Bool (*func)(); ! 130: char *menuname; ! 131: struct _menuinfo *menu; ! 132: } Binding; ! 133: ! 134: /* ! 135: * Key expression type. ! 136: */ ! 137: typedef struct _keyexpr { ! 138: char *name; ! 139: int mask; ! 140: } KeyExpr; ! 141: ! 142: /* ! 143: * Context expression type. ! 144: */ ! 145: typedef struct _contexpr { ! 146: char *name; ! 147: int mask; ! 148: } ContExpr; ! 149: ! 150: /* ! 151: * Button modifier type. ! 152: */ ! 153: typedef struct _buttonmodifier { ! 154: char *name; ! 155: int mask; ! 156: } ButtonModifier; ! 157: ! 158: /* ! 159: * Button modifier mask definitions. ! 160: * bits 13 and 14 unused in key masks, according to X.h ! 161: * steal bit 15, since we don't use AnyModifier ! 162: */ ! 163: ! 164: #define DeltaMotion (1<<13) ! 165: #define ButtonUp (1<<14) ! 166: #define ButtonDown AnyModifier ! 167: #define ButtonMods DeltaMotion+ButtonUp+ButtonDown ! 168: ! 169: /* ! 170: * Button and mask redefinitions, for X11 ! 171: */ ! 172: #define LeftMask Button1Mask ! 173: #define MiddleMask Button2Mask ! 174: #define RightMask Button3Mask ! 175: #define LeftButton Button1 ! 176: #define MiddleButton Button2 ! 177: #define RightButton Button3 ! 178: ! 179: /* ! 180: * MenuInfo data type. ! 181: */ ! 182: typedef struct _menuinfo { ! 183: char *name; /* Name of this menu. */ ! 184: Window w; /* Menu window. */ ! 185: int iheight; /* Height of an item. */ ! 186: int width; /* Width of this menu. */ ! 187: int height; /* Height of this menu. */ ! 188: Pixmap image; /* Saved image of the menu. */ ! 189: char *foreground; /* Name of foreground color. */ ! 190: char *background; /* Name of background color. */ ! 191: char *fghighlight; /* Name of hightlight foreground color. */ ! 192: char *bghighlight; /* Name of highlight background color. */ ! 193: XColor fg; /* Foreground color definition. */ ! 194: XColor bg; /* Background color definition. */ ! 195: XColor hlfg; /* Foreground highlight color definition. */ ! 196: XColor hlbg; /* Background highlight color definition. */ ! 197: struct _menuline *line; /* Linked list of menu items. */ ! 198: } MenuInfo; ! 199: ! 200: /* ! 201: * Menu Line data type. ! 202: */ ! 203: typedef struct _menuline { ! 204: struct _menuline *next; /* Pointer to next line. */ ! 205: char *name; /* Name of this line. */ ! 206: int type; /* IsShellCommand, IsText, IsTextNL... */ ! 207: Window w; /* Subwindow for this line. */ ! 208: char *text; /* Text string to be acted upon. */ ! 209: Bool (*func)(); /* Window manager function to be invoked. */ ! 210: struct _menuinfo *menu; /* Menu to be invoked. */ ! 211: char *foreground; /* Name of foreground color. */ ! 212: char *background; /* Name of background color. */ ! 213: XColor fg; /* Foreground color definition. */ ! 214: XColor bg; /* Background color definition. */ ! 215: } MenuLine; ! 216: ! 217: /* ! 218: * MenuLine->type definitions. ! 219: */ ! 220: #define IsShellCommand 1 ! 221: #define IsText 2 ! 222: #define IsTextNL 3 ! 223: #define IsUwmFunction 4 ! 224: #define IsMenuFunction 5 ! 225: #define IsImmFunction 6 /* Immediate (context-less) function. */ ! 226: ! 227: /* ! 228: * Menu Link data type. Used by the parser when creating a linked list ! 229: * of menus. ! 230: */ ! 231: typedef struct _menulink { ! 232: struct _menulink *next; /* Pointer to next MenuLink. */ ! 233: struct _menuinfo *menu; /* Pointer to the menu in this link. */ ! 234: } MenuLink; ! 235: ! 236: typedef int Pixel; ! 237: ! 238: /* ! 239: * External variable definitions. ! 240: */ ! 241: extern int errno; ! 242: extern Window Pop; /* Pop-up dimension display window. */ ! 243: extern Window Frozen; /* Contains window id of "gridded" window. */ ! 244: extern XFontStruct *IFontInfo; /* Icon text font information. */ ! 245: extern XFontStruct *PFontInfo; /* Pop-up text font information. */ ! 246: extern XFontStruct *MFontInfo; /* Menu text font information. */ ! 247: extern Pixmap GrayPixmap; /* Gray pixmap. */ ! 248: extern Pixel IBorder; /* Icon window border pixmap. */ ! 249: extern Pixmap IBackground; /* Icon window background pixmap. */ ! 250: extern Pixel PBorder; /* Pop-Up Window border pixmap. */ ! 251: extern Pixel PBackground; /* Pop-up Window background pixmap. */ ! 252: extern Pixel MBorder; /* Menu Window border pixmap. */ ! 253: extern Pixel MBackground; /* Menu Window background pixmap. */ ! 254: extern Cursor ArrowCrossCursor; /* Arrow cross cursor. */ ! 255: extern Cursor TextCursor; /* Text cursor used in icon windows. */ ! 256: extern Cursor IconCursor; /* Icon Cursor. */ ! 257: extern Cursor MenuCursor; /* Menu cursor. */ ! 258: extern Cursor MenuMaskCursor; /* Menu mask cursor. */ ! 259: extern Cursor LeftButtonCursor; /* Left button main cursor. */ ! 260: extern Cursor MiddleButtonCursor;/* Middle button main cursor. */ ! 261: extern Cursor RightButtonCursor;/* Right button main cursor. */ ! 262: extern Cursor TargetCursor; /* Target (select-a-window) cursor. */ ! 263: extern int ScreenWidth; /* Display screen width. */ ! 264: extern int ScreenHeight; /* Display screen height. */ ! 265: extern int ITextForground; /* Icon window text forground color. */ ! 266: extern int ITextBackground; /* Icon window text background color. */ ! 267: extern int IBorderWidth; /* Icon window border width. */ ! 268: extern int PTextForground; /* Pop-up window text forground color. */ ! 269: extern int PTextBackground; /* Pop-up window text background color. */ ! 270: extern int PWidth; /* Pop-up window width (including borders). */ ! 271: extern int PHeight; /* Pop-up window height (including borders). */ ! 272: extern int PBorderWidth; /* Pop-up window border width. */ ! 273: extern int MTextForground; /* Menu window text forground color. */ ! 274: extern int MTextBackground; /* Menu window text background color. */ ! 275: extern int MBorderWidth; /* Menu window border width. */ ! 276: extern int PPadding; /* Pop-up window padding. */ ! 277: extern int Delay; /* Delay between clicks of double click. */ ! 278: extern int Delta; /* Mouse movement slop. */ ! 279: extern int HIconPad; /* Icon horizontal padding. */ ! 280: extern int VIconPad; /* Icon vertical padding. */ ! 281: extern int HMenuPad; /* Menu horizontal padding. */ ! 282: extern int VMenuPad; /* Menu vertical padding. */ ! 283: extern int MaxColors; /* Maximum number of colors to use. */ ! 284: extern int Pushval; /* Number of pixels to push window by. */ ! 285: extern int Volume; /* Audible alarm volume. */ ! 286: extern int status; /* Routine return status. */ ! 287: extern int Maxfd; /* Maximum file descriptors for select(2). */ ! 288: extern MenuLink *Menus; /* Linked list of menus. */ ! 289: extern GC IconGC; /* graphics context for icon */ ! 290: extern GC PopGC; /* graphics context for pop */ ! 291: extern GC MenuGC; /* graphics context for menu */ ! 292: extern GC MenuInvGC; /* graphics context for menu background */ ! 293: extern GC DrawGC; /* graphics context for zap */ ! 294: ! 295: extern Bool Autoselect; /* Warp mouse to default menu selection? */ ! 296: extern Bool Freeze; /* Freeze server during move/resize? */ ! 297: extern Bool Grid; /* Should the m/r box contain a 9 seg. grid. */ ! 298: extern Bool NWindow; /* Normalize windows? */ ! 299: extern Bool NIcon; /* Normalize icons? */ ! 300: extern Bool Push; /* Relative=TRUE, Absolute=FALSE. */ ! 301: extern Bool Reverse; /* Reverse video? */ ! 302: extern Bool WarpOnRaise; /* Warp to upper right corner on raise. */ ! 303: extern Bool WarpOnIconify; /* Warp to icon center on iconify. */ ! 304: extern Bool WarpOnDeIconify; /* Warp to upper right corner on de-iconify. */ ! 305: extern Bool Zap; /* Should the the zap effect be used. */ ! 306: extern Bool FocusSetByUser; /* True if f.focus called */ ! 307: ! 308: extern char PText[]; /* Pop-up window dummy text. */ ! 309: extern int PTextSize; /* Pop-up window dummy text size. */ ! 310: ! 311: extern int Lineno; /* Line count for parser. */ ! 312: extern Bool Startup_File_Error; /* Startup file error flag. */ ! 313: extern char Startup_File[]; /* Startup file name. */ ! 314: extern char IFontName[]; /* Icon font name. */ ! 315: extern char PFontName[]; /* Pop-up font name. */ ! 316: extern char MFontName[]; /* Menu font name. */ ! 317: extern char **Argv; /* Pointer to command line parameters. */ ! 318: extern char **Environ; /* Pointer to environment. */ ! 319: ! 320: extern char *DefaultBindings[]; /* Default bindings string array. */ ! 321: extern Keyword KeywordTable[]; /* Keyword lookup table. */ ! 322: extern Binding *Blist; /* Button/key bindings list. */ ! 323: extern KeyExpr KeyExprTbl[]; /* Key expression table. */ ! 324: extern ContExpr ContExprTbl[]; /* Context expression table. */ ! 325: extern ButtonModifier ButtModTbl[];/* Button modifier table. */ ! 326: ! 327: extern int scr; ! 328: extern Display *dpy; /* Display info pointer. */ ! 329: ! 330: #ifdef PROFIL ! 331: int ptrap(); ! 332: #endif ! 333: ! 334: /* ! 335: * External routine typing. ! 336: */ ! 337: extern Bool Beep(); ! 338: extern Bool CircleDown(); ! 339: extern Bool CircleUp(); ! 340: extern Bool Continue(); ! 341: extern Bool Focus(); ! 342: extern Bool GetButton(); ! 343: extern Bool Iconify(); ! 344: extern Bool Lower(); ! 345: extern Bool Menu(); ! 346: extern Bool Move(); ! 347: extern Bool MoveOpaque(); ! 348: extern Bool NewIconify(); ! 349: extern Bool Pause(); ! 350: extern Bool PushDown(); ! 351: extern Bool PushLeft(); ! 352: extern Bool PushRight(); ! 353: extern Bool PushUp(); ! 354: extern Bool Quit(); ! 355: extern Bool Raise(); ! 356: extern Bool Redraw(); ! 357: extern Bool Refresh(); ! 358: extern Bool ResetBindings(); ! 359: extern Bool ResetMenus(); ! 360: extern Bool ResetVariables(); ! 361: extern Bool Resize(); ! 362: extern Bool Restart(); ! 363: extern int StoreCursors(); ! 364: extern int StoreBox(); ! 365: extern int StoreGridBox(); ! 366: extern int StoreZap(); ! 367: extern int Error(); ! 368: extern int XError(); ! 369: extern int CreateMenus(); ! 370: ! 371: extern char *stash(); ! 372: extern char *GetIconName();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.