Mercurial > hg > xemacs-beta
annotate src/glade.c @ 5925:08cfc8f77fb6 cygwin
make space for long ptr, and store as such, for frame in WINDOW data,
add a bit more debugging to debug-mswindow,
Vin Shelton patch to fix M-x shell
| author | Henry Thompson <ht@markup.co.uk> |
|---|---|
| date | Fri, 27 Feb 2015 17:41:20 +0000 |
| parents | 2aa9cd456ae7 |
| children |
| 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 ** |
|
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
12 ** XEmacs is free software: you can redistribute it and/or modify it |
|
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
|
13 ** under the terms of the GNU General Public License as published by the |
|
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
14 ** Free Software Foundation, either version 3 of the License, or (at your |
|
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
15 ** option) any later version. |
|
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
16 ** |
|
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
|
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. |
|
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
21 ** |
|
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
|
22 ** You should have received a copy of the GNU General Public License |
|
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
23 ** along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
| 462 | 24 |
| 25 #if defined(HAVE_GLADE_H) || defined(HAVE_GLADE_GLADE_H) | |
| 26 | |
| 27 /* For COMPILED_FUNCTIONP */ | |
| 28 #include "bytecode.h" | |
| 29 | |
| 30 #ifdef HAVE_GLADE_GLADE_H | |
| 31 #include <glade/glade.h> | |
| 32 #endif | |
| 33 | |
| 34 #ifdef HAVE_GLADE_H | |
| 35 #include <glade.h> | |
| 36 #endif | |
| 37 | |
| 38 /* This is based on the code from rep-gtk 0.11 in libglade-support.c */ | |
| 39 | |
| 40 static void | |
| 41 connector (const gchar *handler_name, GtkObject *object, | |
| 42 const gchar *signal_name, const gchar *signal_data, | |
| 43 GtkObject *connect_object, gboolean after, gpointer user_data) | |
| 44 { | |
| 45 Lisp_Object func; | |
| 46 Lisp_Object lisp_data = Qnil; | |
| 47 | |
| 5013 | 48 func = GET_LISP_FROM_VOID (user_data); |
| 462 | 49 |
| 50 if (NILP (func)) | |
| 51 { | |
| 52 /* Look for a lisp function called HANDLER_NAME */ | |
| 53 func = intern (handler_name); | |
| 54 } | |
| 55 | |
| 56 if (signal_data && signal_data[0]) | |
| 57 { | |
|
4677
8f1ee2d15784
Support full Common Lisp multiple values in C.
Aidan Kehoe <kehoea@parhasard.net>
parents:
2054
diff
changeset
|
58 lisp_data |
|
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
59 = IGNORE_MULTIPLE_VALUES (Feval (Fread (build_cistring (signal_data)))); |
| 462 | 60 } |
| 61 | |
| 62 /* obj, name, func, cb_data, object_signal, after_p */ | |
| 63 Fgtk_signal_connect (build_gtk_object (object), | |
| 64 intern (signal_name), | |
| 65 func, | |
| 66 lisp_data, | |
| 67 connect_object ? Qt : Qnil, | |
| 68 after ? Qt : Qnil); | |
| 69 } | |
| 70 | |
| 71 /* This differs from lisp/subr.el (functionp) definition by allowing | |
| 72 ** symbol names that may not necessarily be fboundp yet. | |
| 73 */ | |
| 74 static int __almost_functionp (Lisp_Object obj) | |
| 75 { | |
| 76 return (SYMBOLP (obj) || | |
| 77 SUBRP (obj) || | |
| 78 COMPILED_FUNCTIONP (obj) || | |
| 79 EQ (Fcar_safe (obj), Qlambda)); | |
| 80 } | |
| 81 | |
| 82 DEFUN ("glade-xml-signal-connect", Fglade_xml_signal_connect, 3, 3, 0, /* | |
| 83 Connect a glade handler. | |
| 84 */ | |
| 85 (xml, handler_name, func)) | |
| 86 { | |
| 87 CHECK_GTK_OBJECT (xml); | |
| 88 CHECK_STRING (handler_name); | |
| 89 | |
| 90 if (!__almost_functionp (func)) | |
| 91 { | |
| 92 func = wrong_type_argument (intern ("functionp"), func); | |
| 93 } | |
| 94 | |
| 95 glade_xml_signal_connect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
| 2054 | 96 (char*) XSTRING_DATA (handler_name), |
| 5013 | 97 connector, STORE_LISP_IN_VOID (func)); |
| 462 | 98 return (Qt); |
| 99 } | |
| 100 | |
| 101 DEFUN ("glade-xml-signal-autoconnect", Fglade_xml_signal_autoconnect, 1, 1, 0, /* | |
| 102 Connect all glade handlers. | |
| 103 */ | |
| 104 (xml)) | |
| 105 { | |
| 106 CHECK_GTK_OBJECT (xml); | |
| 107 | |
| 108 glade_xml_signal_autoconnect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
| 5013 | 109 connector, STORE_LISP_IN_VOID (Qnil)); |
| 462 | 110 return (Qt); |
| 111 } | |
| 112 | |
| 113 DEFUN ("glade-xml-textdomain", Fglade_xml_textdomain, 1, 1, 0, /* | |
| 114 Return the textdomain of a GladeXML object. | |
| 115 */ | |
| 116 (xml)) | |
| 117 { | |
| 118 gchar *the_domain = NULL; | |
| 119 | |
| 120 CHECK_GTK_OBJECT (xml); | |
| 121 | |
| 122 if (!GLADE_IS_XML (XGTK_OBJECT (xml)->object)) | |
| 123 { | |
| 563 | 124 wtaerror ("Object is not a GladeXML type.", xml); |
| 462 | 125 } |
| 126 | |
| 127 #ifdef LIBGLADE_XML_TXTDOMAIN | |
| 128 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->txtdomain; | |
| 129 #else | |
| 130 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->textdomain; | |
| 131 #endif | |
|
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
132 return (build_cistring (the_domain)); |
| 462 | 133 } |
| 134 | |
| 135 void syms_of_glade (void) | |
| 136 { | |
| 137 DEFSUBR (Fglade_xml_signal_connect); | |
| 138 DEFSUBR (Fglade_xml_signal_autoconnect); | |
| 139 DEFSUBR (Fglade_xml_textdomain); | |
| 140 } | |
| 141 | |
| 142 void vars_of_glade (void) | |
| 143 { | |
| 144 Fprovide (intern ("glade")); | |
| 145 } | |
| 146 | |
| 147 #else /* !(HAVE_GLADE_H || HAVE_GLADE_GLADE_H) */ | |
| 148 #define syms_of_glade() | |
| 149 #define vars_of_glade() | |
| 150 #endif |
