1 /*
2  *   xmcd - Motif(R) CD Audio Player/Ripper
3  *
4  *   Copyright (C) 1993-2004  Ti Kan
5  *   E-mail: xmcd@amb.org
6  *
7  *   This program is free software; you can redistribute it and/or modify
8  *   it under the terms of the GNU General Public License as published by
9  *   the Free Software Foundation; either version 2 of the License, or
10  *   (at your option) any later version.
11  *
12  *   This program is distributed in the hope that it will be useful,
13  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *   GNU General Public License for more details.
16  *
17  *   You should have received a copy of the GNU General Public License
18  *   along with this program; if not, write to the Free Software
19  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  *
21  */
22 #ifndef __CALLBACK_H__
23 #define __CALLBACK_H__
24 
25 #ifndef lint
26 static char *_callback_h_ident_ = "@(#)callback.h	6.14 03/12/12";
27 #endif
28 
29 /* Macros */
30 #define register_activate_cb(w, func, arg)				\
31 	XtAddCallback((w), XmNactivateCallback,				\
32 		(XtCallbackProc) (func),				\
33 		(XtPointer) (arg))
34 
35 #define register_arm_cb(w, func, arg)					\
36 	XtAddCallback((w), XmNarmCallback,				\
37 		(XtCallbackProc) (func),				\
38 		(XtPointer) (arg))
39 
40 #define register_disarm_cb(w, func, arg)				\
41 	XtAddCallback((w), XmNdisarmCallback,				\
42 		(XtCallbackProc) (func),				\
43 		(XtPointer) (arg))
44 
45 #define register_valchg_cb(w, func, arg)				\
46 	XtAddCallback((w), XmNvalueChangedCallback,			\
47 		(XtCallbackProc) (func),				\
48 		(XtPointer) (arg))
49 
50 #define register_drag_cb(w, func, arg)					\
51 	XtAddCallback((w), XmNdragCallback,				\
52 		(XtCallbackProc) (func),				\
53 		(XtPointer) (arg))
54 
55 #define register_modvfy_cb(w, func, arg)				\
56 	XtAddCallback((w), XmNmodifyVerifyCallback,			\
57 		(XtCallbackProc) (func),				\
58 		(XtPointer) (arg))
59 
60 #define register_focus_cb(w, func, arg)					\
61 	XtAddCallback((w), XmNfocusCallback,				\
62 		(XtCallbackProc) (func),				\
63 		(XtPointer) (arg))
64 
65 #define register_losefocus_cb(w, func, arg)				\
66 	XtAddCallback((w), XmNlosingFocusCallback,			\
67 		(XtCallbackProc) (func),				\
68 		(XtPointer) (arg))
69 
70 #define register_defaction_cb(w, func, arg)				\
71 	XtAddCallback((w), XmNdefaultActionCallback,			\
72 		(XtCallbackProc) (func),				\
73 		(XtPointer) (arg))
74 
75 #define register_singlesel_cb(w, func, arg)				\
76 	XtAddCallback((w), XmNsingleSelectionCallback,			\
77 		(XtCallbackProc) (func),				\
78 		(XtPointer) (arg))
79 
80 #define register_browsel_cb(w, func, arg)				\
81 	XtAddCallback((w), XmNbrowseSelectionCallback,			\
82 		(XtCallbackProc) (func),				\
83 		(XtPointer) (arg))
84 
85 #define register_cascade_cb(w, func, arg)				\
86 	XtAddCallback((w), XmNcascadingCallback,			\
87 		(XtCallbackProc) (func),				\
88 		(XtPointer) (arg))
89 
90 #define register_btnrel_ev(w, func, arg)				\
91 	XtAddEventHandler((w), ButtonReleaseMask,			\
92 			  False,					\
93 			  (XtEventHandler) (func),			\
94 			  (XtPointer) (arg))
95 
96 #define register_focuschg_ev(w, func, arg)				\
97 	XtAddEventHandler((w), FocusChangeMask,				\
98 			  False,					\
99 			  (XtEventHandler) (func),			\
100 			  (XtPointer) (arg))
101 
102 #define register_xingchg_ev(w, func, arg)				\
103 	XtAddEventHandler((w), EnterWindowMask | LeaveWindowMask,	\
104 			  False,					\
105 			  (XtEventHandler) (func),			\
106 			  (XtPointer) (arg))
107 
108 
109 /* Public function prototypes */
110 extern void	set_delw_atom(Atom);
111 extern void	add_delw_callback(Widget, XtCallbackProc, XtPointer);
112 extern void	rm_delw_callback(Widget, XtCallbackProc, XtPointer);
113 extern void	register_callbacks(widgets_t *, curstat_t *);
114 
115 #endif /* __CALLBACK_H__ */
116 
117