Re: More Coverage
| From: | Andrei Zmievski | Date: | Mon, 05 Feb 2007 18:22:36 +0000 |
| Subject: | Re: More Coverage | ||
| References: | 1 2 3 | Groups: | php.gtk.dev |
| Request: | Send a blank email to php-gtk-dev+get-3689@lists.php.net to get a copy of this message | ||
Please don't use PHPG_THROW_CONSTRUCT_EXCEPTION() in regular methods. Just output a warning with php_error_docref() and exit the method.
-Andrei
On Feb 5, 2007, at 9:54 AM, Elizabeth Smith wrote:
Anant Narayanan wrote:Hi Elizabeth,After a third! look those two methods should be returning the newly created gtkwidget, so this patch adds that in plus implements GtkToolbar::insert_item and GtkToolbar::insert_stock Index: gtk.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gtk.overrides,v retrieving revision 1.242 diff -u -r1.242 gtk.overrides --- gtk.overrides 5 Feb 2007 16:53:53 -0000 1.242 +++ gtk.overrides 5 Feb 2007 17:43:43 -0000 @@ -4935,7 +4935,6 @@ %% }}} %% {{{ GtkToolbar - %% add-arginfo GtkToolbar append_item static @@ -4959,7 +4958,7 @@Patch for GtkToolbar::append_item() - added the private_tooltip parameter in (append/prepend widget also allow it, seems like the api should match the C version), added GtkToolbar::prepend_item(), added deprecation messages for both methodsYep looks like I left the private tooltip out. Patch looks good, please commit. Thanks! -- Anantchar *callback_name; zval *php_widget = NULL; zend_bool toreturn;- +TSRMLS_FETCH();if (!zend_is_callable(cbd->callback, 0, &callback_name)) {@@ -4998,6 +4997,7 @@phpg_cb_data_t *cb_data; GtkSignalFunc callback; char *text = NULL, *tooltip = NULL, *private_tooltip = NULL; + GObject *wrapped_obj;NOT_STATIC_METHOD();@@ -5018,11 +5018,16 @@phpg_warn_deprecated("use GtkToolbar::insert" TSRMLS_CC);if (Z_TYPE_P(icon) != IS_NULL) - gtk_toolbar_append_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), + wrapped_obj = (GObject *) gtk_toolbar_append_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), text, tooltip, private_tooltip, GTK_WIDGET(PHPG_GOBJECT(icon)), callback, cb_data); - else - gtk_toolbar_append_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), + else + wrapped_obj = (GObject *) gtk_toolbar_append_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), text, tooltip, private_tooltip, NULL, callback, cb_data);++ if (!wrapped_obj) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkWidget);+ }+ phpg_gobject_new(&return_value, wrapped_obj TSRMLS_CC);} %% @@ -5045,6 +5050,7 @@phpg_cb_data_t *cb_data; GtkSignalFunc callback; char *text = NULL, *tooltip = NULL, *private_tooltip = NULL; + GObject *wrapped_obj;NOT_STATIC_METHOD();@@ -5065,11 +5071,120 @@phpg_warn_deprecated("use GtkToolbar::insert" TSRMLS_CC);if (Z_TYPE_P(icon) != IS_NULL) - gtk_toolbar_prepend_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), + wrapped_obj = (GObject *) gtk_toolbar_prepend_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), text, tooltip, private_tooltip, GTK_WIDGET(PHPG_GOBJECT(icon)), callback, cb_data); - else - gtk_toolbar_prepend_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), + else + wrapped_obj = (GObject *) gtk_toolbar_prepend_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), text, tooltip, private_tooltip, NULL, callback, cb_data);++ if (!wrapped_obj) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkWidget);+ }+ phpg_gobject_new(&return_value, wrapped_obj TSRMLS_CC);+} + +%% +add-arginfo GtkToolbar insert_item +static +ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)+ ZEND_ARG_INFO(0, text) + ZEND_ARG_INFO(0, tooltip_text) + ZEND_ARG_INFO(0, tooltip_private_text) + ZEND_ARG_OBJ_INFO(0, icon, GtkWidget, 1) + ZEND_ARG_INFO(0, callback) + ZEND_ARG_INFO(0, position)+ZEND_END_ARG_INFO(); + +%% +override gtk_toolbar_insert_item + +PHP_METHOD +{+ zval *php_callback, *extra, *icon = NULL; + phpg_cb_data_t *cb_data; + GtkSignalFunc callback; + char *text = NULL, *tooltip = NULL, *private_tooltip = NULL; + gint position = 0; + GObject *wrapped_obj;++ NOT_STATIC_METHOD();++ if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 6, &extra, "sssNVi", &text, &tooltip, &private_tooltip, &icon, gtkwidget_ce, &php_callback, &position)) + return;++ if (php_callback) { + if (Z_TYPE_P(php_callback) == IS_NULL) { + cb_data = NULL; + callback = NULL; + } else { + zval_add_ref(&php_callback); + cb_data = phpg_cb_data_new(php_callback, extra TSRMLS_CC); + callback = (GtkSignalFunc)phpg_toolbar_signal_func_marshal; + } + }++ phpg_warn_deprecated("use GtkToolbar::insert" TSRMLS_CC);++ if (Z_TYPE_P(icon) != IS_NULL) + wrapped_obj = (GObject *) gtk_toolbar_insert_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), + text, tooltip, private_tooltip, GTK_WIDGET(PHPG_GOBJECT(icon)), callback, cb_data, position); + else + wrapped_obj = (GObject *) gtk_toolbar_insert_item(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), + text, tooltip, private_tooltip, NULL, callback, cb_data, position);++ if (!wrapped_obj) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkWidget);+ }+ phpg_gobject_new(&return_value, wrapped_obj TSRMLS_CC);+} + +%% +add-arginfo GtkToolbar insert_stock +static +ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)+ ZEND_ARG_INFO(0, stock_id) + ZEND_ARG_INFO(0, tooltip_text) + ZEND_ARG_INFO(0, tooltip_private_text) + ZEND_ARG_INFO(0, callback) + ZEND_ARG_INFO(0, position)+ZEND_END_ARG_INFO(); + +%% +override gtk_toolbar_insert_stock +PHP_METHOD +{+ zval *php_callback, *extra; + phpg_cb_data_t *cb_data; + GtkSignalFunc callback; + char *stock_id = NULL, *tooltip = NULL, *private_tooltip = NULL; + gint position = 0; + GObject *wrapped_obj;++ NOT_STATIC_METHOD();++ if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 5, &extra, "sssVi", &stock_id, &tooltip, &private_tooltip, &php_callback, &position)) + return;++ if (php_callback) { + if (Z_TYPE_P(php_callback) == IS_NULL) { + cb_data = NULL; + callback = NULL; + } else { + zval_add_ref(&php_callback); + cb_data = phpg_cb_data_new(php_callback, extra TSRMLS_CC); + callback = (GtkSignalFunc)phpg_toolbar_signal_func_marshal; + } + }++ phpg_warn_deprecated("use GtkToolbar::insert" TSRMLS_CC);++ wrapped_obj = (GObject *) gtk_toolbar_insert_stock(GTK_TOOLBAR(PHPG_GOBJECT(this_ptr)), + stock_id, tooltip, private_tooltip, callback, cb_data, position);++ if (!wrapped_obj) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkWidget);+ }+ phpg_gobject_new(&return_value, wrapped_obj TSRMLS_CC);} %% -- PHP-GTK Development Mailing List (http://gtk.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php