annotate tests/Dnd/droptest.el @ 284:558f606b08ae r21-0b40

Import from CVS: tag r21-0b40
author cvs
date Mon, 13 Aug 2007 10:34:13 +0200
parents c42ec1d1cded
children e11d67e05968
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
1 ;; a short example how to use the new Drag'n'Drop API in
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
2 ;; combination with extents.
197
acd284d43ca1 Import from CVS: tag r20-3b25
cvs
parents:
diff changeset
3 ;;
acd284d43ca1 Import from CVS: tag r20-3b25
cvs
parents:
diff changeset
4
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
5 (defun dnd-drop-message (event object text)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
6 (message "Dropped %s with :%s" text object)
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
7 t)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
8
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
9 (defun do-nothing (event object)
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
10 nil)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
11
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
12 (defun start-drag (event what &optional typ)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
13 (cond ((featurep 'offix)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
14 (if (numberp typ)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
15 (offix-start-drag event what typ)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
16 (offix-start-drag event what)))
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
17 ((featurep 'cde)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
18 (funcall (intern "cde-start-drag-internal") what))
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
19 (t display-message 'error "no valid drag protocols implemented")))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
20
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
21 (defun make-drop-targets ()
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
22 (let ((buf (get-buffer-create "*DND misc-user extent test buffer*"))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
23 (s nil)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
24 (e nil))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
25 (set-buffer buf)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
26 (pop-to-buffer buf)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
27 (setq s (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
28 (insert "[ DROP TARGET 1]")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
29 (setq e (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
30 (setq ext (make-extent s e))
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
31 (set-extent-property ext
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
32 'dragdrop-drop-functions
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
33 '((do-nothing t t)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
34 (dnd-drop-message t t "on target 1")))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
35 (set-extent-property ext 'mouse-face 'highlight)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
36 (insert " ")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
37 (setq s (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
38 (insert "[ DROP TARGET 2]")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
39 (setq e (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
40 (setq ext (make-extent s e))
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
41 (set-extent-property ext
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
42 'dragdrop-drop-functions
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
43 '((dnd-drop-message t t "on target 2")))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
44 (set-extent-property ext 'mouse-face 'highlight)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
45 (insert " ")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
46 (setq s (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
47 (insert "[ DROP TARGET 3]")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
48 (setq e (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
49 (setq ext (make-extent s e))
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
50 (set-extent-property ext
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
51 'dragdrop-drop-functions
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
52 '((dnd-drop-message t t "on target 3")))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
53 (set-extent-property ext 'mouse-face 'highlight)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
54 (newline 2)))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
55
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
56 (defun make-drag-starters ()
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
57 (let ((buf (get-buffer-create "*DND misc-user extent test buffer*"))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
58 (s nil)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
59 (e nil)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
60 (ext nil)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
61 (kmap nil))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
62 (set-buffer buf)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
63 (pop-to-buffer buf)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
64 (erase-buffer buf)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
65 (insert "Try to drag data from one of the upper extents to one\nof the lower extents. Make sure that your minibuffer is big\ncause it is used to display the data.\n\nYou may also try to select some of this text and drag it with button2.")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
66 (newline 2)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
67 (setq s (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
68 (insert "[ TEXT DRAG TEST ]")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
69 (setq e (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
70 (setq ext (make-extent s e))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
71 (set-extent-property ext 'mouse-face 'isearch)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
72 (setq kmap (make-keymap))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
73 (define-key kmap [button1] 'text-drag)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
74 (set-extent-property ext 'keymap kmap)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
75 (insert " ")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
76 (setq s (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
77 (insert "[ FILE DRAG TEST ]")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
78 (setq e (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
79 (setq ext (make-extent s e))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
80 (set-extent-property ext 'mouse-face 'isearch)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
81 (setq kmap (make-keymap))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
82 (define-key kmap [button1] 'file-drag)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
83 (set-extent-property ext 'keymap kmap)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
84 (insert " ")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
85 (setq s (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
86 (insert "[ FILES DRAG TEST ]")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
87 (setq e (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
88 (setq ext (make-extent s e))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
89 (set-extent-property ext 'mouse-face 'isearch)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
90 (setq kmap (make-keymap))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
91 (define-key kmap [button1] 'files-drag)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
92 (set-extent-property ext 'keymap kmap)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
93 (insert " ")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
94 (setq s (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
95 (insert "[ URL DRAG TEST ]")
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
96 (setq e (point))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
97 (setq ext (make-extent s e))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
98 (set-extent-property ext 'mouse-face 'isearch)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
99 (setq kmap (make-keymap))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
100 (define-key kmap [button1] 'url-drag)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
101 (set-extent-property ext 'keymap kmap)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
102 (newline 3)))
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
103
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
104 (defun text-drag (event)
197
acd284d43ca1 Import from CVS: tag r20-3b25
cvs
parents:
diff changeset
105 (interactive "@e")
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
106 (start-drag event "That's a test"))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
107
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
108 (defun file-drag (event)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
109 (interactive "@e")
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
110 (start-drag event "/tmp/printcap" 2))
197
acd284d43ca1 Import from CVS: tag r20-3b25
cvs
parents:
diff changeset
111
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
112 (defun url-drag (event)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
113 (interactive "@e")
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
114 (start-drag event "http://www.xemacs.org/" 8))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
115
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
116 (defun files-drag (event)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
117 (interactive "@e")
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
118 (start-drag event '("/tmp/dragtest" "/tmp/droptest" "/tmp/printcap") 3))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
119
284
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
120 (setq dragdrop-drop-functions '((do-nothing t t)
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
121 (dnd-drop-message 2 t "region somewhere else")
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
122 (dnd-drop-message 1 t "drag-source somewhere else")
558f606b08ae Import from CVS: tag r21-0b40
cvs
parents: 282
diff changeset
123 (do-nothing t t)))
282
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
124 (make-drag-starters)
c42ec1d1cded Import from CVS: tag r21-0b39
cvs
parents: 197
diff changeset
125 (make-drop-targets)