com gtk/php-gtk: - Add '#' modifier to 'u' specifier so that the utf8 length can be obtained. - Make GtkTextBuffer::set_text () work. Note that
PHP-GTK version has only one parameter: text itself. - Make Gt kTextView constructor be generated.: ext/gtk+/gtk .overrides
ext/gtk+/gtktextview.overrides main/php_gt k_util.c
| From: | David Soria Parra | Date: | Sat, 01 Oct 2005 18:31:01 +0000 |
| Subject: | com gtk/php-gtk: - Add '#' modifier to 'u' specifier so that the utf8 length can be obtained. - Make GtkTextBuffer::set_text () work. Note that PHP-GTK version has only one parameter: text itself. - Make Gt kTextView constructor be generated.: ext/gtk+/gtk .overrides ext/gtk+/gtktextview.overrides main/php_gt k_util.c |
||
| Groups: | php.gtk.cvs | ||
| Request: | Send a blank email to php-gtk-cvs+get-4797@lists.php.net to get a copy of this message | ||
Commit: 28aa7c2747a16c4c13ec324c17891a29d7f1a50c
Author: Andrei Zmievski <andrei@php.net> Sat, 1 Oct 2005 18:31:01 +0000
Parents: 03c1c7cafdb0a395039aedd33fbf497cf2bbb447
Branches: master
Link: http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=28aa7c2747a16c4c13ec324c17891a29d7f1a50c
Log:
- Add '#' modifier to 'u' specifier so that the utf8 length can be
obtained.
- Make GtkTextBuffer::set_text() work. Note that PHP-GTK version has
only one parameter: text itself.
- Make GtkTextView constructor be generated.
Changed paths:
M ext/gtk+/gtk.overrides
M ext/gtk+/gtktextview.overrides
M main/php_gtk_util.c
Diff:
28aa7c2747a16c4c13ec324c17891a29d7f1a50c
diff --git a/ext/gtk+/gtk.overrides b/ext/gtk+/gtk.overrides
index 20bed6e..bed3858 100644
--- a/ext/gtk+/gtk.overrides
+++ b/ext/gtk+/gtk.overrides
@@ -160,7 +160,6 @@ ignore
gtk_signal_n_emissions_by_name
gtk_signal_query
gtk_signal_set_funcs
- gtk_text_view_new_with_buffer
gtk_tooltips_data_get
gtk_trace_referencing
gtk_type_check_class_cast
@@ -976,7 +975,7 @@ static void php_gtk_menu_position(GtkMenu *menu, int *x, int *y, int *push_in, g
TSRMLS_FETCH();
if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
- php_error(E_WARNING, "unable to call menu position callback '%s' specified
in %s on line %d", callback_name, cbd->src_filename, cbd->src_lineno);
+ php_error(E_WARNING, "unable to call menu position callback '%s' specified
in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
efree(callback_name);
return;
}
diff --git a/ext/gtk+/gtktextview.overrides b/ext/gtk+/gtktextview.overrides
index b1f9f70..e2ab4ee 100644
--- a/ext/gtk+/gtktextview.overrides
+++ b/ext/gtk+/gtktextview.overrides
@@ -1,5 +1,11 @@
/* vim: set ft=cpp fdm=marker et: */
+%% {{{ ignores
+%%
+ignore
+ gtk_text_view_new
+%% }}}
+
%% {{{ GtkTextBuffer
%%
@@ -120,4 +126,30 @@ PHP_METHOD
phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}
+%%
+add-arginfo GtkTextBuffer set_text
+static
+ZEND_BEGIN_ARG_INFO(ARGINFO_NAME, 0)
+ ZEND_ARG_INFO(0, text)
+ ZEND_ARG_INFO(0, length)
+ZEND_END_ARG_INFO();
+
+%%
+override gtk_text_buffer_set_text
+PHP_METHOD
+{
+ char *text;
+ int text_len;
+ zend_bool free_text;
+
+ NOT_STATIC_METHOD();
+
+ if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u#", &text, &text_len,
&free_text))
+ return;
+
+ gtk_text_buffer_set_text(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), text, text_len);
+
+ if (free_text) g_free(text);
+}
+
%% }}}
diff --git a/main/php_gtk_util.c b/main/php_gtk_util.c
index 761f412..20bf787 100644
--- a/main/php_gtk_util.c
+++ b/main/php_gtk_util.c
@@ -205,6 +205,10 @@ static char *parse_arg_impl(zval **arg, va_list *va, char **spec, char *buf,
int
utf8 = phpg_to_utf8(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg), &utf8_len, &free_utf8
TSRMLS_CC);
if (utf8) {
*va_arg(*va, char **) = utf8;
+ if (*spec_walk == '#') {
+ *va_arg(*va, int *) = utf8_len;
+ spec_walk++;
+ }
*va_arg(*va, zend_bool *) = free_utf8;
} else {
return "string in supported encoding";