General setup
<?php
$accepted_types = array(
'text/html',
'text/plain',
'.dat'
);
Gtk_FileDrop::attach($widget, $accepted_types);
?>
Here we set up the array of accepted file types:
The widget shall accept files with MIME-Type
text/html
, text/plain
and
files ending with .dat
.
After this we set up the $widget
to accept this
files.
Accepting directories
<?php
$accepted_types = array(
'inode/directory',
);
?>
The MIME type inode/directory
has to be used if
the widget shall accept directories.
When a file is dropped over a widget which accepts directories only, the directory of the filename is used.
Setup with callback
<?php
function filesDropped($widget, $arFiles) {
foreach($arFiles as $strFile) {
echo "The file \"$strFile\" has been dropped\r\n";
}
}
$accepted_types = array(
'text/html',
'text/plain',
'.dat'
);
Gtk_FileDrop::attach($widget, $accepted_types, 'filesDropped', false);
?>
In this example we use a callback function to print out all
dropped files to the console. Further we determine the fourth
parameter as false
which means that the widget's
value is not changed automatically.
To use the callback with objects, you pass an array with the reference of the object:
Using a callback
<?php
Gtk_FileDrop::attach($widget, $accepted_types, array( &$this, 'filesDropped'));
?>
Working example
<?php
if (!extension_loaded('gtk')) {
dl('php_gtk.' . PHP_SHLIB_SUFFIX);
}
require_once('Gtk/FileDrop.php');
$window = &new GtkWindow();
$window->set_default_size(300, 30);
$window->connect_object('destroy', array('gtk', 'main_quit'));
$window->show();
$entry =& new GtkEntry();
$window->add($entry);
$entry->set_text('drop text files on me');
Gtk_FileDrop::attach($entry, array('text/plain'));
$window->show_all();
gtk::main();
?>