Mercurial > hg > xemacs-beta
annotate src/glade.c @ 5231:ba07c880114a
Fix up FSF's Franklin Street address in many files.
author | Stephen J. Turnbull <stephen@xemacs.org> |
---|---|
date | Sun, 13 Jun 2010 17:44:56 +0900 |
parents | ae48681c47fa |
children | 2aa9cd456ae7 |
rev | line source |
---|---|
462 | 1 /* glade.c |
2 ** | |
3 ** Description: Interface to `libglade' for XEmacs/GTK | |
4 ** | |
5 ** Created by: William M. Perry <wmperry@gnu.org> | |
6 ** | |
7 ** Copyright (C) 1999 John Harper <john@dcs.warwick.ac.uk> | |
8 ** Copyright (c) 2000 Free Software Foundation | |
9 ** | |
4709
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
10 ** This file is part of XEmacs. |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
11 ** |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
12 ** XEmacs is free software; you can redistribute it and/or modify it |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
13 ** under the terms of the GNU General Public License as published by the |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
14 ** Free Software Foundation; either version 2, or (at your option) any |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
15 ** later version. |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
16 ** |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
17 ** XEmacs is distributed in the hope that it will be useful, but WITHOUT |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
18 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
19 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
20 ** for more details. |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
21 ** |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
22 ** You should have received a copy of the GNU General Public License |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
23 ** along with XEmacs; see the file COPYING. If not, write to |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
24 ** the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, |
5231
ba07c880114a
Fix up FSF's Franklin Street address in many files.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5013
diff
changeset
|
25 ** Boston, MA 02110-1301, USA. */ |
462 | 26 */ |
27 | |
28 #if defined(HAVE_GLADE_H) || defined(HAVE_GLADE_GLADE_H) | |
29 | |
30 /* For COMPILED_FUNCTIONP */ | |
31 #include "bytecode.h" | |
32 | |
33 #ifdef HAVE_GLADE_GLADE_H | |
34 #include <glade/glade.h> | |
35 #endif | |
36 | |
37 #ifdef HAVE_GLADE_H | |
38 #include <glade.h> | |
39 #endif | |
40 | |
41 /* This is based on the code from rep-gtk 0.11 in libglade-support.c */ | |
42 | |
43 static void | |
44 connector (const gchar *handler_name, GtkObject *object, | |
45 const gchar *signal_name, const gchar *signal_data, | |
46 GtkObject *connect_object, gboolean after, gpointer user_data) | |
47 { | |
48 Lisp_Object func; | |
49 Lisp_Object lisp_data = Qnil; | |
50 | |
5013 | 51 func = GET_LISP_FROM_VOID (user_data); |
462 | 52 |
53 if (NILP (func)) | |
54 { | |
55 /* Look for a lisp function called HANDLER_NAME */ | |
56 func = intern (handler_name); | |
57 } | |
58 | |
59 if (signal_data && signal_data[0]) | |
60 { | |
4677
8f1ee2d15784
Support full Common Lisp multiple values in C.
Aidan Kehoe <kehoea@parhasard.net>
parents:
2054
diff
changeset
|
61 lisp_data |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
62 = IGNORE_MULTIPLE_VALUES (Feval (Fread (build_cistring (signal_data)))); |
462 | 63 } |
64 | |
65 /* obj, name, func, cb_data, object_signal, after_p */ | |
66 Fgtk_signal_connect (build_gtk_object (object), | |
67 intern (signal_name), | |
68 func, | |
69 lisp_data, | |
70 connect_object ? Qt : Qnil, | |
71 after ? Qt : Qnil); | |
72 } | |
73 | |
74 /* This differs from lisp/subr.el (functionp) definition by allowing | |
75 ** symbol names that may not necessarily be fboundp yet. | |
76 */ | |
77 static int __almost_functionp (Lisp_Object obj) | |
78 { | |
79 return (SYMBOLP (obj) || | |
80 SUBRP (obj) || | |
81 COMPILED_FUNCTIONP (obj) || | |
82 EQ (Fcar_safe (obj), Qlambda)); | |
83 } | |
84 | |
85 DEFUN ("glade-xml-signal-connect", Fglade_xml_signal_connect, 3, 3, 0, /* | |
86 Connect a glade handler. | |
87 */ | |
88 (xml, handler_name, func)) | |
89 { | |
90 CHECK_GTK_OBJECT (xml); | |
91 CHECK_STRING (handler_name); | |
92 | |
93 if (!__almost_functionp (func)) | |
94 { | |
95 func = wrong_type_argument (intern ("functionp"), func); | |
96 } | |
97 | |
98 glade_xml_signal_connect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
2054 | 99 (char*) XSTRING_DATA (handler_name), |
5013 | 100 connector, STORE_LISP_IN_VOID (func)); |
462 | 101 return (Qt); |
102 } | |
103 | |
104 DEFUN ("glade-xml-signal-autoconnect", Fglade_xml_signal_autoconnect, 1, 1, 0, /* | |
105 Connect all glade handlers. | |
106 */ | |
107 (xml)) | |
108 { | |
109 CHECK_GTK_OBJECT (xml); | |
110 | |
111 glade_xml_signal_autoconnect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
5013 | 112 connector, STORE_LISP_IN_VOID (Qnil)); |
462 | 113 return (Qt); |
114 } | |
115 | |
116 DEFUN ("glade-xml-textdomain", Fglade_xml_textdomain, 1, 1, 0, /* | |
117 Return the textdomain of a GladeXML object. | |
118 */ | |
119 (xml)) | |
120 { | |
121 gchar *the_domain = NULL; | |
122 | |
123 CHECK_GTK_OBJECT (xml); | |
124 | |
125 if (!GLADE_IS_XML (XGTK_OBJECT (xml)->object)) | |
126 { | |
563 | 127 wtaerror ("Object is not a GladeXML type.", xml); |
462 | 128 } |
129 | |
130 #ifdef LIBGLADE_XML_TXTDOMAIN | |
131 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->txtdomain; | |
132 #else | |
133 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->textdomain; | |
134 #endif | |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
135 return (build_cistring (the_domain)); |
462 | 136 } |
137 | |
138 void syms_of_glade (void) | |
139 { | |
140 DEFSUBR (Fglade_xml_signal_connect); | |
141 DEFSUBR (Fglade_xml_signal_autoconnect); | |
142 DEFSUBR (Fglade_xml_textdomain); | |
143 } | |
144 | |
145 void vars_of_glade (void) | |
146 { | |
147 Fprovide (intern ("glade")); | |
148 } | |
149 | |
150 #else /* !(HAVE_GLADE_H || HAVE_GLADE_GLADE_H) */ | |
151 #define syms_of_glade() | |
152 #define vars_of_glade() | |
153 #endif |