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. */