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
{