Introduction

Introduction – Why using Gtk2_FileDrop?

Contributors

  • Christian Weiske

Description

Gtk2_FileDrop provides an easy interface to set up GtkWidgets to receive files via Drag'n'Drop. Widgets can be told to accept a number of MIME-Types as well as a number of file extensions. Values of widgets can automatically be set when drops with valid files occur, or a callback function can be specified which is invoked in this case.

Now one may think that the whole setup process is really simple and would not need a class like this to make widgets accept files. That is right. The setup for making widgets accept drops is an ease - but there are two more steps to do:

  1. Make the widget accept only some types of files
  2. Convert the dropped filenames to usable filenames

The first item is not so hard to implement; we do this by either checking the file extension, or using the MIME_Type package to get the mime type. (Note: * is supported).

The second item is the main problem as all applications seem to ignore the standard for file name exchange and cook their own soup (so using their own format) when passing the file names. This package knows the differences and converts the dropped strings into usable local filenames, regardless of the format the source application uses. For a deeper insight in this topic you should read the PHP-Gtk FileDrop tutorial.

A note about Mozilla/Firefox: Mozilla provides file names only with mime type text/plain only instead of text/uri-list. If we would accept this type as well, the problem arises that every text could be dropped - if it is a file or not. That's why the decision was made not to accept drops from Mozilla.
Gtk2_FileDrop is the port of Gtk_FileDrop to PHP-Gtk2 and PHP5. Thus, it has identical methods and behaves the same.