Exemple

Exemple – Comment utiliser Gtk_FileDrop

Utiliser Gtk_FileDrop

Configuration générale

<?php
$accepted_types 
= array(
    
'text/html',
    
'text/plain',
    
'.dat'
);
Gtk_FileDrop::attach($widget$accepted_types);
?>

Ici, nous définissons un tableau contenant les types de fichiers acceptés : La widget doit accepter les fichiers ayant pour type MIME text/html, text/plain ainsi que les fichiers finissant par .dat. Après cela, nous paramétrons le $widget pour accepter ces fichiers.

Accepter les répertoires

<?php
$accepted_types 
= array(
    
'inode/directory',
);
?>

Le type MIME inode/directory doit être utilisé si le widget doit accepter les dossiers.

Lorsqu'un fichier est déposé sur un widget qui n'accepte que les dossier, le dossier contenant le fichier sera utilisé.

Configuration avec callback

<?php
function filesDropped($widget$arFiles) {
    foreach(
$arFiles as $strFile) {
        echo 
"Le fichier \"$strFile\" a été déposé\r\n";
    }
}

$accepted_types = array(
    
'text/html',
    
'text/plain',
    
'.dat'
);
Gtk_FileDrop::attach($widget$accepted_types'filesDropped'false);
?>

Dans cet exemple, nous utilisons une fonction de callback pour afficher tous les fichiers déposés sur la console. Nous déterminons également le quatrième paramètre à FALSE ce qui signifie que la valeur du widget n'est pas modifiée automatiquement.

Pour utiliser le callback avec des objets, vous devez passer un tableau avec la référence à l'objet :

Utilisation d'un callback

<?php
Gtk_FileDrop
::attach($widget$accepted_types, array( &$this'filesDropped'));
?>

Exemple d'utilisation

<?php
if (!extension_loaded('gtk')) {    
    
dl('php_gtk.' PHP_SHLIB_SUFFIX);
}
require_once(
'Gtk/FileDrop.php');

$window = &new GtkWindow();
$window->set_default_size(30030);
$window->connect_object('destroy', array('gtk''main_quit'));
$window->show();

$entry =& new GtkEntry();
$window->add($entry);
$entry->set_text('glisser des fichiers sur moi');
Gtk_FileDrop::attach($entry, array('text/plain'));

$window->show_all();
gtk::main();
?>