diff man/lispref/dragndrop.texi @ 428:3ecd8885ac67 r21-2-22

Import from CVS: tag r21-2-22
author cvs
date Mon, 13 Aug 2007 11:28:15 +0200
parents
children 576fb035e263
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/lispref/dragndrop.texi	Mon Aug 13 11:28:15 2007 +0200
@@ -0,0 +1,128 @@
+@c -*-texinfo-*-
+@c This is part of the XEmacs Lisp Reference Manual.
+@c Copyright (C) 1998 Oliver Graf <ograf@fga.de>
+@c Original reference is (c) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. 
+@c See the file lispref.texi for copying conditions.
+@setfilename ../../info/dragndrop.texi
+@node Drag and Drop, Modes, Scrollbars, Top
+@chapter Drag and Drop
+@cindex drag and drop
+
+@emph{WARNING}: the Drag'n'Drop API is still under development and the
+interface may change! The current implementation is considered experimental.
+
+  Drag'n'drop is a way to transfer information between multiple applications.
+To do this several GUIs define their own protocols. Examples are OffiX, CDE,
+Motif, KDE, MSWindows, GNOME, and many more. To catch all these protocols,
+XEmacs provides a generic API.
+
+One prime idea behind the API is to use a data interface that is
+transparent for all systems. The author thinks that this is best
+archived by using URL and MIME data, cause any internet enabled system
+must support these for email already. XEmacs also already provides
+powerful interfaces to support these types of data (tm and w3).
+
+@menu
+* Supported Protocols:: Which low-level protocols are supported.
+* Drop Interface::      How XEmacs handles a drop from another application.
+* Drag Interface::      Calls to initiate a drag from XEmacs.
+@end menu
+
+@node Supported Protocols
+@section Supported Protocols
+
+The current release of XEmacs only support a small set of Drag'n'drop
+protocols. Some of these only support limited options available in the API.
+
+@menu
+* OffiX DND::           A generic X based protocol.
+* CDE dt::              Common Desktop Environment used on suns.
+* MSWindows OLE::       Mr. Gates way of live.
+* Loose ends::          The other protocols.
+@end menu
+
+@node OffiX DND
+@subsection OffiX DND
+@cindex OffiX DND
+
+@emph{WARNING}: If you compile in OffiX, you may not be able to use
+multiple X displays successfully.  If the two servers are from
+different vendors, the results may be unpredictable.
+
+The OffiX Drag'n'Drop protocol is part of a X API/Widget library created by
+Cesar Crusius. It is based on X-Atoms and ClientMessage events, and works with
+any X platform supporting them.
+
+OffiX is supported if 'offix is member of the variable dragdrop-protocols, or
+the feature 'offix is defined.
+
+Unfortunately it uses it's own data types. Examples are: File, Files,
+Exe, Link, URL, MIME. The API tries to choose the right type for the data that 
+is dragged from XEmacs (well, not yet...).
+
+XEmacs supports both MIME and URL drags and drops using this API. No application 
+interaction is possible while dragging is in progress.
+
+For information about the OffiX project have a look at http://leb.net/~offix/
+
+@node CDE dt
+@subsection CDE dt
+@cindex CDE dt
+
+CDE stands for Common Desktop Environment. It is based on the Motif
+widget library. It's drag'n'drop protocol is also an abstraction of the
+Motif protocol (so it might be possible, that XEmacs will also support
+the Motif protocol soon).
+
+CDE has three different types: file, buffer, and text. XEmacs only uses
+file and buffer drags. The API will disallow full URL drags, only file
+method URLs are passed through.
+
+Buffer drags are always converted to plain text.
+
+@node MSWindows OLE
+@subsection MSWindows OLE
+@cindex MSWindows OLE
+
+Only allows file drags and drops.
+
+@node Loose ends
+@subsection Loose ends
+
+The following protocols will be supported soon: Xdnd, Motif, Xde (if I
+get some specs), KDE OffiX (if KDE can find XEmacs windows).
+
+In particular Xdnd will be one of the protocols that can benefit from
+the XEmacs API, cause it also uses MIME types to encode dragged data.
+
+@node Drop Interface
+@section Drop Interface
+@cindex drop
+@cindex Drop API
+
+For each activated low-level protocol, a internal routine will catch
+incoming drops and convert them to a dragdrop-drop type
+misc-user-event.
+
+This misc-user-event has its function argument set to
+@code{dragdrop-drop-dispatch} and the object contains the data of the drop
+(converted to URL/MIME specific data). This function will search the variable
+@code{experimental-dragdrop-drop-functions} for a function that can handle the 
+dropped data.
+
+To modify the drop behavior, the user can modify the variable
+@code{experimental-dragdrop-drop-functions}. Each element of this list
+specifies a possible handler for dropped data. The first one that can handle
+the data will return @code{t} and exit. Another possibility is to set a
+extent-property with the same name. Extents are checked prior to the
+variable.
+
+The customization group @code{drag-n-drop} shows all variables of user
+interest. 
+
+@node Drag Interface
+@section Drag Interface
+@cindex drag
+@cindex Drag API
+
+This describes the drag API (not implemented yet).