comparison 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
comparison
equal deleted inserted replaced
283:fa3d41851a08 284:558f606b08ae
1 ;; a short example how to use the new Drag'n'Drop API in 1 ;; a short example how to use the new Drag'n'Drop API in
2 ;; combination with extents. 2 ;; combination with extents.
3 ;; 3 ;;
4 4
5 (defun dnd-drop-somewhere (object) 5 (defun dnd-drop-message (event object text)
6 (message "Dropped somewhere else with :%s" object) 6 (message "Dropped %s with :%s" text object)
7 t) 7 t)
8 8
9 (defun do-nothing (object) 9 (defun do-nothing (event object)
10 nil) 10 nil)
11 11
12 (defun dnd-target1 (object) 12 (defun start-drag (event what &optional typ)
13 (message "Drop on target1 with: %s" object) 13 (cond ((featurep 'offix)
14 t) 14 (if (numberp typ)
15 15 (offix-start-drag event what typ)
16 (defun dnd-target2 (object) 16 (offix-start-drag event what)))
17 (message "Drop on target2 with: %s" object) 17 ((featurep 'cde)
18 t) 18 (funcall (intern "cde-start-drag-internal") what))
19 19 (t display-message 'error "no valid drag protocols implemented")))
20 (defun dnd-target3 (object)
21 (message "Drop on target3 with: %s" object)
22 t)
23 20
24 (defun make-drop-targets () 21 (defun make-drop-targets ()
25 (let ((buf (get-buffer-create "*DND misc-user extent test buffer*")) 22 (let ((buf (get-buffer-create "*DND misc-user extent test buffer*"))
26 (s nil) 23 (s nil)
27 (e nil)) 24 (e nil))
29 (pop-to-buffer buf) 26 (pop-to-buffer buf)
30 (setq s (point)) 27 (setq s (point))
31 (insert "[ DROP TARGET 1]") 28 (insert "[ DROP TARGET 1]")
32 (setq e (point)) 29 (setq e (point))
33 (setq ext (make-extent s e)) 30 (setq ext (make-extent s e))
34 (set-extent-property ext 'dragdrop-drop-functions '(do-nothing dnd-target1)) 31 (set-extent-property ext
32 'dragdrop-drop-functions
33 '((do-nothing t t)
34 (dnd-drop-message t t "on target 1")))
35 (set-extent-property ext 'mouse-face 'highlight) 35 (set-extent-property ext 'mouse-face 'highlight)
36 (insert " ") 36 (insert " ")
37 (setq s (point)) 37 (setq s (point))
38 (insert "[ DROP TARGET 2]") 38 (insert "[ DROP TARGET 2]")
39 (setq e (point)) 39 (setq e (point))
40 (setq ext (make-extent s e)) 40 (setq ext (make-extent s e))
41 (set-extent-property ext 'dragdrop-drop-functions '(dnd-target2)) 41 (set-extent-property ext
42 'dragdrop-drop-functions
43 '((dnd-drop-message t t "on target 2")))
42 (set-extent-property ext 'mouse-face 'highlight) 44 (set-extent-property ext 'mouse-face 'highlight)
43 (insert " ") 45 (insert " ")
44 (setq s (point)) 46 (setq s (point))
45 (insert "[ DROP TARGET 3]") 47 (insert "[ DROP TARGET 3]")
46 (setq e (point)) 48 (setq e (point))
47 (setq ext (make-extent s e)) 49 (setq ext (make-extent s e))
48 (set-extent-property ext 'dragdrop-drop-functions '(dnd-target3)) 50 (set-extent-property ext
51 'dragdrop-drop-functions
52 '((dnd-drop-message t t "on target 3")))
49 (set-extent-property ext 'mouse-face 'highlight) 53 (set-extent-property ext 'mouse-face 'highlight)
50 (newline 2))) 54 (newline 2)))
51 55
52 (defun make-drag-starters () 56 (defun make-drag-starters ()
53 (let ((buf (get-buffer-create "*DND misc-user extent test buffer*")) 57 (let ((buf (get-buffer-create "*DND misc-user extent test buffer*"))
97 (set-extent-property ext 'keymap kmap) 101 (set-extent-property ext 'keymap kmap)
98 (newline 3))) 102 (newline 3)))
99 103
100 (defun text-drag (event) 104 (defun text-drag (event)
101 (interactive "@e") 105 (interactive "@e")
102 (offix-start-drag event "That's a test")) 106 (start-drag event "That's a test"))
103 107
104 (defun file-drag (event) 108 (defun file-drag (event)
105 (interactive "@e") 109 (interactive "@e")
106 (offix-start-drag event "/tmp/printcap" 2)) 110 (start-drag event "/tmp/printcap" 2))
107 111
108 (defun url-drag (event) 112 (defun url-drag (event)
109 (interactive "@e") 113 (interactive "@e")
110 (offix-start-drag event "http://www.xemacs.org/" 8)) 114 (start-drag event "http://www.xemacs.org/" 8))
111 115
112 (defun files-drag (event) 116 (defun files-drag (event)
113 (interactive "@e") 117 (interactive "@e")
114 (offix-start-drag event '("/tmp/dragtest" "/tmp/droptest" "/tmp/printcap") 3)) 118 (start-drag event '("/tmp/dragtest" "/tmp/droptest" "/tmp/printcap") 3))
115 119
116 (setq dragdrop-drop-functions '(do-nothing dnd-drop-somewhere do-nothing)) 120 (setq dragdrop-drop-functions '((do-nothing t t)
121 (dnd-drop-message 2 t "region somewhere else")
122 (dnd-drop-message 1 t "drag-source somewhere else")
123 (do-nothing t t)))
117 (make-drag-starters) 124 (make-drag-starters)
118 (make-drop-targets) 125 (make-drop-targets)