Copiar

Cuando el usuario pide copiar datos, debe decirle al Clipboard qué objetivos están disponibles y proporcionar los métodos de retorno de llamada 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::vector<Gtk::TargetEntry> targets;
targets.push_back( Gtk::TargetEntry("example_custom_target") );
targets.push_back( Gtk::TargetEntry("UTF8_STRING") );

refClipboard->set( targets,
    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 std::string 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 reemplaza sus datos con otra cosa.