一般的な設定
<?php
$accepted_types = array(
'text/html',
'text/plain',
'.dat'
);
Gtk_FileDrop::attach($widget, $accepted_types);
?>
ここで、有効なファイルタイプの配列を設定します。
ウィジェットが受け付けるファイルは、MIME タイプが
text/html
か text/plain
のもの、
そして名前が .dat
で終わるものです。
この後、$widget
がこのファイルを受け取るように設定します。
ディレクトリの許可
<?php
$accepted_types = array(
'inode/directory',
);
?>
ディレクトリを有効にしたい場合は、MIME タイプ
inode/directory
を使用する必要があります。
ディレクトリのみを許可しているウィジェットにファイルをドロップすると、 そのファイルが存在するディレクトリがドロップされたものとみなされます。
コールバックの設定
<?php
function filesDropped($widget, $arFiles) {
foreach($arFiles as $strFile) {
echo "ファイル \"$strFile\" がドロップされました\r\n";
}
}
$accepted_types = array(
'text/html',
'text/plain',
'.dat'
);
Gtk_FileDrop::attach($widget, $accepted_types, 'filesDropped', false);
?>
この例では、コールバック関数を使用して、
ドロップされたファイルをコンソールに表示します。
さらに四番目のパラメータを false
に設定することで、ウィジェットの値が自動的に変更されることがないようにしています。
コールバックでオブジェクトを使用するには、 オブジェクトへの参照を配列で渡します。
コールバックの使用
<?php
Gtk_FileDrop::attach($widget, $accepted_types, array( &$this, 'filesDropped'));
?>
実際に動作する例
<?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('テキストファイルをドロップしてください');
Gtk_FileDrop::attach($entry, array('text/plain'));
$window->show_all();
gtk::main();
?>