aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2011-10-02 23:25:31 +0200
committerJoakim Verona2011-10-02 23:25:31 +0200
commit79d868cca338dfc0bfb3e4fd74dc91d5062b69e0 (patch)
treefef20be3d9db0f12a7c2bc29155cb210a12a0df5
parent6ae1821f00fdc051a2c6b41d83afe9151c6093c1 (diff)
downloademacs-79d868cca338dfc0bfb3e4fd74dc91d5062b69e0.tar.gz
emacs-79d868cca338dfc0bfb3e4fd74dc91d5062b69e0.zip
re-added xwidget-test.el
-rw-r--r--lisp/xwidget-test.el147
1 files changed, 147 insertions, 0 deletions
diff --git a/lisp/xwidget-test.el b/lisp/xwidget-test.el
new file mode 100644
index 00000000000..85093316676
--- /dev/null
+++ b/lisp/xwidget-test.el
@@ -0,0 +1,147 @@
1;;test like:
2;; cd /path/to/xwidgets-emacs-dir
3;; make all&& src/emacs -q --eval "(progn (load \"`pwd`/lisp/xwidget-test.el\") (xwidget-demo-basic))"
4
5
6;; you should see:
7;; - a gtk button
8;; - a gtk toggle button
9;; - a gtk slider button
10;; - an xembed window(using gtk_socket) showing another emacs instance
11;; - an xembed window(using gtk_socket) showing an uzbl web browser if its installed
12
13;;the widgets will move when you type in the buffer. good!
14
15;;there will be redrawing issues when widgets change rows, etc. bad!
16
17;;its currently difficult to give kbd focus to the xembedded emacs,
18;;but try evaling the following:
19
20;; (xwidget-set-keyboard-grab 3 1)
21
22
23
24
25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
27;; demo/test functions
28(require 'xwidget)
29
30(defmacro xwidget-demo (name &rest body)
31 `(defun ,(intern (concat "xwidget-demo-" name)) ()
32 (interactive)
33 (switch-to-buffer ,(format "*xwidget-demo-%s*" name))
34 (text-mode);;otherwise no local keymap
35 (insert "Some random text for xwidgets to be inserted in for demo purposes.\n")
36 ,@body))
37
38(xwidget-demo "a-button"
39 (xwidget-insert (point-min) 'button "button" 60 50)
40 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
41
42(xwidget-demo "a-toggle-button"
43 (xwidget-insert (point-min) 'toggle "teggle" 60 50)
44 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
45
46(xwidget-demo "a-big-button"
47 (xwidget-insert (point-min) 'button "button" 400 500)
48 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
49
50(xwidget-demo "a-socket"
51 (xwidget-insert (point-min) 'socket "socket" 500 500)
52 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
53
54(xwidget-demo "a-socket-osr"
55 (xwidget-insert (point-min) 'socket-osr "socket-osr" 500 500)
56 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
57
58
59(xwidget-demo "a-slider"
60 (xwidget-insert (point-min) 'slider "slider" 500 100)
61 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
62
63(xwidget-demo "a-canvas"
64 (xwidget-insert (point-min) 'cairo "canvas" 1000 1000)
65 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
66
67(xwidget-demo "a-webkit"
68 (xwidget-insert (point-min) 'webkit "webkit" 1000 1000)
69 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
70
71(xwidget-demo "a-webkit-osr"
72 (xwidget-insert (point-min) 'webkit-osr "webkit-osr" 1000 1000)
73 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
74
75
76
77(xwidget-demo "basic"
78 (xwidget-insert (point-min) 'button "button" 40 50 )
79 (xwidget-insert 15 'toggle "toggle" 60 30 )
80 (xwidget-insert 30 'socket "emacs" 400 200 )
81 (xwidget-insert 20 'slider "slider" 100 50 )
82 (xwidget-insert 40 'socket "uzbl-core" 400 400 )
83 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic)
84)
85
86
87;it doesnt seem gtk_socket_steal works very well. its deprecated.
88; xwininfo -int
89; then (xwidget-embed-steal 3 <winid>)
90(defun xwidget-demo-grab ()
91 (interactive)
92 (insert "0 <<< grabbed appp will appear here\n")
93 (xwidget-insert 1 1 3 "1" 1000 )
94 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-grab)
95 )
96
97;ive basically found these xembeddable things:
98;openvrml
99;emacs
100;mplayer
101;surf
102;uzbl
103
104;try the openvrml:
105;/usr/libexec/openvrml-xembed 0 ~/Desktop/HelloWorld.wrl
106
107
108(defun xwidget-handler-demo-basic ()
109 (interactive)
110 (message "stuff happened to xwidget %S" last-input-event)
111 (let*
112 ((xwidget-event-type (nth 2 last-input-event))
113 (xwidget (nth 1 last-input-event)))
114 (cond ( (eq xwidget-event-type 'xembed-ready)
115 (let*
116 ((xembed-id (nth 3 last-input-event)))
117 (message "xembed ready event: %S xw-id:%s" xembed-id xwidget)
118 ;;will start emacs/uzbl in a xembed socket when its ready
119 (cond
120 (t;;(eq 3 xwidget)
121 (start-process "xembed" "*xembed*" (format "%s/src/emacs" default-directory) "-q" "--parent-id" (number-to-string xembed-id) ) )
122;; ((eq 5 xwidget-id)
123;; (start-process "xembed2" "*xembed2*" "uzbl-core" "-s" (number-to-string xembed-id) "http://www.fsf.org" )
124 )
125
126 )
127 ))))
128
129
130
131(defun xwidget-handler-demo-grab ()
132 (interactive)
133 (message "stuff happened to xwidget %S" last-input-event)
134 (let*
135 ((xwidget-event-type (nth 2 last-input-event)))
136 (cond ( (eq xwidget-event-type 'xembed-ready)
137 (let*
138 ((xembed-id (nth 3 last-input-event)))
139 (message "xembed ready %S" xembed-id)
140 )
141 ))))
142(defun xwidget-dummy-hook ()
143 (message "xwidget dummy hook called"))
144
145; (xwidget-resize-hack 1 200 200)
146
147;(xwidget-demo-basic)