cvs: php-gtk / config.m4 /generator libglade.defs libglade.overrides /src .cvsignore Makefile.in php_gtk.c php_gtk.h php_gtk_object.c

From: Date: Tue, 13 Mar 2001 05:52:39 +0000
Subject: cvs: php-gtk / config.m4 /generator libglade.defs libglade.overrides /src .cvsignore Makefile.in php_gtk.c php_gtk.h php_gtk_object.c
Groups: php.gtk 
Request: Send a blank email to php-gtk+get-754@lists.php.net to get a copy of this message
andrei Mon Mar 12 21:52:39 2001 EDT Added files: /php-gtk/generator libglade.defs libglade.overrides Modified files: /php-gtk config.m4 /php-gtk/src .cvsignore Makefile.in php_gtk.c php_gtk.h php_gtk_object.c Log: * Re-engineered the build system a bit to accomodate the need to build additional modules. * Fixed GDK locale support (thanks to Alex Bokovoy). Oh, and added libglade support.

Index: php-gtk/config.m4 diff -u php-gtk/config.m4:1.1.1.1 php-gtk/config.m4:1.2 --- php-gtk/config.m4:1.1.1.1 Mon Jan 29 14:15:58 2001 +++ php-gtk/config.m4 Mon Mar 12 21:52:38 2001 @@ -1,4 +1,4 @@ -dnl $Id: config.m4,v 1.1.1.1 2001/01/29 22:15:58 andrei Exp $ +dnl $Id: config.m4,v 1.2 2001/03/13 05:52:38 andrei Exp $ dnl config.m4 for extension gtk PHP_ARG_ENABLE(php-gtk, whether to enable PHP GTK+ support, @@ -199,15 +199,65 @@ rm -f conf.gtktest ]) +dnl PHP_PATH_LIBGLADE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]) +dnl Test to see if libglade is installed, and define LIBGLADE_CFLAGS, LIBS +dnl +AC_DEFUN(PHP_PATH_LIBGLADE, +[dnl +dnl Get the cflags and libraries from the libglade-config script +dnl +AC_ARG_WITH(libglade-config, +[ --with-libglade-config=LIBGLADE_CONFIG Location of libglade-config], +LIBGLADE_CONFIG="$withval") + +module_args= +for module in . $3; do + case "$module" in + gnome) + module_args="$module_args gnome" + ;; + bonobo) + module_args="$module_args bonobo" + ;; + esac +done + +AC_PATH_PROG(LIBGLADE_CONFIG, libglade-config, no) +AC_MSG_CHECKING(for libglade) +if test "$LIBGLADE_CONFIG" = "no"; then + AC_MSG_RESULT(no) + ifelse([$2], , :, [$2]) +else + if $LIBGLADE_CONFIG --check $module_args; then + LIBGLADE_CFLAGS=`$LIBGLADE_CONFIG --cflags $module_args` + LIBGLADE_LIBS=`$LIBGLADE_CONFIG --libs $module_args` + AC_MSG_RESULT(yes) + ifelse([$1], , :, [$1]) + else + echo "*** libglade was not compiled with support for $module_args" 1>&2 + AC_MSG_RESULT(no) + ifelse([$2], , :, [$2]) + fi +fi +AC_SUBST(LIBGLADE_CFLAGS) +AC_SUBST(LIBGLADE_LIBS) +]) + if test "$PHP_PHP_GTK" != "no"; then PHP_EXTENSION(php-gtk, $ext_shared) PHP_GTK_SOURCE_LIBADD=src/libphp_gtk_src.la PHP_GTK_SHARED_LIBADD=$PHP_GTK_SOURCE_LIBADD + + PHP_PATH_GTK(1.2.6,PHP_GTK_MODULES="gtk gdk") + PHP_PATH_LIBGLADE(build_libglade=yes,build_libglade=no) - PHP_PATH_GTK(1.2.6,,,) + if test "$build_libglade" = "yes"; then + PHP_GTK_MODULES="$PHP_GTK_MODULES libglade" + AC_DEFINE(HAVE_LIBGLADE, 1, [If libglade support to be compiled in]) + fi - for arg in $GTK_CFLAGS; do + for arg in $GTK_CFLAGS $LIBGLADE_CFLAGS; do case $arg in -I*) n=`echo $ac_n $arg$ac_c|sed s/-I//` @@ -215,7 +265,7 @@ ;; esac done - for arg in $GTK_LIBS; do + for arg in $GTK_LIBS $LIBGLADE_LIBS; do case "$arg" in -l*) n=`echo $ac_n $arg$ac_c|sed s/-l//` @@ -227,8 +277,14 @@ ;; esac done + + for arg in $PHP_GTK_MODULES; do + PHP_GTK_GEN_SOURCES="$PHP_GTK_GEN_SOURCES php_gtk_gen_$arg.c" + done PHP_SUBST(PHP_GTK_SHARED_LIBADD) PHP_SUBST(PHP_GTK_SOURCE_LIBADD) + PHP_SUBST(PHP_GTK_MODULES) + PHP_SUBST(PHP_GTK_GEN_SOURCES) AC_DEFINE(HAVE_PHP_GTK, 1, [If you want PHP GTK+ support enabled]) PHP_FAST_OUTPUT($ext_builddir/src/Makefile) Index: php-gtk/src/.cvsignore diff -u php-gtk/src/.cvsignore:1.2 php-gtk/src/.cvsignore:1.3 --- php-gtk/src/.cvsignore:1.2 Sat Feb 3 17:03:34 2001 +++ php-gtk/src/.cvsignore Mon Mar 12 21:52:38 2001 @@ -38,4 +38,4 @@ want_dependencies .deps config.nice -php_gtk_gen.* +php_gtk_gen* Index: php-gtk/src/Makefile.in diff -u php-gtk/src/Makefile.in:1.2 php-gtk/src/Makefile.in:1.3 --- php-gtk/src/Makefile.in:1.2 Tue Feb 27 08:54:01 2001 +++ php-gtk/src/Makefile.in Mon Mar 12 21:52:38 2001 @@ -1,9 +1,21 @@ LTLIBRARY_NAME = libphp_gtk_src.la -LTLIBRARY_SOURCES = php_gtk.c php_gtk_object.c php_gtk_types.c php_gtk_util.c $(srcdir)/php_gtk_gen.c +LTLIBRARY_SOURCES = php_gtk.c php_gtk_object.c php_gtk_types.c php_gtk_util.c $(PHP_GTK_GEN_SOURCES) -$(srcdir)/php_gtk_gen.c: $(top_srcdir)/generator/gtk.defs $(top_srcdir)/generator/gdk.defs \ - $(top_srcdir)/generator/gtk-extrafuncs.defs $(top_srcdir)/generator/gtk.overrides - cd $(srcdir) \ - && php -q $(top_srcdir)/generator/generator.php gtk.defs gtk.overrides - include $(top_srcdir)/build/dynlib.mk + +php_gtk.o php_gtk.lo php_gtk.slo: php_gtk_gen_ce.h php_gtk_gen_reg_items.h + +php_gtk_gen_ce.h: $(PHP_GTK_GEN_SOURCES) + grep -h "^zend_class_entry" $(PHP_GTK_GEN_SOURCES) | sed -e "s!^!extern !" > $(srcdir)/php_gtk_gen_ce.h + +php_gtk_gen_reg_items.h: + php -q $(top_srcdir)/generator/make_reg_items.php $(PHP_GTK_MODULES) + +php_gtk_gen_gtk.c: $(top_srcdir)/generator/gtk.defs $(top_srcdir)/generator/gtk-extrafuncs.defs $(top_srcdir)/generator/gtk.overrides + php -q $(top_srcdir)/generator/generator.php -o gtk.overrides -p gtk gtk.defs + +php_gtk_gen_gdk.c: $(top_srcdir)/generator/gdk.defs $(top_srcdir)/generator/gdk.overrides + php -q $(top_srcdir)/generator/generator.php -o gdk.overrides -p gdk gdk.defs + +php_gtk_gen_libglade.c: $(top_srcdir)/generator/libglade.defs $(top_srcdir)/generator/libglade.overrides + php -q $(top_srcdir)/generator/generator.php -o libglade.overrides -p libglade -r gtk.defs libglade.defs Index: php-gtk/src/php_gtk.c diff -u php-gtk/src/php_gtk.c:1.7 php-gtk/src/php_gtk.c:1.8 --- php-gtk/src/php_gtk.c:1.7 Sat Mar 3 13:12:51 2001 +++ php-gtk/src/php_gtk.c Mon Mar 12 21:52:38 2001 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: php_gtk.c,v 1.7 2001/03/03 21:12:51 andrei Exp $: */ +/* $Id: php_gtk.c,v 1.8 2001/03/13 05:52:38 andrei Exp $: */ #include "php_gtk.h" #include "SAPI.h" @@ -116,6 +116,14 @@ return; } + /* + We must always call gtk_set_locale() in order to get GTK+/GDK + correctly initialize multilingual support. Otherwise, application + will refuse any letters outside ASCII and font metrics will + be broken. + */ + gtk_set_locale(); + if (no_argc) { /* The -f switch case, simple. */ g_free(argv[0]); @@ -180,11 +188,13 @@ php_gtk_class_hash = g_hash_table_new(g_str_hash, g_str_equal); zend_hash_init_ex(&php_gtk_prop_getters, 20, NULL, NULL, 1, 0); zend_hash_init_ex(&php_gtk_prop_setters, 20, NULL, NULL, 1, 0); - php_gtk_register_classes(); +#include "src/php_gtk_gen_reg_items.h" php_gtk_register_types(module_number); - php_gtk_register_constants(module_number ELS_CC); init_gtk(); +#if HAVE_LIBGLADE + glade_init(); +#endif zend_unset_timeout(); zend_set_timeout(0); @@ -216,6 +226,13 @@ DISPLAY_INI_ENTRIES(); */ } + +PHP_FUNCTION(wrap_no_constructor) +{ + php_error(E_WARNING, "%s: An abstract or unimplemented class", get_active_function_name()); + php_gtk_invalidate(this_ptr); +} + #endif /* HAVE_PHP_GTK */ Index: php-gtk/src/php_gtk.h diff -u php-gtk/src/php_gtk.h:1.22 php-gtk/src/php_gtk.h:1.23 --- php-gtk/src/php_gtk.h:1.22 Tue Mar 6 21:37:22 2001 +++ php-gtk/src/php_gtk.h Mon Mar 12 21:52:38 2001 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: php_gtk.h,v 1.22 2001/03/07 05:37:22 andrei Exp $: */ +/* $Id: php_gtk.h,v 1.23 2001/03/13 05:52:38 andrei Exp $: */ #ifndef _PHP_GTK_H #define _PHP_GTK_H @@ -62,6 +62,9 @@ extern zend_class_entry *gtk_accel_group_ce; extern zend_class_entry *gtk_style_ce; +/* include generated class entries */ +#include "src/php_gtk_gen_ce.h" + typedef void (*prop_getter_t)(zval *return_value, zval *object, zend_llist_element **element, int *found); typedef int (*prop_setter_t)(zval *object, zend_llist_element **element, zval *value); @@ -143,7 +146,7 @@ int php_gtk_parse_args_hash(zval *hash, char *format, ...); int php_gtk_check_class(zval *wrapper, zend_class_entry *expected_ce); void php_gtk_invalidate(zval *wrapper); -zend_bool php_gtk_is_callable(zval *callable, char **callable_name); +zend_bool php_gtk_is_callable(zval *callable, zend_bool syntax_only, char **callable_name); zval *php_gtk_array_as_hash(zval ***values, int num_values, int start, int length); zval ***php_gtk_hash_as_array(zval *hash); zval ***php_gtk_func_args(int argc); @@ -155,6 +158,8 @@ php_error(E_WARNING, "%s() is not a static method", get_active_function_name()); \ return; \ } + +PHP_FUNCTION(wrap_no_constructor); #endif /* HAVE_PHP_GTK */ Index: php-gtk/src/php_gtk_object.c diff -u php-gtk/src/php_gtk_object.c:1.19 php-gtk/src/php_gtk_object.c:1.20 --- php-gtk/src/php_gtk_object.c:1.19 Tue Mar 6 21:37:22 2001 +++ php-gtk/src/php_gtk_object.c Mon Mar 12 21:52:38 2001 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: php_gtk_object.c,v 1.19 2001/03/07 05:37:22 andrei Exp $ */ +/* $Id: php_gtk_object.c,v 1.20 2001/03/13 05:52:38 andrei Exp $ */ #include "php_gtk.h" @@ -150,7 +150,7 @@ zval *retval = NULL; zval *tmp; zval ***signal_args; - gchar *callback_name; + char *callback_name; ELS_FETCH(); /* Callback is always passed as the first element. */ @@ -171,12 +171,12 @@ zend_hash_index_find(Z_ARRVAL_P(callback_data), 4, (void **)&callback_lineno); } - if (!php_gtk_is_callable(*callback, &callback_name)) { + if (!php_gtk_is_callable(*callback, 0, &callback_name)) { if (callback_filename) php_error(E_WARNING, "Unable to call signal callback '%s' specified in %s on line %d", callback_name, Z_STRVAL_PP(callback_filename), Z_LVAL_PP(callback_lineno)); else php_error(E_WARNING, "Unable to call callback '%s'", callback_name); - g_free(callback_name); + efree(callback_name); return; } @@ -231,7 +231,7 @@ zval ***handler_args = NULL; int num_handler_args = 0; zval *retval = NULL; - gchar *callback_name; + char *callback_name; ELS_FETCH(); /* Callback is always passed as the first element. */ @@ -240,9 +240,9 @@ zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void **)&callback_filename); zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)&callback_lineno); - if (!php_gtk_is_callable(*callback, &callback_name)) { + if (!php_gtk_is_callable(*callback, 0, &callback_name)) { php_error(E_WARNING, "Unable to call handler callback '%s' specified in %s on line %d", callback_name, Z_STRVAL_PP(callback_filename), Z_LVAL_PP(callback_lineno)); - g_free(callback_name); + efree(callback_name); return; } @@ -271,7 +271,7 @@ zval *retval = NULL, **callback, **extra = NULL; zval **callback_filename = NULL, **callback_lineno = NULL; zval ***input_args; - gchar *callback_name; + char *callback_name; ELS_FETCH(); zend_hash_index_find(Z_ARRVAL_P(callback_data), 0, (void **)&callback); @@ -279,9 +279,9 @@ zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void **)&callback_filename); zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)&callback_lineno); - if (!php_gtk_is_callable(*callback, &callback_name)) { + if (!php_gtk_is_callable(*callback, 0, &callback_name)) { php_error(E_WARNING, "Unable to call input callback '%s' specified in %s on line %d", callback_name, Z_STRVAL_PP(callback_filename), Z_LVAL_PP(callback_lineno)); - g_free(callback_name); + efree(callback_name); return; } Index: php-gtk/generator/libglade.defs +++ php-gtk/generator/libglade.defs ;; -*- scheme -*- ; object definitions ... (object XML (in-module Glade) (parent Data (Gtk)) (c-name GladeXML) ) ;; Enumerations and flags ... ;; From /usr/include/glade/glade-xml.h (function glade_xml_get_type (c-name glade_xml_get_type) (return-type GtkType) ) (function glade_xml_new (c-name glade_xml_new) (return-type GladeXML*) (parameter (type-and-name const-char* fname)) (parameter (type-and-name const-char* root) (null-ok) (default "NULL")) ) (function glade_xml_new_with_domain (c-name glade_xml_new_with_domain) (is-constructor-of GladeXML) (return-type GladeXML*) (parameter (type-and-name const-char* fname)) (parameter (type-and-name const-char* root) (null-ok) (default "NULL")) (parameter (type-and-name const-char* domain) (null-ok) (default "NULL")) ) (function xml_new_from_memory (c-name glade_xml_new_from_memory) (return-type GladeXML*) (parameter (type-and-name char* buffer)) (parameter (type-and-name int size)) (parameter (type-and-name const-char* root) (null-ok)) (parameter (type-and-name const-char* domain) (null-ok)) ) (method construct (of-object XML (Glade)) (c-name glade_xml_construct) (return-type gboolean) (parameter (type-and-name const-char* fname)) (parameter (type-and-name const-char* root)) (parameter (type-and-name const-char* domain)) ) (method signal_connect (of-object XML (Glade)) (c-name glade_xml_signal_connect) (return-type none) (parameter (type-and-name const-char* handlername)) (parameter (type-and-name GtkSignalFunc func)) ) (method signal_connect_data (of-object XML (Glade)) (c-name glade_xml_signal_connect_data) (return-type none) (parameter (type-and-name const-char* handlername)) (parameter (type-and-name GtkSignalFunc func)) (parameter (type-and-name gpointer user_data)) ) (method signal_autoconnect (of-object XML (Glade)) (c-name glade_xml_signal_autoconnect) (return-type none) ) (method signal_connect_full (of-object XML (Glade)) (c-name glade_xml_signal_connect_full) (return-type none) (parameter (type-and-name const-gchar* handler_name)) (parameter (type-and-name GladeXMLConnectFunc func)) (parameter (type-and-name gpointer user_data)) ) (method signal_autoconnect_full (of-object XML (Glade)) (c-name glade_xml_signal_autoconnect_full) (return-type none) (parameter (type-and-name GladeXMLConnectFunc func)) (parameter (type-and-name gpointer user_data)) ) (method get_widget (of-object XML (Glade)) (c-name glade_xml_get_widget) (return-type GtkWidget*) (parameter (type-and-name const-char* name)) ) (method get_widget_prefix (of-object XML (Glade)) (c-name glade_xml_get_widget_prefix) (return-type GList*) (parameter (type-and-name const-char* name)) ) (method get_widget_by_long_name (of-object XML (Glade)) (c-name glade_xml_get_widget_by_long_name) (return-type GtkWidget*) (parameter (type-and-name const-char* longname)) ) (method relative_file (of-object XML (Glade)) (c-name glade_xml_relative_file) (return-type gchar*) (parameter (type-and-name const-gchar* filename)) ) (function get_widget_name (c-name glade_get_widget_name) (return-type const-gchar*) (parameter (type-and-name GtkWidget* widget)) ) (function get_widget_long_name (c-name glade_get_widget_long_name) (return-type const-gchar*) (parameter (type-and-name GtkWidget* widget)) ) (function get_widget_tree (c-name glade_get_widget_tree) (return-type GladeXML*) (parameter (type-and-name GtkWidget* widget)) ) Index: php-gtk/generator/libglade.overrides +++ php-gtk/generator/libglade.overrides /* vim: set ft=cpp: */ %% headers #include <glade/glade.h> %% ignore-glob *_get_type %% ignore glade_xml_new glade_xml_signal_connect_full glade_xml_signal_connect_data glade_xml_signal_autoconnect_full %% override glade_xml_signal_connect static void glade_connect_one(const gchar *handler_name, GtkObject *obj, const gchar *signal_name, const gchar *signal_data, GtkObject *connect_object, gboolean after, zval *callback_data) { zval **callback = NULL, **extra = NULL, **pass_object = NULL; zval **callback_filename = NULL, **callback_lineno = NULL; zval *object; zend_hash_index_find(Z_ARRVAL_P(callback_data), 0, (void **)&callback); zend_hash_index_find(Z_ARRVAL_P(callback_data), 1, (void **)&extra); zend_hash_index_find(Z_ARRVAL_P(callback_data), 1, (void **)&pass_object); zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void **)&callback_filename); zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)&callback_lineno); if (connect_object) { zval *temp; Z_LVAL_PP(pass_object) = 0; object = php_gtk_new(connect_object); MAKE_STD_ZVAL(temp); array_init(temp); add_next_index_zval(temp, object); php_array_merge(Z_ARRVAL_P(temp), Z_ARRVAL_PP(extra), 0); REPLACE_ZVAL_VALUE(extra, temp, 0); } gtk_signal_connect_full(obj, signal_name, NULL, (GtkCallbackMarshal)php_gtk_callback_marshal, callback_data, php_gtk_destroy_notify, FALSE, after); } PHP_FUNCTION(wrap_glade_xml_signal_connect) { char *handler_name = NULL; zval *callback = NULL; zval *extra; zval *data; char *callback_filename; uint callback_lineno; NOT_STATIC_METHOD(); if (ZEND_NUM_ARGS() < 2) { php_error(E_WARNING, "%s() requires at least 2 arguments, %d given", get_active_function_name(), ZEND_NUM_ARGS()); return; } if (!php_gtk_parse_args(2, "sV", &handler_name, &callback)) return; callback_filename = zend_get_executed_filename(ELS_C); callback_lineno = zend_get_executed_lineno(ELS_C); extra = php_gtk_func_args_as_hash(ZEND_NUM_ARGS(), 2, ZEND_NUM_ARGS()); data = php_gtk_build_value("(VNisi)", callback, extra, 1, callback_filename, callback_lineno); glade_xml_signal_connect_full(GLADE_XML(PHP_GTK_GET(this_ptr)), handler_name, (GladeXMLConnectFunc)glade_connect_one, data); RETURN_NULL(); } %% override glade_xml_autoconnect static void glade_connect_auto(const gchar *handler_name, GtkObject *obj, const gchar *signal_name, const gchar *signal_data, GtkObject *connect_object, gboolean after, zval *callback_data) { } PHP_FUNCTION(wrap_glade_xml_signal_autoconnect) { }
« previous php.gtk (#754) next »