[prev in list] [next in list] [prev in thread] [next in thread]
List: php-gtk-cvs
Subject: [php-gtk-cvs] cvs: php-gtk /ext/gtk+ gtkclipboard.overrides
From: "Andrei Zmievski" <andrei () php ! net>
Date: 2006-09-23 19:06:34
Message-ID: cvsandrei1159038394 () cvsserver
[Download RAW message or body]
andrei Sat Sep 23 19:06:34 2006 UTC
Modified files:
/php-gtk/ext/gtk+ gtkclipboard.overrides
Log:
A couple more clipboard methods.
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gtkclipboard.overrides?r1=1.1&r2=1.2&diff_format=u
Index: php-gtk/ext/gtk+/gtkclipboard.overrides
diff -u php-gtk/ext/gtk+/gtkclipboard.overrides:1.1 \
php-gtk/ext/gtk+/gtkclipboard.overrides:1.2
--- php-gtk/ext/gtk+/gtkclipboard.overrides:1.1 Sun Sep 17 20:56:27 2006
+++ php-gtk/ext/gtk+/gtkclipboard.overrides Sat Sep 23 19:06:34 2006
@@ -8,6 +8,78 @@
gtk_clipboard_set_with_owner
%% }}}
+%%
+override gtk_clipboard_request_contents
+
+static void phpg_clipboard_request_contents_marshal(GtkClipboard *clipboard,
+ GtkSelectionData \
*selection_data, + gpointer \
user_data) +{
+ phpg_cb_data_t *cbd = (phpg_cb_data_t *) user_data;
+ zval *retval = NULL;
+ zval ***args = NULL;
+ int n_args = 0;
+ char *callback_name;
+ zval *php_clipboard = NULL;
+ zval *php_sel_data = NULL;
+
+ TSRMLS_FETCH();
+
+ if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
+ php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line \
%ld", callback_name, cbd->src_filename, cbd->src_lineno); + \
efree(callback_name); + return;
+ }
+
+ phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
+ phpg_gboxed_new(&php_sel_data, GTK_TYPE_SELECTION_DATA, selection_data, TRUE, \
TRUE TSRMLS_CC); +
+ args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
+ args[0] = &php_clipboard;
+ args[1] = &php_sel_data;
+
+ call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, \
args, 0, NULL TSRMLS_CC); +
+ zval_ptr_dtor(&php_clipboard);
+ zval_ptr_dtor(&php_sel_data);
+
+ if (retval) {
+ zval_ptr_dtor(&retval);
+ }
+
+ phpg_handle_marshaller_exception(TSRMLS_C);
+
+ efree(callback_name);
+ efree(args);
+ phpg_cb_data_destroy(cbd);
+}
+
+PHP_METHOD
+{
+ zval *php_target, *callback, *extra;
+ phpg_cb_data_t *cbd;
+ GdkAtom target;
+
+ NOT_STATIC_METHOD();
+
+ if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &extra, "VV", &php_target, \
&callback)) + return;
+
+ target = phpg_gdkatom_from_zval(php_target TSRMLS_CC);
+ if (target == NULL) {
+ php_error(E_WARNING, "%s::%s() expects target argument to be a valid GdkAtom \
object", + get_active_class_name(NULL TSRMLS_CC), \
get_active_function_name(TSRMLS_C)); + return;
+ }
+
+ zval_add_ref(&callback);
+ cbd = phpg_cb_data_new(callback, extra TSRMLS_CC);
+
+ gtk_clipboard_request_contents(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), target,
+ phpg_clipboard_request_contents_marshal, cbd);
+ RETURN_TRUE;
+}
+
%% {{{ gtk_clipboard_request_targets
%%
@@ -341,4 +413,29 @@
}
}
+%%
+override gtk_clipboard_set_can_store
+PHP_METHOD
+{
+ zval *php_targets = NULL;
+ GtkTargetEntry *entries;
+ int n;
+
+ NOT_STATIC_METHOD();
+
+ if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a!", &php_targets))
+ return;
+
+ if (php_targets) {
+ entries = phpg_parse_target_entries(php_targets, &n TSRMLS_CC);
+ } else {
+ entries = NULL;
+ n = 0;
+ }
+
+ gtk_clipboard_set_can_store(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), entries, n);
+ efree(entries);
+ RETURN_TRUE;
+}
+
%% }}}
--
PHP-GTK CVS Mailing List (http://gtk.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic