com gtk/php-gtk: * GtkComboBox() constructor, GtkIconView constructor. * Move set_cell_data_func() into GtkCellLayout in terface implementation so that all implementing classes get it.: ext/gtk+/gtk.overrides ext/gt k+/gtktreeview.overrides
[email protected] (David Soria Parra) Fri, 17 Mar 2006 05:05:14 +0000
| Newsgroups | php.gtk.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: f764f8a58b30c93f69db706b3e216eebc10221c8 Author: Andrei Zmievski <[email protected]> Fri, 17 Mar 2006 05:05:14 +0000 Parents: 795fb713a4e23ecd8acc1bb3fd7b7091555c6aa9 Branches: master Link: http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=f764f8a58b30c93f69db706b3e216eebc10221c8 Log: * GtkComboBox() constructor, GtkIconView constructor. * Move set_cell_data_func() into GtkCellLayout interface implementation so that all implementing classes get it. Changed paths: M ext/gtk+/gtk.overrides M ext/gtk+/gtktreeview.overrides Diff: f764f8a58b30c93f69db706b3e216eebc10221c8 diff --git a/ext/gtk+/gtk.overrides b/ext/gtk+/gtk.overrides index 04ad57f..c0a7e20 100644 --- a/ext/gtk+/gtk.overrides +++ b/ext/gtk+/gtk.overrides @@ -37,6 +37,7 @@ ignore gtk_button_new_with_label gtk_button_new_with_mnemonic gtk_color_button_new + gtk_combo_box_new_with_model gtk_dialog_new gtk_exit gtk_entry_new_with_max_length @@ -1120,6 +1121,31 @@ PHP_METHOD %% {{{ GtkComboBox %% +override gtk_combo_box_new +PHP_METHOD +{ + GObject *wrapped_obj; + zval *php_model = NULL; + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|N", &php_model, gtktreemodel_ce)) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkButton); + } + + if (php_model && Z_TYPE_P(php_model) != IS_NULL) { + wrapped_obj = (GObject *)g_object_new(phpg_gtype_from_zval(this_ptr), "model", + GTK_TREE_MODEL(PHPG_GOBJECT(php_model)), NULL); + } else { + wrapped_obj = (GObject *)g_object_new(phpg_gtype_from_zval(this_ptr), NULL); + } + + if (!wrapped_obj) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkComboBox); + } + + phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC); +} + +%% override gtk_combo_box_get_active_iter PHP_METHOD { @@ -1726,6 +1752,35 @@ PHP_METHOD } %% }}} +%% {{{ GtkIconView + +%% +override gtk_icon_view_new +PHP_METHOD +{ + GObject *wrapped_obj; + zval *php_model = NULL; + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|N", &php_model, gtktreemodel_ce)) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkButton); + } + + if (php_model && Z_TYPE_P(php_model) != IS_NULL) { + wrapped_obj = (GObject *)g_object_new(phpg_gtype_from_zval(this_ptr), "model", + GTK_TREE_MODEL(PHPG_GOBJECT(php_model)), NULL); + } else { + wrapped_obj = (GObject *)g_object_new(phpg_gtype_from_zval(this_ptr), NULL); + } + + if (!wrapped_obj) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIconView); + } + + phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC); +} + +%% }}} + %% {{{ GtkImageMenuItem %% add-arginfo GtkImageMenuItem __construct diff --git a/ext/gtk+/gtktreeview.overrides b/ext/gtk+/gtktreeview.overrides index cac8c96..39e6999 100644 --- a/ext/gtk+/gtktreeview.overrides +++ b/ext/gtk+/gtktreeview.overrides @@ -43,6 +43,7 @@ ignore gtk_tree_view_new gtk_tree_view_column_new gtk_tree_view_column_set_attributes + gtk_tree_view_column_set_cell_data_func %% }}} %% {{{ GtkCellLayout @@ -103,6 +104,39 @@ PHP_METHOD } efree(args); } + +%% +add-arginfo GtkCellLayout set_cell_data_func +static +ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0) + ZEND_ARG_OBJ_INFO(0, cellrenderer, GtkCellRenderer, 1) + ZEND_ARG_INFO(0, callback) +ZEND_END_ARG_INFO(); + +%% +override gtk_cell_layout_set_cell_data_func +PHP_METHOD +{ + zval *php_cell; + GtkCellRenderer *cell; + GtkCellLayout *layout = NULL; + zval *callback, *extra; + phpg_cb_data_t *cb_data; + + NOT_STATIC_METHOD(); + + if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &extra, "OV", &php_cell, gtkcellrenderer_ce, &callback)) + return; + + layout = GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr)); + cell = GTK_CELL_RENDERER(PHPG_GOBJECT(php_cell)); + + zval_add_ref(&callback); + cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC); + + gtk_cell_layout_set_cell_data_func(layout, cell, (GtkTreeCellDataFunc)phpg_cell_data_func_marshal, + cb_data, phpg_cb_data_destroy); +} %% }}} %% {{{ GtkCellRenderer @@ -1540,35 +1574,4 @@ PHP_METHOD } -%% -add-arginfo GtkTreeViewColumn set_cell_data_func -static -ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0) - ZEND_ARG_OBJ_INFO(0, cellrenderer, GtkCellRenderer, 1) - ZEND_ARG_INFO(0, callback) -ZEND_END_ARG_INFO(); - -%% -override gtk_tree_view_column_set_cell_data_func -PHP_METHOD -{ - zval *php_cell; - GtkCellRenderer *cell; - zval *callback, *extra; - phpg_cb_data_t *cb_data; - - NOT_STATIC_METHOD(); - - if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &extra, "OV", &php_cell, gtkcellrenderer_ce, &callback)) - return; - - cell = GTK_CELL_RENDERER(PHPG_GOBJECT(php_cell)); - - zval_add_ref(&callback); - cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC); - - gtk_tree_view_column_set_cell_data_func(GTK_TREE_VIEW_COLUMN(PHPG_GOBJECT(this_ptr)), cell, - (GtkTreeCellDataFunc)phpg_cell_data_func_marshal, - cb_data, phpg_cb_data_destroy); -} %% }}}