com gtk/php-gtk: Not really needed I guess. Plus, someone complained that this prevented debugging in Zend Studio.: ext/gtk+/gtktreeview.overrides ext/gtk+/php_gtk+.c

[email protected] (David Soria Parra) Thu, 09 Feb 2006 06:20:40 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    bd69b8f85521797a5a5873c0a33256c7f813c54d
Author:    Andrei Zmievski <[email protected]>         Thu, 9 Feb 2006 06:20:40 +0000
Parents:   27ee21e8b2d7c9045c14b5edc36e4ecbed01a64f
Branches:  master

Link:       http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=bd69b8f85521797a5a5873c0a33256c7f813c54d

Log:
Not really needed I guess. Plus, someone complained that this prevented
debugging in Zend Studio.

Changed paths:
  M  ext/gtk+/gtktreeview.overrides
  M  ext/gtk+/php_gtk+.c


Diff:
bd69b8f85521797a5a5873c0a33256c7f813c54d
diff --git a/ext/gtk+/gtktreeview.overrides b/ext/gtk+/gtktreeview.overrides
index e20cd2a..6c8befa 100644
--- a/ext/gtk+/gtktreeview.overrides
+++ b/ext/gtk+/gtktreeview.overrides
@@ -820,7 +820,7 @@ gboolean phpg_tree_model_foreach_marshal(GtkTreeModel *model,
         return TRUE;
     }
 
-    phpg_gobject_new(&php_model,       (GObject*)model       TSRMLS_CC);
+    phpg_gobject_new(&php_model, (GObject*)model TSRMLS_CC);
     phpg_tree_path_to_zval(path, &php_path TSRMLS_CC);
     phpg_gboxed_new(&php_iter, GTK_TYPE_TREE_ITER, iter, TRUE, TRUE TSRMLS_CC);
 
@@ -867,6 +867,80 @@ PHP_METHOD
     phpg_cb_data_destroy(cb_data);
 }
 
+%%
+override gtk_tree_model_filter_set_visible_func
+
+gboolean phpg_tree_model_filter_visible_marshal(GtkTreeModel *model,
+                                                GtkTreeIter  *iter,
+                                                gpointer      data)
+{
+    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
+    zval *retval = NULL;
+    zval ***args = NULL;
+    int n_args = 0;
+    char *callback_name;
+    zval *php_model = NULL, *php_iter = NULL;
+    gboolean ret;
+    TSRMLS_FETCH();
+
+    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
+        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
+        efree(callback_name);
+        return TRUE;
+    }
+
+    phpg_gobject_new(&php_model, (GObject*)model TSRMLS_CC);
+    phpg_gboxed_new(&php_iter, GTK_TYPE_TREE_ITER, iter, TRUE, TRUE TSRMLS_CC);
+
+    args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
+    args[0] = &php_model;
+    args[1] = &php_iter;
+
+    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);
+
+    zval_ptr_dtor(&php_model);
+    zval_ptr_dtor(&php_iter);
+
+    if (retval) {
+        ret = zend_is_true(retval);
+        zval_ptr_dtor(&retval);
+    } else {
+        ret = FALSE;
+    }
+
+    efree(callback_name);
+    efree(args);
+
+    return ret;
+}
+
+PHP_METHOD
+{
+    zval *callback, *extra;
+    phpg_cb_data_t *cb_data;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &callback)) {
+        return;
+    }
+
+    zval_add_ref(&callback);
+    cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC);
+
+    gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)),
+                                           phpg_tree_model_filter_visible_marshal,
+                                           cb_data, phpg_cb_data_destroy);
+}
+
+%%
+add GtkTreeModelFilter __destruct
+PHP_METHOD
+{
+    NOT_STATIC_METHOD();
+    gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)), NULL, NULL, NULL);
+}
+
 %% }}}
 
 %% {{{ GtkTreeSelection
@@ -1114,7 +1188,6 @@ PHP_METHOD
 
 %% }}}
 
-
 %% {{{ GtkTreeViewColumn
 
 %%
diff --git a/ext/gtk+/php_gtk+.c b/ext/gtk+/php_gtk+.c
index 12ce21c..c74cb27 100644
--- a/ext/gtk+/php_gtk+.c
+++ b/ext/gtk+/php_gtk+.c
@@ -45,14 +45,6 @@ static void init_gtk(void)
 	zend_bool no_argc = 0;
 	TSRMLS_FETCH();
 
-	/* We check request_method to see if we've been called from command line or
-	   Web server. Running GUI apps through a Web module can be dangerous to
-	   your health. */
-	if (SG(request_info).request_method != NULL) {
-		php_error(E_ERROR, "php-gtk: PHP GTK+ support is not available under Web servers");
-		return;
-	}
- 
 	/*
 	 * Grab the argc/argv values from $_SERVER array.
 	 */