diff options
| author | Joakim Verona | 2011-08-16 01:48:09 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-08-16 01:48:09 +0200 |
| commit | e36df8ed9230c531c50e2ab0ebde5e7457012f4a (patch) | |
| tree | cb9f63c7d99082a3b8b9fb826df6eff43558d8d6 | |
| parent | 009838098e5082077f193ac56649c59c8c28b44f (diff) | |
| download | emacs-e36df8ed9230c531c50e2ab0ebde5e7457012f4a.tar.gz emacs-e36df8ed9230c531c50e2ab0ebde5e7457012f4a.zip | |
event to callback maping code that does not work yet
| -rw-r--r-- | lisp/xwidget.el | 74 |
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 | ||