com gtk/php-gtk: Committing GtkContainer::get_focus_cha in GtkContainer::set_focus_chain GtkWindow::get _icon_list GtkWindow::set_icon_list GtkWindow ::get_default_icon_list GtkWindow::set_defaul t_icon_list GtkIconTheme::list_icons after appl ying Andrei's suggestions.: ext/gtk+/gtk.defs e xt/gtk+/gtk.overrides ext/gtk+/gtkcontainer.overrides

[email protected] (David Soria Parra)
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    203e28d382564cbb07e9bd9660f212aad0868fa7
Author:    Christian Weiske <[email protected]>         Fri, 9 Jun 2006 17:44:02 +0000
Parents:   6c73d102b5f4799969290c809b16f09b2360fbd6
Branches:  master

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

Log:
Committing
GtkContainer::get_focus_chain
GtkContainer::set_focus_chain
GtkWindow::get_icon_list
GtkWindow::set_icon_list
GtkWindow::get_default_icon_list
GtkWindow::set_default_icon_list
GtkIconTheme::list_icons
after applying Andrei's suggestions.

Changed paths:
  M  ext/gtk+/gtk.defs
  M  ext/gtk+/gtk.overrides
  M  ext/gtk+/gtkcontainer.overrides
diff_203e28d382564cbb07e9bd9660f212aad0868fa7.txt (text/plain, 8 KB)
203e28d382564cbb07e9bd9660f212aad0868fa7
diff --git a/ext/gtk+/gtk.defs b/ext/gtk+/gtk.defs
index 8c98c57..756d0fd 100644
--- a/ext/gtk+/gtk.defs
+++ b/ext/gtk+/gtk.defs
@@ -21270,9 +21270,11 @@
   (return-type "gboolean")
 )
 
-(define-function window_get_default_icon_list
+(define-method get_default_icon_list
+  (of-object "GtkWindow")
   (c-name "gtk_window_get_default_icon_list")
   (return-type "GList*")
+  (static #t)
 )
 
 (define-method get_default_size
@@ -21637,29 +21639,35 @@
   (static #t)
 )
 
-(define-function window_set_default_icon_from_file
+(define-method set_default_icon_from_file
+  (of-object "GtkWindow")
   (c-name "gtk_window_set_default_icon_from_file")
   (return-type "none")
   (parameters
     '("const-gchar*" "filename")
     '("GError**" "error")
   )
+  (static #t)
 )
 
-(define-function window_set_default_icon_list
+(define-method set_default_icon_list
+  (of-object "GtkWindow")
   (c-name "gtk_window_set_default_icon_list")
   (return-type "none")
   (parameters
     '("GList*" "list")
   )
+  (static #t)
 )
 
-(define-function window_set_default_icon_name
+(define-method set_default_icon_name
+  (of-object "GtkWindow")
   (c-name "gtk_window_set_default_icon_name")
   (return-type "none")
   (parameters
     '("const-gchar*" "name")
   )
+  (static #t)
 )
 
 (define-method set_default_size
diff --git a/ext/gtk+/gtk.overrides b/ext/gtk+/gtk.overrides
index 8888547..0eea9df 100644
--- a/ext/gtk+/gtk.overrides
+++ b/ext/gtk+/gtk.overrides
@@ -2094,6 +2094,35 @@ PHP_METHOD
 }
 %% }}}
 
+%% {{{ GtkIconTheme
+
+%%
+override gtk_icon_theme_list_icons
+PHP_METHOD
+{
+    GList *icons, *item;
+    gchar *context = NULL;
+    zend_bool free_context = FALSE;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|u", &context, &free_context))
+        return;
+
+    icons = gtk_icon_theme_list_icons(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), context);
+
+    array_init(return_value);
+    for (item = icons; item; item = item->next) {
+          add_next_index_string(return_value, item->data, 1);
+          g_free(item->data);
+    }
+    g_list_free(icons);
+
+    if (free_context) g_free(context);
+}
+
+%% }}}
+
 %% {{{ GtkIconView
 
 %%
@@ -3546,6 +3575,26 @@ PHP_METHOD
 }
 
 %%
+override gtk_window_get_default_icon_list
+PHP_METHOD
+{
+    GList *icons, *item;
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    icons = gtk_window_get_default_icon_list();
+
+    array_init(return_value);
+    for (item = icons; item; item = item->next) {
+        zval *php_icon = NULL;
+        phpg_gobject_new(&php_icon, G_OBJECT(item->data) TSRMLS_CC);
+        add_next_index_zval(return_value, php_icon);
+    }
+    g_list_free(icons);
+}
+
+%%
 override gtk_window_get_default_size
 PHP_METHOD
 {
@@ -3578,6 +3627,28 @@ PHP_METHOD
 }
 
 %%
+override gtk_window_get_icon_list
+PHP_METHOD
+{
+    GList *icons, *item;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+    icons = gtk_window_get_icon_list(GTK_WINDOW(PHPG_GOBJECT(this_ptr)));
+
+    array_init(return_value);
+    for (item = icons; item; item = item->next) {
+        zval *php_icon = NULL;
+        phpg_gobject_new(&php_icon, G_OBJECT(item->data) TSRMLS_CC);
+        add_next_index_zval(return_value, php_icon);
+    }
+    g_list_free(icons);
+}
+
+%%
 override gtk_window_get_size
 PHP_METHOD
 {
@@ -3592,6 +3663,86 @@ PHP_METHOD
     php_gtk_build_value(&return_value, "(ii)", width, height);
 
 }
+
+%%
+add-arginfo GtkWindow set_default_icon_list
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_INFO(0, pixbufs)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_window_set_default_icon_list
+PHP_METHOD
+{
+    zval *php_icons, **php_item;
+    GList *icons = NULL;
+    int n, size;
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &php_icons)) {
+        return;
+    }
+
+    for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_icons)), n = 0;
+        zend_hash_get_current_data(Z_ARRVAL_P(php_icons), (void **)&php_item) == SUCCESS;
+        zend_hash_move_forward(Z_ARRVAL_P(php_icons)), n++) {
+
+        if (php_gtk_check_class(*php_item, gdkpixbuf_ce)) {
+            GdkPixbuf *pixbuf = GDK_PIXBUF(PHPG_GOBJECT(*php_item));
+            //prepend is faster than append
+            icons = g_list_prepend(icons, pixbuf);
+        } else {
+            php_error(E_WARNING, "%s::%s() requires the array elements to be objects of class GdkPixbuf", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
+        }
+    }
+
+    icons = g_list_reverse(icons);
+    size = g_list_length(icons);
+    gtk_window_set_default_icon_list(icons);
+
+    g_list_free(icons);
+}
+
+%%
+add-arginfo GtkWindow set_icon_list
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_INFO(0, pixbufs)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_window_set_icon_list
+PHP_METHOD
+{
+    zval *php_icons, **php_item;
+    GList *icons = NULL;
+    int n, size;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &php_icons)) {
+        return;
+    }
+
+    for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_icons)), n = 0;
+        zend_hash_get_current_data(Z_ARRVAL_P(php_icons), (void **)&php_item) == SUCCESS;
+        zend_hash_move_forward(Z_ARRVAL_P(php_icons)), n++) {
+
+        if (php_gtk_check_class(*php_item, gdkpixbuf_ce)) {
+            GdkPixbuf *pixbuf = GDK_PIXBUF(PHPG_GOBJECT(*php_item));
+            icons = g_list_prepend(icons, pixbuf);
+        } else {
+            php_error(E_WARNING, "%s::%s() requires the array elements to be objects of class GdkPixbuf", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
+        }
+    }
+
+    icons = g_list_reverse(icons);
+    size = g_list_length(icons);
+    gtk_window_set_icon_list(GTK_WINDOW(PHPG_GOBJECT(this_ptr)), icons);
+
+    g_list_free(icons);
+}
+
 %% }}}
 
 %% include gtkcontainer.overrides
diff --git a/ext/gtk+/gtkcontainer.overrides b/ext/gtk+/gtkcontainer.overrides
index 5955b99..3757c1a 100644
--- a/ext/gtk+/gtkcontainer.overrides
+++ b/ext/gtk+/gtkcontainer.overrides
@@ -10,6 +10,70 @@ ignore
 	gtk_container_foreach_full
 
 %%
+override gtk_container_get_focus_chain
+PHP_METHOD
+{
+    GList *widgets, *widget;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
+        return;
+
+   if (!gtk_container_get_focus_chain(GTK_CONTAINER(PHPG_GOBJECT(this_ptr)), &widgets)) {
+        RETURN_FALSE;
+    }
+
+    array_init(return_value);
+    for (widget = widgets; widget; widget = widget->next) {
+        zval *php_widget = NULL;
+        phpg_gobject_new(&php_widget, G_OBJECT(widget->data) TSRMLS_CC);
+        add_next_index_zval(return_value, php_widget);
+    }
+    g_list_free(widgets);
+}
+
+%%
+add-arginfo GtkContainer set_focus_chain
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+    ZEND_ARG_INFO(0, widgets)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_container_set_focus_chain
+PHP_METHOD
+{
+    zval *php_widgets, **php_widget;
+    GList *widgets= NULL;
+    int n;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &php_widgets)) {
+        return;
+    }
+
+    for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_widgets)), n = 0;
+        zend_hash_get_current_data(Z_ARRVAL_P(php_widgets), (void **)&php_widget) == SUCCESS;
+        zend_hash_move_forward(Z_ARRVAL_P(php_widgets)), n++) {
+
+        if (php_gtk_check_class(*php_widget, gtkwidget_ce)) {
+            GtkWidget *widget = GTK_WIDGET(PHPG_GOBJECT(*php_widget));
+            //prepend is faster than append
+            widgets = g_list_prepend(widgets, widget);
+        } else {
+            php_error(E_WARNING, "%s::%s() requires the focus chain elements to be objects of class GtkWidget", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
+        }
+    }
+
+    widgets = g_list_reverse(widgets);
+    gtk_container_set_focus_chain(GTK_CONTAINER(PHPG_GOBJECT(this_ptr)), widgets);
+
+    g_list_free(widgets);
+}
+
+%%
 override gtk_container_get_children
 PHP_METHOD
 {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.