Copie
Quand l'utilisateur demande de copier des données, vous devez indiquer à l'objet Clipboard quelles sont les cibles disponibles et fournir les fonctions de rappel à utiliser pour obtenir les données. À ce stade, vous stockez une copie des données à fournir quand le presse-papier appelle votre fonction de rappel en réponse à un coller.
Par exemple,
Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get();
// Cibles :
std::list<Gtk::TargetEntry> listTargets;
listTargets.push_back( Gtk::TargetEntry("example_custom_target") );
listTargets.push_back( Gtk::TargetEntry("UTF8_STRING") );
refClipboard->set( listTargets,
sigc::mem_fun(*this, &ExampleWindow::on_clipboard_get),
sigc::mem_fun(*this, &ExampleWindow::on_clipboard_clear) );Votre fonction de rappel fournit alors les données enregistrées quand l'utilisateur décide de coller les données. Par exemple :
void ExampleWindow::on_clipboard_get(
Gtk::SelectionData& selection_data, guint info)
{
const Glib::ustring target = selection_data.get_target();
if(target == "example_custom_target")
selection_data.set("example_custom_target", m_ClipboardStore);
}L'exemple « idéal » ci-après peut fournir plus d'une cible de presse-papier.
La fonction de rappel de nettoyage libère la mémoire utilisée par le stockage de vos données quand le presse-papier remplace ses données par d'autres.