Re: More Coverage

From: 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,
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 methods
Yep looks like I left the private tooltip out. Patch looks good, please commit. Thanks! -- Anant
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 @@
     char *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


« previous php.gtk.dev (#3689) next »