From 85b356da10076bc492251686c28967a13a6bc8a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Wed, 13 Apr 2011 12:48:47 +0100 Subject: [PATCH] Move documentation to inline comments: GtkClipboard --- docs/reference/gtk/tmpl/.gitignore | 1 + docs/reference/gtk/tmpl/gtkclipboard.sgml | 499 ---------------------- gtk/gtkclipboard.c | 90 +++- gtk/gtkclipboard.h | 82 ++++ 4 files changed, 160 insertions(+), 512 deletions(-) delete mode 100644 docs/reference/gtk/tmpl/gtkclipboard.sgml diff --git a/docs/reference/gtk/tmpl/.gitignore b/docs/reference/gtk/tmpl/.gitignore index c00125deae..61ff64e232 100644 --- a/docs/reference/gtk/tmpl/.gitignore +++ b/docs/reference/gtk/tmpl/.gitignore @@ -21,6 +21,7 @@ gtkcellrenderertoggle.sgml gtkcellview.sgml gtkcheckbutton.sgml gtkcheckmenuitem.sgml +gtkclipboard.sgml gtkcolorbutton.sgml gtkcolorsel.sgml gtkcombobox.sgml diff --git a/docs/reference/gtk/tmpl/gtkclipboard.sgml b/docs/reference/gtk/tmpl/gtkclipboard.sgml deleted file mode 100644 index d39782f4e2..0000000000 --- a/docs/reference/gtk/tmpl/gtkclipboard.sgml +++ /dev/null @@ -1,499 +0,0 @@ - -Clipboards - - -Storing data on clipboards - - - - The #GtkClipboard object represents a clipboard of data shared - between different processes or between different widgets in - the same process. Each clipboard is identified by a name encoded as a - #GdkAtom. (Conversion to and from strings can be done with - gdk_atom_intern() and gdk_atom_name().) The default clipboard - corresponds to the "CLIPBOARD" atom; another commonly used clipboard - is the "PRIMARY" clipboard, which, in X, traditionally contains - the currently selected text. - - - To support having a number of different formats on the clipboard - at the same time, the clipboard mechanism allows providing - callbacks instead of the actual data. When you set the contents - of the clipboard, you can either supply the data directly (via - functions like gtk_clipboard_set_text()), or you can supply a - callback to be called at a later time when the data is needed (via - gtk_clipboard_set_with_data() or gtk_clipboard_set_with_owner().) - Providing a callback also avoids having to make copies of the data - when it is not needed. - - - gtk_clipboard_set_with_data() and gtk_clipboard_set_with_owner() - are quite similar; the choice between the two depends mostly on - which is more convenient in a particular situation. - The former is most useful when you want to have a blob of data - with callbacks to convert it into the various data types that you - advertise. When the @clear_func you provided is called, you - simply free the data blob. The latter is more useful when the - contents of clipboard reflect the internal state of a #GObject - (As an example, for the PRIMARY clipboard, when an entry widget - provides the clipboard's contents the contents are simply the - text within the selected region.) If the contents change, the - entry widget can call gtk_clipboard_set_with_owner() to update - the timestamp for clipboard ownership, without having to worry - about @clear_func being called. - - - Requesting the data from the clipboard is essentially - asynchronous. If the contents of the clipboard are provided within - the same process, then a direct function call will be made to - retrieve the data, but if they are provided by another process, - then the data needs to be retrieved from the other process, which - may take some time. To avoid blocking the user interface, the call - to request the selection, gtk_clipboard_request_contents() takes a - callback that will be called when the contents are received (or - when the request fails.) If you don't want to deal with providing - a separate callback, you can also use gtk_clipboard_wait_for_contents(). - What this does is run the GLib main loop recursively waiting for - the contents. This can simplify the code flow, but you still have - to be aware that other callbacks in your program can be called - while this recursive mainloop is running. - - - Along with the functions to get the clipboard contents as an - arbitrary data chunk, there are also functions to retrieve - it as text, gtk_clipboard_request_text() and - gtk_clipboard_wait_for_text(). These functions take care of - determining which formats are advertised by the clipboard - provider, asking for the clipboard in the best available format - and converting the results into the UTF-8 encoding. (The standard - form for representing strings in GTK+.) - - - - - - - -#GtkSelection -#GtkClipboard provides a high-level wrapper around the - lower level routines that deal with X selections. It is - also possibly to directly manipulate the X selections, - though it is seldom necessary to do so. - - - - - - - - - - - - - - - - - - - - - - -@clipboard: the object which received the signal. -@event: - - - - A function to be called when the results of gtk_clipboard_request_contents() - are received, or when the request fails. - - -@clipboard: the #GtkClipboard -@selection_data: a #GtkSelectionData containing the data was received. - If retrieving the data failed, then then length field - of @selection_data will be negative. -@data: the @user_data supplied to gtk_clipboard_request_contents(). - - - - - A function to be called when the results of gtk_clipboard_request_text() - are received, or when the request fails. - - -@clipboard: the #GtkClipboard -@text: the text received, as a UTF-8 encoded string, or %NULL - if retrieving the data failed. -@data: the @user_data supplied to gtk_clipboard_request_text(). - - - - - A function to be called when the results of gtk_clipboard_request_image() - are received, or when the request fails. - - -@clipboard: the #GtkClipboard -@pixbuf: the received image -@data: the @user_data supplied to gtk_clipboard_request_image(). -@Since: 2.6 - - - - - A function to be called when the results of gtk_clipboard_request_targets() - are received, or when the request fails. - - -@clipboard: the #GtkClipboard -@atoms: the supported targets, as array of #GdkAtom, or %NULL - if retrieving the data failed. -@n_atoms: the length of the @atoms array. -@data: the @user_data supplied to gtk_clipboard_request_targets(). -@Since: 2.4 - - - - - - - -@clipboard: -@format: -@text: -@length: -@data: - - - - - - - -@clipboard: -@uris: -@data: - - - - -A function that will be called to provide the contents of the selection. -If multiple types of data were advertised, the requested type can -be determined from the @info parameter or by checking the target field -of @selection_data. If the data could successfully be converted into -then it should be stored into the @selection_data object by -calling gtk_selection_data_set() (or related functions such -as gtk_selection_data_set_text()). If no data is set, the requestor -will be informed that the attempt to get the data failed. - - -@clipboard: the #GtkClipboard -@selection_data: a #GtkSelectionData argument in which the requested - data should be stored. -@info: the info field corresponding to the requested - target from the #GtkTargetEntry array passed to - gtk_clipboard_set_with_data() or gtk_clipboard_set_with_owner(). -@user_data_or_owner: the @user_data argument passed to gtk_clipboard_set_with_data(), or - the @owner argument passed to gtk_clipboard_set_with_owner() - - - - -A function that will be called when the contents of the clipboard are changed -or cleared. Once this has called, the @user_data_or_owner argument -will not be used again. - - -@clipboard: the #GtkClipboard -@user_data_or_owner: the @user_data argument passed to gtk_clipboard_set_with_data(), or - the @owner argument passed to gtk_clipboard_set_with_owner() - - - - - - - -@selection: -@Returns: - - - - - - - -@display: -@selection: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: -@targets: -@n_targets: -@get_func: -@clear_func: -@user_data: -@Returns: - - - - - - - -@clipboard: -@targets: -@n_targets: -@get_func: -@clear_func: -@owner: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: - - - - - - - -@clipboard: -@text: -@len: - - - - - - - -@clipboard: -@pixbuf: - - - - - - - -@clipboard: -@target: -@callback: -@user_data: - - - - - - - -@clipboard: -@callback: -@user_data: - - - - - - - -@clipboard: -@callback: -@user_data: - - - - - - - -@clipboard: -@callback: -@user_data: - - - - - - - -@clipboard: -@buffer: -@callback: -@user_data: - - - - - - - -@clipboard: -@callback: -@user_data: - - - - - - - -@clipboard: -@target: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: -@buffer: -@format: -@length: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: -@buffer: -@Returns: - - - - - - - -@clipboard: -@Returns: - - - - - - - -@clipboard: -@targets: -@n_targets: -@Returns: - - - - - - - - - -@clipboard: -@target: -@Returns: - - - - - - - -@clipboard: -@targets: -@n_targets: - - - - - - - -@clipboard: - - diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c index 5dc09e59e8..7b223ff4ed 100644 --- a/gtk/gtkclipboard.c +++ b/gtk/gtkclipboard.c @@ -42,6 +42,73 @@ #include "win32/gdkwin32.h" #endif + +/** + * SECTION:gtkclipboard + * @Short_description: Storing data on clipboards + * @Title: Clipboards + * @See_also: #GtkSelection + * + * The #GtkClipboard object represents a clipboard of data shared + * between different processes or between different widgets in + * the same process. Each clipboard is identified by a name encoded as a + * #GdkAtom. (Conversion to and from strings can be done with + * gdk_atom_intern() and gdk_atom_name().) The default clipboard + * corresponds to the "CLIPBOARD" atom; another commonly used clipboard + * is the "PRIMARY" clipboard, which, in X, traditionally contains + * the currently selected text. + * + * To support having a number of different formats on the clipboard + * at the same time, the clipboard mechanism allows providing + * callbacks instead of the actual data. When you set the contents + * of the clipboard, you can either supply the data directly (via + * functions like gtk_clipboard_set_text()), or you can supply a + * callback to be called at a later time when the data is needed (via + * gtk_clipboard_set_with_data() or gtk_clipboard_set_with_owner().) + * Providing a callback also avoids having to make copies of the data + * when it is not needed. + * + * gtk_clipboard_set_with_data() and gtk_clipboard_set_with_owner() + * are quite similar; the choice between the two depends mostly on + * which is more convenient in a particular situation. + * The former is most useful when you want to have a blob of data + * with callbacks to convert it into the various data types that you + * advertise. When the @clear_func you provided is called, you + * simply free the data blob. The latter is more useful when the + * contents of clipboard reflect the internal state of a #GObject + * (As an example, for the PRIMARY clipboard, when an entry widget + * provides the clipboard's contents the contents are simply the + * text within the selected region.) If the contents change, the + * entry widget can call gtk_clipboard_set_with_owner() to update + * the timestamp for clipboard ownership, without having to worry + * about @clear_func being called. + * + * Requesting the data from the clipboard is essentially + * asynchronous. If the contents of the clipboard are provided within + * the same process, then a direct function call will be made to + * retrieve the data, but if they are provided by another process, + * then the data needs to be retrieved from the other process, which + * may take some time. To avoid blocking the user interface, the call + * to request the selection, gtk_clipboard_request_contents() takes a + * callback that will be called when the contents are received (or + * when the request fails.) If you don't want to deal with providing + * a separate callback, you can also use gtk_clipboard_wait_for_contents(). + * What this does is run the GLib main loop recursively waiting for + * the contents. This can simplify the code flow, but you still have + * to be aware that other callbacks in your program can be called + * while this recursive mainloop is running. + * + * Along with the functions to get the clipboard contents as an + * arbitrary data chunk, there are also functions to retrieve + * it as text, gtk_clipboard_request_text() and + * gtk_clipboard_wait_for_text(). These functions take care of + * determining which formats are advertised by the clipboard + * provider, asking for the clipboard in the best available format + * and converting the results into the UTF-8 encoding. (The standard + * form for representing strings in GTK+.) + */ + + enum { OWNER_CHANGE, LAST_SIGNAL @@ -180,14 +247,14 @@ gtk_clipboard_class_init (GtkClipboardClass *class) /** * GtkClipboard::owner-change: * @clipboard: the #GtkClipboard on which the signal is emitted - * @event: (type Gdk.EventOwnerChange): the @GdkEventOwnerChange event + * @event: (type Gdk.EventOwnerChange): the @GdkEventOwnerChange event * * The ::owner-change signal is emitted when GTK+ receives an - * event that indicates that the ownership of the selection + * event that indicates that the ownership of the selection * associated with @clipboard has changed. * * Since: 2.6 - */ + */ clipboard_signals[OWNER_CHANGE] = g_signal_new (I_("owner-change"), G_TYPE_FROM_CLASS (gobject_class), @@ -237,7 +304,7 @@ gtk_clipboard_finalize (GObject *object) if (clipboard->notify_signal_id != 0) g_signal_handler_disconnect (clipboard_widget, clipboard->notify_signal_id); - + g_free (clipboard->storable_targets); g_free (clipboard->cached_targets); @@ -261,9 +328,8 @@ clipboard_display_closed (GdkDisplay *display, /** * gtk_clipboard_get_for_display: * @display: the display for which the clipboard is to be retrieved or created - * @selection: a #GdkAtom which identifies the clipboard - * to use. - * + * @selection: a #GdkAtom which identifies the clipboard to use. + * * Returns the clipboard object for the given selection. * Cut/copy/paste menu items and keyboard shortcuts should use * the default clipboard, returned by passing %GDK_SELECTION_CLIPBOARD for @selection. @@ -289,13 +355,11 @@ clipboard_display_closed (GdkDisplay *display, * underscore-prefixed), and namespace it as well. For example, * if your application called "Foo" has a special-purpose * clipboard, you might call it "_FOO_SPECIAL_CLIPBOARD". - * + * * Return value: (transfer none): the appropriate clipboard object. If no - * clipboard already exists, a new one will - * be created. Once a clipboard object has - * been created, it is persistent and, since - * it is owned by GTK+, must not be freed or - * unrefd. + * clipboard already exists, a new one will be created. Once a clipboard + * object has been created, it is persistent and, since it is owned by + * GTK+, must not be freed or unrefd. * * Since: 2.2 **/ diff --git a/gtk/gtkclipboard.h b/gtk/gtkclipboard.h index f0e5514a09..4b2756c6c7 100644 --- a/gtk/gtkclipboard.h +++ b/gtk/gtkclipboard.h @@ -34,23 +34,73 @@ G_BEGIN_DECLS #define GTK_CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CLIPBOARD, GtkClipboard)) #define GTK_IS_CLIPBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CLIPBOARD)) +/** + * GtkClipboardReceivedFunc: + * @clipboard: the #GtkClipboard + * @selection_data: a #GtkSelectionData containing the data was received. + * If retrieving the data failed, then then length field + * of @selection_data will be negative. + * @data: the @user_data supplied to gtk_clipboard_request_contents(). + * + * A function to be called when the results of gtk_clipboard_request_contents() + * are received, or when the request fails. + */ typedef void (* GtkClipboardReceivedFunc) (GtkClipboard *clipboard, GtkSelectionData *selection_data, gpointer data); + +/** + * GtkClipboardTextReceivedFunc: + * @clipboard: the #GtkClipboard + * @text: the text received, as a UTF-8 encoded string, or %NULL + * if retrieving the data failed. + * @data: the @user_data supplied to gtk_clipboard_request_text(). + * + * A function to be called when the results of gtk_clipboard_request_text() + * are received, or when the request fails. + */ typedef void (* GtkClipboardTextReceivedFunc) (GtkClipboard *clipboard, const gchar *text, gpointer data); + typedef void (* GtkClipboardRichTextReceivedFunc) (GtkClipboard *clipboard, GdkAtom format, const guint8 *text, gsize length, gpointer data); + +/** + * GtkClipboardImageReceivedFunc: + * @clipboard: the #GtkClipboard + * @pixbuf: the received image + * @data: the @user_data supplied to gtk_clipboard_request_image(). + * + * A function to be called when the results of gtk_clipboard_request_image() + * are received, or when the request fails. + * + * Since: 2.6 + */ typedef void (* GtkClipboardImageReceivedFunc) (GtkClipboard *clipboard, GdkPixbuf *pixbuf, gpointer data); + typedef void (* GtkClipboardURIReceivedFunc) (GtkClipboard *clipboard, gchar **uris, gpointer data); + +/** + * GtkClipboardTargetsReceivedFunc: + * @clipboard: the #GtkClipboard + * @atoms: the supported targets, as array of #GdkAtom, or %NULL + * if retrieving the data failed. + * @n_atoms: the length of the @atoms array. + * @data: the @user_data supplied to gtk_clipboard_request_targets(). + * + * A function to be called when the results of gtk_clipboard_request_targets() + * are received, or when the request fails. + * + * Since: 2.4 + */ typedef void (* GtkClipboardTargetsReceivedFunc) (GtkClipboard *clipboard, GdkAtom *atoms, gint n_atoms, @@ -60,10 +110,42 @@ typedef void (* GtkClipboardTargetsReceivedFunc) (GtkClipboard *clipboard, * right now for ClearFunc, you may have trouble determining _which_ clipboard * was cleared, if you reuse your ClearFunc for multiple clipboards. */ +/** + * GtkClipboardGetFunc: + * @clipboard: the #GtkClipboard + * @selection_data: a #GtkSelectionData argument in which the requested + * data should be stored. + * @info: the info field corresponding to the requested target from the + * #GtkTargetEntry array passed to gtk_clipboard_set_with_data() or + * gtk_clipboard_set_with_owner(). + * @user_data_or_owner: the @user_data argument passed to + * gtk_clipboard_set_with_data(), or the @owner argument passed to + * gtk_clipboard_set_with_owner() + * + * A function that will be called to provide the contents of the selection. + * If multiple types of data were advertised, the requested type can + * be determined from the @info parameter or by checking the target field + * of @selection_data. If the data could successfully be converted into + * then it should be stored into the @selection_data object by + * calling gtk_selection_data_set() (or related functions such + * as gtk_selection_data_set_text()). If no data is set, the requestor + * will be informed that the attempt to get the data failed. + */ typedef void (* GtkClipboardGetFunc) (GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info, gpointer user_data_or_owner); + +/** + * GtkClipboardClearFunc: + * @clipboard: the #GtkClipboard + * @user_data_or_owner: the @user_data argument passed to gtk_clipboard_set_with_data(), + * or the @owner argument passed to gtk_clipboard_set_with_owner() + * + * A function that will be called when the contents of the clipboard are changed + * or cleared. Once this has called, the @user_data_or_owner argument + * will not be used again. + */ typedef void (* GtkClipboardClearFunc) (GtkClipboard *clipboard, gpointer user_data_or_owner);