aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2011-08-16 01:48:09 +0200
committerJoakim Verona2011-08-16 01:48:09 +0200
commite36df8ed9230c531c50e2ab0ebde5e7457012f4a (patch)
treecb9f63c7d99082a3b8b9fb826df6eff43558d8d6
parent009838098e5082077f193ac56649c59c8c28b44f (diff)
downloademacs-e36df8ed9230c531c50e2ab0ebde5e7457012f4a.tar.gz
emacs-e36df8ed9230c531c50e2ab0ebde5e7457012f4a.zip
event to callback maping code that does not work yet
-rw-r--r--lisp/xwidget.el74
1 files changed, 38 insertions, 36 deletions
diff --git a/lisp/xwidget.el b/lisp/xwidget.el
index a56d5556772..b6371cbfde5 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -36,25 +36,25 @@ see xwidget.c for types suitable for TYPE."
36 36
37 37
38 38
39(defun xwidget-socket-handler () 39;; (defun xwidget-socket-handler ()
40 "Create plug for socket. TODO." 40;; "Create plug for socket. TODO."
41 (interactive) 41;; (interactive)
42 (message "socket handler xwidget %S" last-input-event) 42;; (message "socket handler xwidget %S" last-input-event)
43 (let* 43;; (let*
44 ((xwidget-event-type (nth 2 last-input-event)) 44;; ((xwidget-event-type (nth 2 last-input-event))
45 (xwidget-id (nth 1 last-input-event))) 45;; (xwidget-id (nth 1 last-input-event)))
46 (cond ( (eq xwidget-event-type 'xembed-ready) 46;; (cond ( (eq xwidget-event-type 'xembed-ready)
47 (let* 47;; (let*
48 ((xembed-id (nth 3 last-input-event))) 48;; ((xembed-id (nth 3 last-input-event)))
49 (message "xembed ready event: %S xw-id:%s" xembed-id xwidget-id) 49;; (message "xembed ready event: %S xw-id:%s" xembed-id xwidget-id)
50 ;;TODO fetch process data from the xwidget. create it, store process info 50;; ;;TODO fetch process data from the xwidget. create it, store process info
51 ;;will start emacs/uzbl in a xembed socket when its ready 51;; ;;will start emacs/uzbl in a xembed socket when its ready
52 ;; (cond 52;; ;; (cond
53 ;; ((eq 3 xwidget-id) 53;; ;; ((eq 3 xwidget-id)
54 ;; (start-process "xembed" "*xembed*" (format "%ssrc/emacs" default-directory) "-q" "--parent-id" (number-to-string xembed-id) ) ) 54;; ;; (start-process "xembed" "*xembed*" (format "%ssrc/emacs" default-directory) "-q" "--parent-id" (number-to-string xembed-id) ) )
55 ;; ((eq 5 xwidget-id) 55;; ;; ((eq 5 xwidget-id)
56 ;; (start-process "xembed2" "*xembed2*" "uzbl-core" "-s" (number-to-string xembed-id) "http://www.fsf.org" ) ) 56;; ;; (start-process "xembed2" "*xembed2*" "uzbl-core" "-s" (number-to-string xembed-id) "http://www.fsf.org" ) )
57 ))))) 57;; )))))
58 58
59 59
60 60
@@ -109,10 +109,8 @@ defaults to the string looking like a url around the cursor position."
109 (define-key map "r" 'xwidget-webkit-reload ) 109 (define-key map "r" 'xwidget-webkit-reload )
110 (define-key map "t" (lambda () (interactive) (message "o")) ) 110 (define-key map "t" (lambda () (interactive) (message "o")) )
111 (define-key map "\C-m" 'xwidget-webkit-insert-string) 111 (define-key map "\C-m" 'xwidget-webkit-insert-string)
112 (define-key map [xwidget-event] 'xwidget-webkit-event-handler);;TODO needs to go into a higher level handler
113 112
114 ;;similar to image mode bindings 113 ;;similar to image mode bindings
115 ;;TODO theres something wrong with the macro
116 (define-key map (kbd "SPC") (xwidget-image-mode-navigation-adaptor 'image-scroll-up)) 114 (define-key map (kbd "SPC") (xwidget-image-mode-navigation-adaptor 'image-scroll-up))
117 (define-key map (kbd "DEL") (xwidget-image-mode-navigation-adaptor 'image-scroll-down)) 115 (define-key map (kbd "DEL") (xwidget-image-mode-navigation-adaptor 'image-scroll-down))
118 116
@@ -121,7 +119,6 @@ defaults to the string looking like a url around the cursor position."
121 119
122 (define-key map [remap scroll-down] (xwidget-image-mode-navigation-adaptor 'image-scroll-down)) 120 (define-key map [remap scroll-down] (xwidget-image-mode-navigation-adaptor 'image-scroll-down))
123 (define-key map [remap scroll-down-command] (xwidget-image-mode-navigation-adaptor 'image-scroll-down)) 121 (define-key map [remap scroll-down-command] (xwidget-image-mode-navigation-adaptor 'image-scroll-down))
124
125 122
126 (define-key map [remap forward-char] (xwidget-image-mode-navigation-adaptor-p 'image-forward-hscroll)) 123 (define-key map [remap forward-char] (xwidget-image-mode-navigation-adaptor-p 'image-forward-hscroll))
127 (define-key map [remap backward-char] (xwidget-image-mode-navigation-adaptor-p 'image-backward-hscroll)) 124 (define-key map [remap backward-char] (xwidget-image-mode-navigation-adaptor-p 'image-backward-hscroll))
@@ -130,29 +127,33 @@ defaults to the string looking like a url around the cursor position."
130 (define-key map [remap previous-line] (xwidget-image-mode-navigation-adaptor-p 'image-previous-line)) 127 (define-key map [remap previous-line] (xwidget-image-mode-navigation-adaptor-p 'image-previous-line))
131 (define-key map [remap next-line] (xwidget-image-mode-navigation-adaptor-p 'image-next-line)) 128 (define-key map [remap next-line] (xwidget-image-mode-navigation-adaptor-p 'image-next-line))
132 129
133
134 (define-key map [remap move-beginning-of-line] (xwidget-image-mode-navigation-adaptor 'image-bol)) 130 (define-key map [remap move-beginning-of-line] (xwidget-image-mode-navigation-adaptor 'image-bol))
135 (define-key map [remap move-end-of-line] (xwidget-image-mode-navigation-adaptor 'image-eol)) 131 (define-key map [remap move-end-of-line] (xwidget-image-mode-navigation-adaptor 'image-eol))
136 (define-key map [remap beginning-of-buffer] (xwidget-image-mode-navigation-adaptor 'image-bob)) 132 (define-key map [remap beginning-of-buffer] (xwidget-image-mode-navigation-adaptor 'image-bob))
137 (define-key map [remap end-of-buffer] (xwidget-image-mode-navigation-adaptor 'image-eob)) 133 (define-key map [remap end-of-buffer] (xwidget-image-mode-navigation-adaptor 'image-eob))
138
139
140 map) 134 map)
141
142 "Keymap for `xwidget-webkit-mode'.") 135 "Keymap for `xwidget-webkit-mode'.")
143 136
137;;the xwidget event needs to go into a higher level handler
138;;since the xwidget can generate an event even if its offscreen
139;;TODO this needs to use callbacks and consider different xw ev types
140(define-key (current-global-map) [xwidget-event] 'xwidget-event-handler)
144 141
145(defun xwidget-webkit-event-handler () 142(defun xwidget-event-handler ()
146 "Receive webkit event." 143 "Receive xwidget event."
147 (interactive) 144 (interactive)
148 (message "stuff happened to webkit xwidget %S" last-input-event) 145 (message "stuff happened to xwidget %S" last-input-event)
149 (let* 146 (let*
150 ((xwidget-event-type (nth 2 last-input-event)) 147 ((xwidget-event-type (nth 2 last-input-event))
151 (xwidget (nth 1 last-input-event))) 148 (xwidget (nth 1 last-input-event))
152 (cond ((eq xwidget-event-type 'document-load-finished) 149 (xwidget-callback (xwidget-get xwidget 'callback)))
153 (message "webkit loaded %s" xwidget) 150 (funcall xwidget-callback xwidget xwidget-event-type)))
154 (xwidget-webkit-adjust-size-to-content)) 151
155 ))) 152(defun xwdiget-webkit-callback (xwidget xwidget-event-type)
153 (cond ((eq xwidget-event-type 'document-load-finished)
154 (message "webkit loaded %s" xwidget)
155 (xwidget-adjust-size-to-content xwidget))
156 ))
156 157
157(define-derived-mode xwidget-webkit-mode 158(define-derived-mode xwidget-webkit-mode
158 special-mode "xwidget-webkit" "xwidget webkit view mode" 159 special-mode "xwidget-webkit" "xwidget webkit view mode"
@@ -219,10 +220,11 @@ Argument H height."
219"Create a new webkit session buffer with URL." 220"Create a new webkit session buffer with URL."
220 (let* 221 (let*
221 ((bufname (generate-new-buffer-name "*xwidget-webkit*")) 222 ((bufname (generate-new-buffer-name "*xwidget-webkit*"))
222 ) 223 xw)
223 (setq xwidget-webkit-last-session-buffer (switch-to-buffer (get-buffer-create bufname))) 224 (setq xwidget-webkit-last-session-buffer (switch-to-buffer (get-buffer-create bufname)))
224 (insert " ") 225 (insert " ")
225 (xwidget-insert 1 'webkit-osr bufname 1000 1000) 226 (setq xw (xwidget-insert 1 'webkit-osr bufname 1000 1000))
227 (xwidget-put xw 'callback 'xwdiget-webkit-callback)
226 (xwidget-webkit-mode) 228 (xwidget-webkit-mode)
227 (xwidget-webkit-goto-uri ( xwidget-webkit-last-session) url ))) 229 (xwidget-webkit-goto-uri ( xwidget-webkit-last-session) url )))
228 230