Description
L'objet GtkClipboard
représente un presse-papier de données
partagées
entre les différents processus ou entre les
différents
widgets dans un processus.Chaque presse-papier est identifié
par
un nom encodé comme un
GdkAtom. (La conversion
vers et depuis les chaînes peut se faire avec
gdk_atom_intern()
et
gdk_atom_name()
.)
Le presse-papier par défaut correspond à l'atome
(identifiant) "CLIPBOARD"; un autre presse-papier
communément
utilisé est le presse-papier "PRIMARY" ,
lequel, dans
X, contient traditionnellement le texte
sélectionné
en cours.
Le support ayant un nombre de formats différents
dans le
presse-papier au même moment, le mécanisme du
presse-papier permets de fournir des
callbacks à la place des données actuelles. Quand
vous
définissez le contenu d'un presse-papier, vous pouvez soit
envoyer les données directement (via
des fonctions comme gtk_clipboard_set_text()
),
ou vous pouvez fournir un
callback qui sera ppelé plus tard quand les
données seront nécessaires (via
gtk_clipboard_set_with_data()
ou gtk_clipboard_set_with_owner()
.)
Fournir un callback permet aussi d'éviter d'avoir
à faire des copies de données quand on en a
besoin.
gtk_clipboard_set_with_data()
et gtk_clipboard_set_with_owner()
sont
presque semblables; le choix entre les deux dépend de
la
commodité dans certaines situations
particulières. La
première fonction est plus utile quand vous voulez avoir un
groupe de données avec des callbacks pour les
convertir en
différents types variés de données que
vous
annoncez. Quand la clear_func
que vous fournissez est appelée, vous libérez
simplement
le groupe de données. La deuxième fonction est
plus utile
quand le contenu du presse-papier reflète l'état
interne
de GObject
(Comme par exemple, pour le presse-papier PRIMARY , quand un
widget d'entrée apporte un contenu de presse-papier, ce
contenu
est un texte à l'intérieur d'un
région
sélectionnée). Si le contenu change, le widget
d'entrée peut appeler gtk_clipboard_set_with_owner()
pour
mettre à jour le timestamp de la
propriété du
presse-papier, sans avoir à se soucier d'appeler clear_func
.
Prendre les données du presse-papier est
essentiellement
asynchrone. Si le contenu du presse-papier est fourni à
l'interieur du même processus, alors un appel direct
de
fonction sera fait pour rechercher les données,
mais s' il
est fourni par un autre processus , alors les données
nécessitent d'être recherchées depuis
l'autre
processus, ce qui peut prendre du temps. Pour éviter de
bloquer
l'interface utilisateur, l'appel de la sélection, gtk_clipboard_request_contents()
utilise un
callback qui sera appelé quand le contenu sera
reçu (ou
quand la demande échouera.) Si vous ne voulez pas
apporter
et utiliser un callback séparé vous pouvez aussi
utiliser
gtk_clipboard_wait_for_contents()
.
Ce qui provoque l'exécution de la boucle principale de GLib
récursivement pour attendre le contenu.
Cela peut
simplifier le code, mais vous devez savoir que
d'autre
callbacks dans votre programme peuvent être
appélées pendant que cette boucle principale
récursive tourne.
A côté des fonctions qui
reçoivent le contenu du
presse-papier comme de gros morceaux aléatoires de
données, il y a aussi des fonctions qui le
reçoivent en
tant que texte, gtk_clipboard_request_text()
et
gtk_clipboard_wait_for_text()
.
Ces fonctions prennent en compte les formats qui sont
annoncés par le fournisseur d'accès du
presse-papier, demandant le presse-papier dans le meilleur format
disponible et convertissant le résultat dans l'encodage
UTF-8.(La forme standard représentant les chaînes
dans
GTK+).
Details
GtkClipboard
typedef struct _GtkClipboard GtkClipboard;
|
GtkClipboardTextReceivedFunc
()
Fonction à appeler à la réception des
résultats de
gtk_clipboard_request_text()
,
ou quand la requête échoue.
GtkClipboardImageReceivedFunc
()
Fonction à appeler à la réception des
résultats de
gtk_clipboard_request_image()
,
ou quand la requêteéchoue.
Depuis 2.6
GtkClipboardTargetsReceivedFunc
()
Fonction àappeler à la
réception des résultats de gtk_clipboard_request_targets()
, ou quand la requête échoue.
Depuis 2.4
GtkClipboardRichTextReceivedFunc
()
clipboard : |
|
format : |
|
text : |
|
length : |
|
data : |
|
GtkClipboardGetFunc
()
Fonction qui sera appelée pour fournir le contenu de la
sélection. Si des types multiples de données sont
annoncés, le type demandé peut être
déterminé à partir du
paramètre
info
ou en contrôlant le champ cible de
selection_data
.
Si les données peuvent être convertie avec
succès alors elles devraient être
placées
dans l'objet
selection_data
en appelant
gtk_selection_data_set()
(ou les fonctions apparentées comme
gtk_selection_data_set_text()
).
S'il n'y a pas de données définies, celui qui a
fait la
requête sera informé que sa tentative
d'obtenir des
données a échoué.
GtkClipboardClearFunc
()
Fonction appelée quand le contenu du presse-papier a
changé ou a été effacé. Une
fois cette
fonction appelée, l'argument
user_data_or_owner
ne sera plus réutilisé.
gtk_clipboard_get
()
Retourbe l'objet presse-papier pour la sélection
donnée. Voir
gtk_clipboard_get_for_display()
pour plus de détails.
selection : |
un GdkAtom qui identifie le
presse-papier utilisé. |
Retourne : |
L'objet presse-papier approprié .
Si aucun
presse-papier n'existe, un nouveau sera créé. Une
fois
que l'objet presse-papier est créé, il est
persistant et,
tant qu'il appartient à GTK+, il ne doit pas être
libéréou
déréférencé. |
gtk_clipboard_get_for_display
()
Retourne l'objet presse-papier pour la sélection
donnée. Les items de menu couper/copier/Coller et les
raccourcis
clavier doivent utiliser le presse-papier par défaut,
retourné en passant GDK_SELECTION_CLIPBOARD
dans selection
.
(GDK_NONE
est
supporté comme synonyme de GDK_SELECTION_CLIPBOARD
pour des raisons de compatibilité backwards.)
L'objet ou le texte de sélection courante doivent
être passés dans l'identifiant du presse-papier
par GDK_SELECTION_PRIMARY.
Les items de menu couper /copier/ coller conceptuellement
copient le contenu du presse-papier GDK_SELECTION_PRIMARY
dans le presse papier par défaut c'est à dire
qu'ils
copient la sélection de ce que l'utilisateur voit comme le
presse-papier. (?)
(Passer GDK_NONE revient au
même que d'utiliser gdk_atom_intern
("CLIPBOARD", FALSE)
. Voir
http://www.freedesktop.org/Standards/clipboards-spec pour
avoir plus d'information au sujet des sélections
"CLIPBOARD" vs. "PRIMARY" sous le système X
window.
Sur Win32 le presse-papier
GDK_SELECTION_PRIMARY
est essenciellement ignoré.)
Il est possible d'avoir un nom de presse-papier arbitraire; si
vous
créez un nouveau presse-papier, vous devrez ajouter un
préfixe au nom de la sélection avec
un underscore (parce que l' ICCCM ( Manuel
Inter-Client Communication Conventions) demande
que les atomes non standards aient un underscore en
préfixe), et
appelez le comme vous le désirez. Par exemple, si votre
application nommée "Foo" a un presse-papier pour
un but
particulier, vous pouvez l'appeler
"_FOO_PRESSE_PAPIER_SPECIAL".
display : |
L'affichage pour lequel le presse-papier doit
être recherché ou créé. |
selection : |
Un GdkAtom qui
identifie le presse-papier à utiliser. |
Retourne : |
L'objet presse-papier approprié. Si aucun
presse-papier n'existe, un nouveau presse-papier est
créé. Un fois que le presse-papier a
été
créé, il est persistant, tant qu'il appartient
à
GTK+, il ne doit pas être libéré ou
déréférencé. |
Depuis 2.2
gtk_clipboard_get_display
()
Pour obtenir le GdkDisplay
associé à clipboard
Depuis 2.2
gtk_clipboard_set_with_data
()
Virtuellement définit le contenu d'un presse-papier
spécifique en fournissant une liste de formats
supportés
pour les données du presse-papier et une fonction
à
appeler pour obtenir les données actuelles quand elles sont
demandées.
clipboard : |
Un GtkClipboard |
targets : |
Tableau contenant les informations concernant les
formes disponibles pour les données du presse-papier. |
n_targets : |
Nombre d'éléments dans targets
|
get_func : |
Fonction à appeler pour obtenir les
données actuelles du presse-papier. |
clear_func : |
Quand le contenu du presse-papier est
redéfinit, cette fonction sera appelée,
et get_func
ne sera pas appelée plus tard. |
user_data : |
Données utilisateyr à passer
à get_func
et clear_func .
|
Returns : |
TRUE
si la définition des données du presse-papier
réussit. Si la définition des données
du
presse-papier échoue la fonction callback fournie
sera
ignorée. |
gtk_clipboard_set_with_owner
()
Virtuellement définit le contenu d'un presse-papier
spécifique en
fournissant une liste de formats supportés pour les
données du
presse-papier et une fonction à appeler pour obtenir les
données
actuelles quand elles sont demandées.
La différence entre cette fonction et gtk_clipboard_set_with_data()
est qu'à la place du pointeur sur user_data
,
un GObject est
passé.
clipboard : |
Un GtkClipboard |
targets : |
Tableau contenant les informations concernant les
formes disponibles pour les données du presse-papier. |
n_targets : |
Nombre d'éléments dans targets |
get_func : |
Fonction à appeler pour obtenir les
données actuelles du presse-papier. |
clear_func : |
Quand le contenu du presse-papier est
redéfinit, cette fonction sera appelée,
et get_func
ne sera pas appelée plus tard. |
owner : |
Un objet qui est propriétaire des
données.
Cette objet sera passé à la fonction callbacks
quand elle
est appelée. |
Returns : |
TRUE si la
définition des données du presse-papier
réussit. Si la définition
des données du presse-papier échoue la fonction
callback fournie sera
ignorée. |
gtk_clipboard_clear
()
Efface le contenu du presse-papier.
Générallement elle
peut être appelée seulement entre le moment
où vous
appelez gtk_clipboard_set_with_owner()
ou gtk_clipboard_set_with_data()
,
et le moment où clear_func
que vous avez fournit est appelée. Autrement, le
prese-papier peut appartenir à quelqu'un d'autre.
gtk_clipboard_set_text
()
Définit le contenu du presse-papier à
une chaîne
UTF-8 donnée. GTK+ fera une copie du texte et se chargera de
la
réponse aux demandes concernant le texte et la
convertion
du texte au format demandé.
clipboard : |
Un objet GtkClipboard |
text : |
Une chaîne UTF-8 . |
len : |
Taille de text ,
en bytes, ou -1, dans ce cas la taille sera
déterminée par strlen() .
|
gtk_clipboard_set_image
()
Définit le contenu du presse-papier pour un
GdkPixbuf
donné.
GTK+se chargera de la réponse aux demandes concernant
l'image, et la convertion du texte au
format
demandé.
Depuis 2.6
gtk_clipboard_request_contents
()
Demande le contenu du presse-papier comme cible
donnée. Quand
les résultats de la réponse sont reçus
plus tard
la fonction callback fournie sera appelée.
clipboard : |
Un GtkClipboard |
target : |
Un atome représentant la forme dans laquelle
le propriétaire du presse-papier doit convertir la
sélection. |
callback : |
Une fonction à appeler quand les
résultats
eont reçus (ou la récupération
échoue). Si
la récupération échoue le champs de la
taille
de selection_data
sera négatif. |
user_data : |
Données utilisateur à passer
à callback
|
gtk_clipboard_request_text
()
Demande le contenu du presse-papier en tant que
texte. Quand
le texte est reçu plus tard, il sera converti en UTF-8 si
nécessaire, et callback
sera appelée.
Le paramètre text
du callback
contiendra le texte résultant si le requête
réussit, ou NULL
si elle échoue.
Cela peut arriver pour des raison variée, en particulier si
le
presse-papier était vide ou si le contenu du presse-papier
ne
peut pas être converti dans la forme du texte.
clipboard : |
Un GtkClipboard |
callback : |
Une fonction à appeler quand le texte est
reçu, ou si la récupération
échoue. (elle
est toujours appelée d'une façon ou d'une aute). |
user_data : |
Données utilisateur à passer
à callback .
|
gtk_clipboard_request_image
()
Demande le contenu du presse-papier en tant qu'image. Quand
l'image est reçue plus tard, elle sera convertie
en GdkPixbuf, et
callback
sera appelée.
Le paramètre pixbuf
de callback
contiendra le GdkPixbuf
résultant si la requête
réussit, ou NULL
si
elle échoue. Cela peut arriver pour des raison
variées,
en particulier si le presse-papier était vide ou si le
contenu
du presse-papier ne peut pas être convertit en image.
clipboard : |
Un GtkClipboard |
callback : |
Une fonction appelée quand l'image est
reçue, ou si la récupération
échoue. (Elle
sera toujours appelée d'une façon ou d'une
autre). |
user_data : |
Données utilisateur à passer
à callback .
|
Depuis 2.6
gtk_clipboard_request_targets
()
Demande le contenu du presse-papier en tant que liste de
cibles supportées. Quand la liste est reçue plus
tard, callback
sera appelée.
Le paramètre targets
de callback
contiendra les cibles résultantes si la requête
réussit, ou NULL
si
elle échoue.
clipboard : |
Un GtkClipboard |
callback : |
Une fonction à appeler quand les cibles sont
reçues, ou quand la récupération
échoue.
(Elle sera toujours appelée d'une façon
ou
l'autre). |
user_data : |
Données utilisateur à passer
à callback .
|
Depuis 2.4
gtk_clipboard_request_rich_text
()
Demande le contenu du presse-papier en tant que
texte au format rich text. Quand le rich
text est reçu plus tard, callback
wsera appelée.
Le paramètre text
de callback
contiendra le rich text résultant si la requête
réussit, ou NULL
si elle
échoue. Le paramètre length
contiendra la taille de
text
.
Cette fonction peut échouer pour différentes
raison, en
particulier si le presse-papier est vide ou si le contenu du
presse-papier ne peut pas être converti au format rich text.
clipboard : |
Un GtkClipboard |
buffer : |
Un GtkTextBuffer
|
callback : |
Une fonction à appeler quand le texte est
reçu, ou quand la réupération
échoue. (Elle
sera appelée d'une façon ou d'une autre). |
user_data : |
Données utilisateur à passer
à callback .
|
Depuis 2.10
gtk_clipboard_wait_for_contents
()
Demande le contenu du presse-paspier en tant que cible
donnée.
Cette fonction attend que les données soient
reçues en
utilisant une boucle principale, aussi les
événements, le
timeouts, etc, peuvent être distribués pendant
l'attente.
clipboard : |
Un GtkClipboard |
target : |
Un atome représentant la forme dans laquelle
le propriétaire du presse-papier doit convertir la
sélection. |
Retourne : |
Un objet GtkSelectionData
nouvellement alloué ou NULL
si la récupération pour la cible
donnée échoue. Si elle n'est pas NULL , cette valeur
doit être libérée avec gtk_selection_data_free()
quand vous avez terminé avec elle. |
gtk_clipboard_wait_for_text
()
Demande le contenu du presse-papier en tant que texte et
convertit
le résultat au format UTF-8 si nécessaire. Cette
fonction
attend que les données soient reçues en utilisant
une
bloucle principale, ainsi les événements, les
timeouts,
etc, peuvent être distribués pendant l'attente.
clipboard : |
Un GtkClipboard |
Retourne : |
Une chaîne UTF-8 nouvellement
allouée qui doit être
libérée avec g_free() , ou NULL
si la récupération des données
délectionnées échoue. (Cela
peut arriver
pour différentes raison, en particulier si le presse-papier
est
vde ou si le contenu du presse-papier ne peut pas être
converti
dans la forme texte.) |
gtk_clipboard_wait_for_image
()
Demande le contenu du presse-papier en tant qu'image et
convertit le résultat en GdkPixbuf. Cette
fonction attend que les données soient reçues en
utilisant une
bloucle principale, ainsi les événements, les
timeouts, etc, peuvent
être distribués pendant l'attente.
clipboard : |
Un GtkClipboard |
Retourne: |
Un objet GdkPixbuf nouvellement
alloué qui doit être
libérée avec g_object_unref() , ou
NULL si la
récupération des données
délectionnées échoue. (Cela
peut
arriver pour différentes raison, en particulier si le
presse-papier est
vde ou si le contenu du presse-papier ne peut pas être
converti en image.) |
Depuis 2.6
gtk_clipboard_wait_for_rich_text
()
Demande le contenu du presse-papier en tant que rich
text. Cette fonction attend que les données soient
reçues en utilisant une
bloucle principale, ainsi les événements, les
timeouts, etc, peuvent
être distribués pendant l'attente.
clipboard : |
Un GtkClipboard |
buffer : |
Un GtkTextBuffer
|
format : |
Retourne la localisation pour le format des
données retournées. |
length : |
Retourne la localisation pour la taille des
données retournées. |
Retourne: |
Un bloc binaire de données
nouvellement qui doit être
libérée avec g_free() , ou NULL
si la récupération des données
délectionnées échoue. (Cecla
peut
arriver pour différentes raison, en particulier si le
presse-papier est
vde ou si le contenu du presse-papier ne peut pas être
converti dans la
forme texte.) |
Depuis 2.10
gtk_clipboard_wait_is_text_available
()
Teste pour savoir s'il y a du texte à coller
disponible. Cela se fait en demandant l'atome
TARGETS et
en contrôlant s'il contient une des cible texte
supportée. Cette fonction attend que les données
soient reçue en utilisant un boucle
principale , ainsi les
événements, les timeouts, etc, peuvent
être distribués pendant l'attente.
Cette fonction est un peu plus rapide que l'appel de gtk_clipboard_wait_for_text()
elle n'a pas besoin de rechercher le texte courant.
gtk_clipboard_wait_is_image_available
()
Teste pour savoir s'il y a une image à coller
disponible.Cela se fait en demandant l'atome
TARGETS et
en contrôlant s'il contient une image cible
supportée. Cette fonction attend que les
données soient reçue en utilisant un boucle
principale , ainsi les
événements, les timeouts, etc, peuvent
être distribués pendant l'attente.
Cette fonction est un peu plus rapide que l'appel de
gtk_clipboard_wait_for_image()
elle
n'a pas besoin de rechercher les données de l'image courante.
Depuis 2.6
gtk_clipboard_wait_is_rich_text_available
()
Teste pour savoir s'il y a un rich text à coller
disponible. Cela se fait en demandant l'atome
TARGETS et
en contrôlant s'il contient un rich text cible
supporté. Cette
fonction attend que les données soient reçue en
utilisant un boucle
principale , ainsi les
événements, les timeouts, etc, peuvent
être distribués pendant l'attente.
Cette fonction est un peu plus rapide que l'appel de gtk_clipboard_wait_for_rich_text()
elle
n'a pas besoin de rechercher le texte courant.
Depuis 2.10
gtk_clipboard_wait_for_targets
()
Retourne une liste de cibles qui sont présentes
dans le presse-papier, ou NULL
s'il n'y a aucune cible disponible.La liste
retournée doit être libérée
avec g_free()
.
Cette fonction attends que les données soient
reçues en utilisant un boucle
principale , ainsi les
événements, les timeouts, etc, peuvent
être distribués pendant l'attente.
clipboard : |
Un GtkClipboard |
targets : |
Endroit où placer le tableau de cibles. Ce
qui a été placé ici doit
être libéré avec g_free() . |
n_targets : |
Endroit où placer le nombre
d'items dans targets .
|
Retourne : |
TRUE si des cibles
sont présente dans le presse-papier, autrement FALSE . |
Depuis 2.4
gtk_clipboard_wait_is_target_available
()
Contrôle si le presse-papier supporte le passage de
données d'un type donné. Cette fonction peut
être utilisée pour déterminer si
un item de menu "Coller" doit être
insensible ou non.
Si vous voulez voir s'il y a du texte disponible dans le
presse papier, utilisez
gtk_clipboard_wait_is_text_available()
à la place.
Depuis 2.6
gtk_clipboard_set_can_store
()
Conseille que les données du presse-papier peuvent
être placée quelque part quand l'application se
termine ou quand gtk_clipboard_store()
est appélée.
Cette valeur est redéfinie quand le
propriétaire du presse-papier changer. L'endroit
où les données du presse-papier sont
placées dépendent de la plateforme,
voir gdk_display_store_clipboard()
pour plus d'informations.
clipboard : |
Un GtkClipboard |
targets : |
Tableau contenant les information au sujet des formes
qui doivent être stockées ou NULL qui
indique que toutes les formes doivent être
stockées. |
n_targets : |
nombre d'éléments dans targets
|
Depuis 2.6
gtk_clipboard_store
()
Stocke les données courantes du presse-papier
quelque part ainsi elles existeront encore après la
fermeture de l'application.
Depuis 2.6