Mercurial > hg > xemacs-beta
annotate src/glade.c @ 5008:cad59a0a3b19
Add license information from Marcus Thiessel.
See xemacs-beta message <20100208091453.25900@gmx.net>.
| author | Jerry James <james@xemacs.org> |
|---|---|
| date | Tue, 09 Feb 2010 09:50:49 -0700 |
| parents | 304aebb79cd3 |
| children | ae48681c47fa |
| 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, |
|
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
|
25 ** Boston, MA 02111-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 | |
| 826 | 51 func = VOID_TO_LISP (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), |
| 462 | 100 connector, LISP_TO_VOID (func)); |
| 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), | |
| 112 connector, LISP_TO_VOID (Qnil)); | |
| 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 |
