summaryrefslogtreecommitdiff
path: root/globals.h
blob: b854e96e15da843c6849567d80f96f55ec072e00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
 *  $XConsortium: globals.h /main/37 1996/02/02 14:27:39 kaleb $
 *
 *
 *		       COPYRIGHT 1987, 1989
 *		   DIGITAL EQUIPMENT CORPORATION
 *		       MAYNARD, MASSACHUSETTS
 *			ALL RIGHTS RESERVED.
 *
 * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
 * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
 * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR
 * ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
 *
 * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
 * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
 * ADDITION TO THAT SET FORTH ABOVE.
 *
 * 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 permission notice appear in supporting
 * documentation, and that the name of Digital Equipment Corporation not be
 * used in advertising or publicity pertaining to distribution of the software
 * without specific, written prior permission.
 */
/* $XFree86$ */

#ifdef MAIN
#define ext
#else
#define ext extern
#endif

extern Display	*theDisplay;		/* Display variable. */
extern Widget	toplevel;		/* The top level widget (A hack %%%). */
extern char	*progName;		/* Program name. */
extern char	*homeDir;		/* User's home directory. */
extern Atom	wm_protocols;		/* WM_PROTOCOLS atom for this display */
extern Atom	wm_delete_window;	/* see ICCCM on Window Deletion */
extern Atom	wm_save_yourself;	/* see ICCCM on session management */
extern Atom	protocolList[2];	/* contains the two above */

struct _resources {
    Boolean	debug;
    char	*mail_path;		/* mh's mail directory. */
    char	*temp_dir;		/* Directory for temporary files. */
    char	*mh_path;		/* Path for mh commands. */
    char	*initial_folder_name;	/* Initial folder to use. */
    char	*initial_inc_file;	/* -file for inc on initial folder */
    char	*insert_filter;		/* Insert message filter command */
    char	*drafts_folder_name;	/* Folder for drafts. */
    int		send_line_width;	/* How long to break lines on send. */
    int		break_send_line_width;	/* Minimum length of a line before
					   we'll break it. */
    char	*print_command;		/* Printing command. */
    int		toc_width;	/* How many characters wide to use in tocs */
    Boolean	skip_deleted;		/* If true, skip over deleted msgs. */
    Boolean	skip_moved;		/* If true, skip over moved msgs. */
    Boolean	skip_copied;		/* If true, skip over copied msgs. */
    Boolean	hide_boring_headers;
    char	*geometry;	/* Default geometry to use for things. */
    char	*toc_geometry;
    char	*view_geometry;
    char	*comp_geometry;
    char	*pick_geometry;
    int		toc_percentage;		/* % of toc and view used by toc */
    Boolean	new_mail_check;		/* should xmh check for new mail? */
    Boolean	make_checkpoints;       /* should xmh save edits in progress?*/
    int		check_frequency;	/* backwards compatibility */
    int		mail_waiting_flag;	/* If true, change icon on new mail */
    int		mail_interval;		/* how often to check for new mail */
    int		rescan_interval;	/* how often to check viewed tocs */
    int		checkpoint_interval;	/* how often to save edits */
    const char *checkpoint_name_format; /* format of checkpoint file name */
    Pixmap	flag_up;		/* folder has new mail */
    Pixmap	flag_down;		/* folder has no new mail */
    Pixmap	new_mail_icon;		/* new mail icon for wm hints */
    Pixmap	no_mail_icon;		/* no mail icon for wm hints */
    Cursor	cursor;			/* application cursor */
    Pixel	pointer_color;		/* application cursor color */
    Boolean	show_on_inc;		/* show 1st new message after inc? */
    Boolean	sticky_menu;		/* command menu entries are sticky? */
    Boolean	prefix_wm_and_icon_name;/* prefix wm names with progName ? */
    Boolean	reverse_read_order;	/* decrement counter to next msg ? */
    Boolean	block_events_on_busy;	/* disallow user input while busy ? */
    Cursor	busy_cursor;		/* the cursor while input blocked */
    Pixel	busy_pointer_color;	/* busy cursor color */
    int		command_button_count;	/* number of buttons in command box */
    int		app_defaults_version;	/* for sanity check */
    char 	*banner;		/* defaults to xmh version string */
    XtTranslations wm_protocols_translations; /* for all shells seen by WM */
};

extern struct _resources app_resources;

extern char	*draftFile;		/* Filename of draft. */
extern char	*xmhDraftFile;		/* Filename for sending. */
extern Toc	*folderList;		/* Array of folders. */
extern int	numFolders;		/* Number of entries in above array. */
extern Toc	InitialFolder;		/* Toc containing initial folder. */
extern Toc	DraftsFolder;		/* Toc containing drafts. */
extern Scrn	*scrnList;		/* Array of scrns in use. */
extern int	numScrns;		/* Number of scrns in above array. */
extern Widget	NoMenuForButton;	/* Flag menu widget value: no menu */
extern Widget	LastMenuButtonPressed;	/* to `toggle' menu buttons */
extern Widget	NullSource;		/* null text widget source */
extern Dimension rootwidth;		/* Dimensions of root window.  */
extern Dimension rootheight;
extern Pixmap	MenuItemBitmap;		/* Options menu item checkmark */
extern XtTranslations NoTextSearchAndReplace; /* no-op ^S and ^R in Text */

struct _LastInput {
    Window win;
    int x;
    int y;
};

extern struct _LastInput lastInput;

extern Boolean	subProcessRunning; /* interlock for DoCommand/CheckMail */

#define PNullSource (NullSource != NULL ? NullSource : \
(NullSource = (Widget)  CreateFileSource(scrn->viewlabel, "/dev/null", False)))


typedef struct _XmhMenuEntry {
    const char	*name;			/* menu entry name */
    void   	(*function)(XMH_CB_ARGS); /* menu entry callback function */
} XmhMenuEntryRec, *XmhMenuEntry;


typedef struct _XmhMenuButtonDesc {
    const char	*button_name;		/* menu button name */
    const char	*menu_name;		/* menu name */
    int		id;			/* an internal key */
    XmhMenuEntry entry;			/* list of menu entries */
    Cardinal	num_entries;		/* count of menu entries in list */
} XmhMenuButtonDescRec, *XmhMenuButtonDesc;


extern XmhMenuEntryRec	folderMenu[];
extern XmhMenuEntryRec	tocMenu[];
extern XmhMenuEntryRec	messageMenu[];
extern XmhMenuEntryRec	sequenceMenu[];
extern XmhMenuEntryRec	viewMenu[];
extern XmhMenuEntryRec	optionMenu[];

extern XmhMenuButtonDescRec	MenuBoxButtons[];

/* Used as indices into MenuBoxButtons; these must correspond. */

#define XMH_FOLDER	0
#define XMH_TOC		1
#define XMH_MESSAGE	2
#define	XMH_SEQUENCE	3
#define XMH_VIEW	4
#define XMH_OPTION	5

/* Bell types Feep() */
#ifdef XKB
#include <X11/extensions/XKBbells.h>
#else
#define	XkbBI_Info			0
#define	XkbBI_MinorError		1
#define	XkbBI_MajorError		2
#define	XkbBI_Failure			6
#define	XkbBI_Wait			7
#define	XkbBI_NewMail			12
#endif