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.