Copiar

Cuando el usuario pide copiar datos, debe decirle al Clipboard qué objetivos están disponibles y proporcionar los métodos de retorno de llamadas que puede usar para obtener los datos. En este punto, debe almacenar una copia de los datos, para proporcionarla cuando el portapapeles llame a su método de retorno de llamada en respuesta a la acción de pegar.

Por ejemplo,

Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get();

//Targets:
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) );

Su retorno de llamada proporcionará entonces los datos almacenados cuando el usuario elija pegarlos. Por ejemplo:

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);
}

El ejemplo ideal a continuación puede proporcionar más de un objetivo para el portapapeles.

El retorno de llamada «clear» le permite liberar la memoria que sus datos almacenados usan cuando el portapapeles remplaza sus datos con otra cosa.