Coller

Quand l'utilisateur demande à coller des données à partir du Clipboard, vous devez demander un format défini et fournir une fonction de rappel qui est appelée avec les vraies données. Par exemple :

refClipboard->request_contents("example_custom_target",
    sigc::mem_fun(*this, &ExampleWindow::on_clipboard_received) );

Voici un exemple de fonction de rappel :

void ExampleWindow::on_clipboard_received(
    const Gtk::SelectionData& selection_data)
{
  Glib::ustring clipboard_data = selection_data.get_data_as_string();
  // Faire quelque choses avec les données collées.
}

XIX.III.I. Détermination des cibles admissibles

Pour retrouver quelles sont les cibles actuellement admissibles dans Clipboard pour le collage, appelez la fonction membre request_targets() en indiquant une fonction membre à appeler avec l'information. Par exemple :

refClipboard->request_targets( sigc::mem_fun(*this,
    &ExampleWindow::on_clipboard_received_targets) );

Dans votre fonction de rappel, comparez la liste des cibles disponibles avec celle des cibles que votre application prend en charge pour le collage. Vous pouvez activer ou désactiver un élément de menu Coller selon que le collage est ou n'est pas actuellement possible. Par exemple :

void ExampleWindow::on_clipboard_received_targets(
  const Glib::StringArrayHandle& targets_array)
{
  // Obtenir la liste des cibles disponibles dans le presse-papier :
  std::list<std::string> targets = targets_array;

  const bool bPasteIsPossible =
    std::find(targets.begin(), targets.end(),
      example_target_custom) != targets.end();

  // Activer/désactiver le bouton Coller de manière appropriée :
  m_Button_Paste.set_sensitive(bPasteIsPossible);
}