com gtk/php-gtk: GtkFileChooser: - get_filename([convert ]) - get_filenames([convert]) - get_uri s: ext/gtk+/gtk.overrides
[email protected] (David Soria Parra) Tue, 14 Mar 2006 08:57:52 +0000
| Newsgroups | php.gtk.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: 059b9cd4c8c6c1b0654de2c798c453fcd918905b Author: Christian Weiske <[email protected]> Tue, 14 Mar 2006 08:57:52 +0000 Parents: f617d6d3312b9f01be6012363a8e9bc08cfb96d7 Branches: master Link: http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=059b9cd4c8c6c1b0654de2c798c453fcd918905b Log: GtkFileChooser: - get_filename([convert]) - get_filenames([convert]) - get_uris Changed paths: M ext/gtk+/gtk.overrides Diff: 059b9cd4c8c6c1b0654de2c798c453fcd918905b diff --git a/ext/gtk+/gtk.overrides b/ext/gtk+/gtk.overrides index 47c6b9a..d2eee06 100644 --- a/ext/gtk+/gtk.overrides +++ b/ext/gtk+/gtk.overrides @@ -1384,6 +1384,117 @@ PHP_METHOD %% }}} +%% {{{ GtkFileChooser + +%% +add-arginfo GtkFileChooser get_filename +static +ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME, 0, 0, 0) + ZEND_ARG_INFO(0, convert) +ZEND_END_ARG_INFO(); + +%% +override gtk_file_chooser_get_filename +PHP_METHOD +{ + gchar *php_retval, *cp_ret, *fn; + gsize cp_len; + zend_bool free_result; + zend_bool convert = 1; + + NOT_STATIC_METHOD(); + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|b", &convert)) + return; + + php_retval = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr))); + if (php_retval) { + if (convert) { + fn = g_filename_to_utf8(php_retval, strlen(php_retval), NULL, NULL, NULL); + cp_ret = phpg_from_utf8(fn, strlen(fn), &cp_len, &free_result TSRMLS_CC); + if (cp_ret) { + RETVAL_STRINGL((char *)cp_ret, cp_len, 1); + } else { + php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); + } + } else { + RETVAL_STRINGL((char *)php_retval, strlen(php_retval), 1); + } + g_free(php_retval); + if (free_result) + g_free(cp_ret); + } else { + RETVAL_NULL(); + } +} + + +%% +add-arginfo GtkFileChooser get_filenames +static +ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME, 0, 0, 0) + ZEND_ARG_INFO(0, convert) +ZEND_END_ARG_INFO(); + +%% +override gtk_file_chooser_get_filenames +PHP_METHOD +{ + GSList *files; + gchar *cp = NULL; + gchar *fn = NULL; + gsize cp_len = 0; + zend_bool free_cp = FALSE; + zend_bool convert = 1; + + NOT_STATIC_METHOD(); + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|b", &convert)) + return; + + array_init(return_value); + for (files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr))); files; files = files->next) { + if (convert) { + if (files->data) { + fn = g_filename_to_utf8(files->data, strlen(files->data), NULL, NULL, NULL); + cp = phpg_from_utf8(fn, strlen(fn), &cp_len, &free_cp TSRMLS_CC); + if (cp) { + add_next_index_string(return_value, (char *)cp, 1); + } else { + php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); + } + if (free_cp) + g_free(cp); + } + } else { + add_next_index_string(return_value, (char *)files->data, 1); + } + g_free(files->data); + } + g_slist_free(files); +} + +%% +override gtk_file_chooser_get_uris +PHP_METHOD +{ + GSList *files; + + NOT_STATIC_METHOD(); + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) + return; + + array_init(return_value); + for (files = gtk_file_chooser_get_uris(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr))); files; files = files->next) { + add_next_index_string(return_value, (char *) files->data, 1); + g_free(files->data); + } + g_slist_free(files); +} + +%% }}} + %% {{{ GtkFileChooserDialog %%