diff -urP cvs/ext/gtk+/gtk-2.10.overrides cvsbob/ext/gtk+/gtk-2.10.overrides --- cvs/ext/gtk+/gtk-2.10.overrides 2007-10-18 10:20:23.000000000 -0400 +++ cvsbob/ext/gtk+/gtk-2.10.overrides 2007-11-04 20:34:26.000000000 -0500 @@ -378,6 +378,100 @@ %% }}} +%% {{{ GtkRecentChooserDialog + +%% +add-arginfo GtkRecentChooserDialog __construct +static +ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME, 0, 0, 0) + ZEND_ARG_INFO(0, title) + ZEND_ARG_OBJ_INFO(0, parent, GtkWindow, 1) + ZEND_ARG_INFO(0, buttons) +ZEND_END_ARG_INFO(); + +%% +override gtk_recent_chooser_dialog_new +PHP_METHOD +{ + char *title = NULL; + zend_bool free_title; + GtkWindow *parent = NULL; + zval *php_parent = NULL; + zval *buttons = NULL; + GObject *wrapped_obj; + zval **text, **response; + + if(!php_gtk_parse_args(ZEND_NUM_ARGS(), "|uNa", &title, &free_title, &php_parent, gtkwindow_ce, &buttons)) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkRecentChooserDialog); + } + + if (php_parent) { + if(Z_TYPE_P(php_parent) == IS_NULL) { + parent = NULL; + } else { + parent = GTK_WINDOW(PHPG_GOBJECT(php_parent)); + } + } + + wrapped_obj = (GObject *)g_object_new(phpg_gtype_from_zval(this_ptr), NULL); + if(!wrapped_obj) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkRecentChooserDialog); + } + + if(title) { + gtk_window_set_title(GTK_WINDOW(wrapped_obj), title); + } + + if(free_title) { g_free(title); } + + if(parent) { + gtk_window_set_transient_for(GTK_WINDOW(wrapped_obj), parent); + } + + if(buttons) { + if(zend_hash_num_elements(Z_ARRVAL_P(buttons)) % 2) { + php_error( + E_WARNING, + "%s::%s(): button list has to contain pairs of items", + get_active_class_name(NULL TSRMLS_CC), + get_active_function_name(TSRMLS_C) + ); + + gtk_object_destroy(GTK_OBJECT(wrapped_obj)); + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkRecentChooserDialog); + } + + zend_hash_internal_pointer_reset(Z_ARRVAL_P(buttons)); + while(zend_hash_get_current_data(Z_ARRVAL_P(buttons),(void **)&text) == SUCCESS) { + zend_hash_move_forward(Z_ARRVAL_P(buttons)); + zend_hash_get_current_data(Z_ARRVAL_P(buttons),(void **)&response); + zend_hash_move_forward(Z_ARRVAL_P(buttons)); + + if(Z_TYPE_PP(text) != IS_STRING || Z_TYPE_PP(response) != IS_LONG) { + php_error( + E_WARNING, + "%s::%s(): each pair in button list has to be string/number", + get_active_class_name(NULL TSRMLS_CC), + get_active_function_name(TSRMLS_C) + ); + + gtk_object_destroy(GTK_OBJECT(wrapped_obj)); + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkRecentChooserDialog); + } + + gtk_dialog_add_button( + GTK_DIALOG(wrapped_obj), + Z_STRVAL_PP(text), + Z_LVAL_PP(response) + ); + } + } + + phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC); +} + +%% }}} + %% {{{ GtkAssistant %% Only in cvs/ext/scintilla: gen_scintilla.c Only in cvs/ext/scintilla: gen_scintilla.h