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.