2000-09-14 16:39:16 +00:00
|
|
|
<!-- ##### SECTION Title ##### -->
|
|
|
|
Clipboards
|
|
|
|
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
|
|
Storing data on Clipboards.
|
|
|
|
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
|
|
<para>
|
|
|
|
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.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
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.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
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.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
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.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
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+.)
|
|
|
|
</para>
|
2000-10-29 08:03:34 +00:00
|
|
|
|
2000-09-14 16:39:16 +00:00
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
|
|
<para>
|
|
|
|
<variablelist>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>#GtkSelection</term>
|
|
|
|
<listitem><para>@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.</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### STRUCT GtkClipboard ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### USER_FUNCTION GtkClipboardReceivedFunc ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
2000-10-29 08:03:34 +00:00
|
|
|
A function to be called when the results of gtk_clipboard_request_text()
|
|
|
|
are received, or when the request fails.
|
2000-09-14 16:39:16 +00:00
|
|
|
</para>
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
@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().
|
2000-09-14 16:39:16 +00:00
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### USER_FUNCTION GtkClipboardTextReceivedFunc ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
2000-10-29 08:03:34 +00:00
|
|
|
A function to be called when the results of gtk_clipboard_request_text()
|
|
|
|
are received, or when the request fails.
|
2000-09-14 16:39:16 +00:00
|
|
|
</para>
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
@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().
|
2000-09-14 16:39:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GtkClipboardGetFunc ##### -->
|
|
|
|
<para>
|
|
|
|
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 succesfully 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_seletion_data_get().) If no data is set, the requestor
|
|
|
|
will be informed that the attempt to get the data failed.
|
|
|
|
</para>
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
@clipboard: the #GtkClipboard
|
|
|
|
@selection_data: a #GtkSelectionData argument in which the requested
|
|
|
|
data should be stored.
|
|
|
|
@info: the info field corresponding to the requested
|
2000-09-14 16:39:16 +00:00
|
|
|
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_owner()
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
|
2000-09-14 16:39:16 +00:00
|
|
|
<!-- ##### USER_FUNCTION GtkClipboardClearFunc ##### -->
|
|
|
|
<para>
|
|
|
|
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.
|
|
|
|
</para>
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
@clipboard: the #GtkClipboard
|
2000-09-14 16:39:16 +00:00
|
|
|
@user_data_or_owner: the @user_data argument passed to gtk_clipboard_set_with_data(), or
|
|
|
|
the @owner argument passed to gtk_clipboard_set_owner()
|
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### FUNCTION gtk_clipboard_get ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@selection:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_clipboard_set_with_data ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@clipboard:
|
2000-10-29 08:03:34 +00:00
|
|
|
@targets:
|
|
|
|
@n_targets:
|
|
|
|
@get_func:
|
|
|
|
@clear_func:
|
|
|
|
@user_data:
|
2000-09-14 16:39:16 +00:00
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### FUNCTION gtk_clipboard_set_with_owner ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@clipboard:
|
2000-10-29 08:03:34 +00:00
|
|
|
@targets:
|
|
|
|
@n_targets:
|
|
|
|
@get_func:
|
|
|
|
@clear_func:
|
|
|
|
@owner:
|
|
|
|
@Returns:
|
2000-09-14 16:39:16 +00:00
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### FUNCTION gtk_clipboard_get_owner ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@clipboard:
|
2000-10-29 08:03:34 +00:00
|
|
|
@Returns:
|
2000-09-14 16:39:16 +00:00
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### FUNCTION gtk_clipboard_clear ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@clipboard:
|
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### FUNCTION gtk_clipboard_set_text ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
2000-10-29 08:03:34 +00:00
|
|
|
|
2000-09-14 16:39:16 +00:00
|
|
|
</para>
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
@clipboard:
|
|
|
|
@text:
|
|
|
|
@len:
|
2000-09-14 16:39:16 +00:00
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### FUNCTION gtk_clipboard_request_contents ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@clipboard:
|
2000-10-29 08:03:34 +00:00
|
|
|
@target:
|
2000-09-14 16:39:16 +00:00
|
|
|
@callback:
|
|
|
|
@user_data:
|
|
|
|
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
<!-- ##### FUNCTION gtk_clipboard_request_text ##### -->
|
2000-09-14 16:39:16 +00:00
|
|
|
<para>
|
2000-10-29 08:03:34 +00:00
|
|
|
|
2000-09-14 16:39:16 +00:00
|
|
|
</para>
|
|
|
|
|
2000-10-29 08:03:34 +00:00
|
|
|
@clipboard:
|
|
|
|
@callback:
|
|
|
|
@user_data:
|
2000-09-14 16:39:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_clipboard_wait_for_contents ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@clipboard:
|
|
|
|
@target:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_clipboard_wait_for_text ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@clipboard:
|
|
|
|
@Returns:
|
|
|
|
<!--
|
|
|
|
Local variables:
|
|
|
|
mode: sgml
|
|
|
|
sgml-parent-document: ("../gtk-docs.sgml" "book" "refsect2" "")
|
|
|
|
End:
|
|
|
|
-->
|
2000-10-29 08:03:34 +00:00
|
|
|
|
|
|
|
|