Pegar
Cuando el usuario pide pegar datos desde el Clipboard, debe pedir un formato específico y proporcionar un método de retorno de llamada que se llamará con los datos en sí. Por ejemplo:
refClipboard->request_contents("example_custom_target", sigc::mem_fun(*this, &ExampleWindow::on_clipboard_received) );
Aquí hay un ejemplo de un método de retorno de llamada:
void ExampleWindow::on_clipboard_received( const Gtk::SelectionData& selection_data) { Glib::ustring clipboard_data = selection_data.get_data_as_string(); //Do something with the pasted data. }
19.3.1. Descubrir los objetivos disponibles
Para descubrir qué objetivos están actualmente disponibles en el Clipboard para pegar, llame al método request_targets(), especificando un método al que llamar con la información. Por ejemplo:
refClipboard->request_targets( sigc::mem_fun(*this, &ExampleWindow::on_clipboard_received_targets) );
En su retorno de llamada, compare la lista de objetivos disponibles con aquellos que su aplicación soporta pegar. Puede activar o no el elemento en el menú «pegar», dependiendo de si pegar es posible o no actualmente. Por ejemplo:
void ExampleWindow::on_clipboard_received_targets( const Glib::StringArrayHandle& targets_array) { // Get the list of available clipboard targets: std::list<std::string> targets = targets_array; const bool bPasteIsPossible = std::find(targets.begin(), targets.end(), example_target_custom) != targets.end(); // Enable/Disable the Paste button appropriately: m_Button_Paste.set_sensitive(bPasteIsPossible); }