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);
-}
 %% }}}