cvs: php-gtk /generator gtk.defs gtk.overrides libglade.overrides /src php_gtk_object.c

From: Date: Fri, 16 Mar 2001 04:18:14 +0000
Subject: cvs: php-gtk /generator gtk.defs gtk.overrides libglade.overrides /src php_gtk_object.c
Groups: php.gtk 
Request: Send a blank email to php-gtk+get-951@lists.php.net to get a copy of this message
andrei Thu Mar 15 20:18:14 2001 EDT Modified files: /php-gtk/generator gtk.defs gtk.overrides libglade.overrides /php-gtk/src php_gtk_object.c Log: * Added GtkList->selection property. * Fixed a crash in GladeXML::signal_connect() when passing extra arguments. * Fixed cascading property access on objects. Index: php-gtk/generator/gtk.defs diff -u php-gtk/generator/gtk.defs:1.9 php-gtk/generator/gtk.defs:1.10 --- php-gtk/generator/gtk.defs:1.9 Wed Mar 14 13:36:04 2001 +++ php-gtk/generator/gtk.defs Thu Mar 15 20:18:14 2001 @@ -310,6 +310,7 @@ (in-module Gtk) (parent Container (Gtk)) (c-name GtkList) + (field (type-and-name GList* selection)) ) (object Layout Index: php-gtk/generator/gtk.overrides diff -u php-gtk/generator/gtk.overrides:1.35 php-gtk/generator/gtk.overrides:1.36 --- php-gtk/generator/gtk.overrides:1.35 Wed Mar 14 12:51:34 2001 +++ php-gtk/generator/gtk.overrides Thu Mar 15 20:18:14 2001 @@ -1061,6 +1061,7 @@ add_property_bool(return_value, "expand", box_child->expand); add_property_bool(return_value, "fill", box_child->fill); add_property_long(return_value, "pack", box_child->pack); + return; } } } @@ -1141,6 +1142,7 @@ add_property_zval(return_value, "widget", php_gtk_new((GtkObject *)fixed_child->widget)); add_property_long(return_value, "x", fixed_child->x); add_property_long(return_value, "y", fixed_child->y); + return; } } } @@ -1160,4 +1162,34 @@ } return; +%% +getprop GtkList selection + GtkListItem *item; + zval *php_item; + GList *tmp; + GList *selection = GTK_LIST(PHP_GTK_GET(object))->selection; + zend_overloaded_element *property; + zend_llist_element *next = (*element)->next; + int prop_index; + if (next) { + int i = 0; + property = (zend_overloaded_element *)next->data; + if (Z_TYPE_P(property) == OE_IS_ARRAY && Z_TYPE(property->element) == IS_LONG) { + *element = next; + prop_index = Z_LVAL(property->element); + for (tmp = selection, i = 0; tmp; tmp = tmp->next, i++) { + if (i == prop_index) { + *return_value = *php_gtk_new((GtkObject *)tmp->data); + return; + } + } + } + } else { + array_init(return_value); + for (tmp = selection; tmp; tmp = tmp->next) + add_next_index_zval(return_value, php_gtk_new((GtkObject *)tmp->data)); + } + + return; +%% Index: php-gtk/generator/libglade.overrides diff -u php-gtk/generator/libglade.overrides:1.1 php-gtk/generator/libglade.overrides:1.2 --- php-gtk/generator/libglade.overrides:1.1 Mon Mar 12 21:52:38 2001 +++ php-gtk/generator/libglade.overrides Thu Mar 15 20:18:14 2001 @@ -24,9 +24,9 @@ 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); + zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void **)&pass_object); + zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)&callback_filename); + zend_hash_index_find(Z_ARRVAL_P(callback_data), 4, (void **)&callback_lineno); if (connect_object) { zval *temp; Index: php-gtk/src/php_gtk_object.c diff -u php-gtk/src/php_gtk_object.c:1.20 php-gtk/src/php_gtk_object.c:1.21 --- php-gtk/src/php_gtk_object.c:1.20 Mon Mar 12 21:52:38 2001 +++ php-gtk/src/php_gtk_object.c Thu Mar 15 20:18:14 2001 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: php_gtk_object.c,v 1.20 2001/03/13 05:52:38 andrei Exp $ */ +/* $Id: php_gtk_object.c,v 1.21 2001/03/16 04:18:14 andrei Exp $ */ #include "php_gtk.h" @@ -611,30 +611,31 @@ zval result; zend_overloaded_element *overloaded_property; zend_llist_element *element; - zval *object = property_reference->object; + zval object = *property_reference->object; prop_getter_t *getter; zend_class_entry *ce; - int found = FAILURE; + int found; for (element=property_reference->elements_list->head; element; element=element->next) { overloaded_property = (zend_overloaded_element *) element->data; if ((Z_TYPE_P(overloaded_property) != OE_IS_OBJECT || Z_TYPE(overloaded_property->element) != IS_STRING) || - Z_TYPE_P(object) != IS_OBJECT) { + Z_TYPE(object) != IS_OBJECT) { convert_to_null(&result); return result; } - for (ce = Z_OBJCE_P(object); ce != NULL && found != SUCCESS; ce = ce->parent) { + found = FAILURE; + for (ce = Z_OBJCE(object); ce != NULL && found != SUCCESS; ce = ce->parent) { if (zend_hash_index_find(&php_gtk_prop_getters, (long)ce, (void **)&getter) == SUCCESS) { - (*getter)(&result, object, &element, &found); + (*getter)(&result, &object, &element, &found); } } if (found == FAILURE) { convert_to_null(&result); return result; } - object = &result; + object = result; zval_dtor(&overloaded_property->element); } @@ -652,7 +653,7 @@ prop_getter_t *getter; prop_setter_t *setter; zend_class_entry *ce; - int retval, found = FAILURE; + int retval, found; /* * We want to stop at the last overloaded object reference - the rest can @@ -670,6 +671,7 @@ return FAILURE; } + found = FAILURE; for (ce = Z_OBJCE_P(object); ce != NULL && found != SUCCESS; ce = ce->parent) { if (zend_hash_index_find(&php_gtk_prop_getters, (long)ce, (void **)&getter) == SUCCESS) { (*getter)(&result, object, &element, &found); @@ -677,7 +679,7 @@ } if (found == FAILURE) return FAILURE; - object = &result; + *object = result; zval_dtor(&overloaded_property->element); } @@ -703,7 +705,7 @@ zval *object = property_reference->object; prop_getter_t *getter; zend_class_entry *ce; - int found = FAILURE; + int found; /* * We want to stop at the last overloaded object reference - the rest can @@ -724,6 +726,7 @@ return; } + found = FAILURE; for (ce = Z_OBJCE_P(object); ce != NULL && found != SUCCESS; ce = ce->parent) { if (zend_hash_index_find(&php_gtk_prop_getters, (long)ce, (void **)&getter) == SUCCESS) { (*getter)(&result, object, &element, &found); @@ -733,7 +736,7 @@ php_error(E_WARNING, "Error invoking method '%s' on property '%s'", Z_STRVAL(method_name), Z_STRVAL(overloaded_property->element)); return; } - object = &result; + *object = result; zval_dtor(&overloaded_property->element); }

« previous php.gtk (#951) next »