moved xwidget test to the test dir
[emacs.git] / test / xwidget-test-manual.el
blob2ded7868df6fa5d4ba9fc796481baf46bd0b4255
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))"
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
13 ;;the widgets will move when you type in the buffer. good!
15 ;;there will be redrawing issues when widgets change rows, etc. bad!
17 ;;its currently difficult to give kbd focus to the xembedded emacs,
18 ;;but try evaling the following:
20 ;; (xwidget-set-keyboard-grab 3 1)
25 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
26 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
27 ;; demo/test functions
28 (require 'xwidget)
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))
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))
42 (xwidget-demo "a-toggle-button"
43 (xwidget-insert (point-min) 'ToggleButton "toggle" 60 50)
44 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
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))
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))
54 (xwidget-demo "a-socket-osr-broken"
55 (xwidget-insert (point-min) 'socket-osr "socket-osr" 500 500)
56 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
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))
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))
67 (xwidget-demo "a-webkit-broken"
68 (xwidget-insert (point-min) 'webkit "webkit" 1000 1000)
69 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
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 (xwidget-webkit-goto-uri (xwidget-at 1) "http://www.fsf.org"))
76 (xwidget-demo "a-xwgir"
77 (xwidget-insert (point-min) 'xwgir "xwgir" 1000 1000)
78 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
80 (xwidget-demo "a-xwgir-color-button"
81 (xwgir-require-namespace "Gtk" "3.0")
82 (put 'ColorButton :xwgir-class '("Gtk" "ColorSelection"))
83 (xwidget-insert (point-min) 'ColorButton "xwgir-color-button" 1000 1000)
84 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
86 (xwidget-demo "a-xwgir-button"
87 (xwgir-require-namespace "Gtk" "3.0")
88 (put 'xwgirButton :xwgir-class '("Gtk" "Button"))
90 (xwidget-insert (point-min) 'xwgirButton "xwgir label didnt work..." 700 700)
91 (xwgir-xwidget-call-method (xwidget-at 1) "set_label" '( "xwgir label worked!"))
92 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
94 (xwidget-demo "a-xwgir-check-button"
95 (xwgir-require-namespace "Gtk" "3.0")
96 (put 'xwgirCheckButton :xwgir-class '("Gtk" "CheckButton"))
98 (xwidget-insert (point-min) 'xwgirCheckButton "xwgir label didnt work..." 700 700)
99 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
101 (xwidget-demo "a-xwgir-hscale"
102 (xwgir-require-namespace "Gtk" "3.0")
103 (put 'xwgirHScale :xwgir-class '("Gtk" "HScale"))
105 (xwidget-insert (point-min) 'xwgirHScale "xwgir label didnt work..." 700 700)
106 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
108 (xwidget-demo "a-xwgir-webkit"
109 (xwgir-require-namespace "WebKit" "3.0")
110 (put 'xwgirWebkit :xwgir-class '("WebKit" "WebView"))
112 (xwidget-insert (point-min) 'xwgirWebkit "xwgir webkit..." 700 700)
113 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic))
117 ;; tentative testcase:
118 ;; (xwgir-require-namespace "WebKit" "3.0")
120 ;; (put 'webkit-osr :xwgir-class '("WebKit" "WebView"))
121 ;; (xwgir-call-method (xwidget-at 1) "set_zoom_level" '(3.0))
123 ;; (xwgir-require-namespace "Gtk" "3.0")
124 ;; (put 'color-selection :xwgir-class '("Gtk" "ColorSelection"))
127 (xwidget-demo "basic"
128 (xwidget-insert (point-min) 'button "button" 40 50 )
129 (xwidget-insert 15 'toggle "toggle" 60 30 )
130 (xwidget-insert 30 'socket "emacs" 400 200 )
131 (xwidget-insert 20 'slider "slider" 100 50 )
132 (xwidget-insert 40 'socket "uzbl-core" 400 400 )
133 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-basic)
137 ;it doesnt seem gtk_socket_steal works very well. its deprecated.
138 ; xwininfo -int
139 ; then (xwidget-embed-steal 3 <winid>)
140 (defun xwidget-demo-grab ()
141 (interactive)
142 (insert "0 <<< grabbed appp will appear here\n")
143 (xwidget-insert 1 1 3 "1" 1000 )
144 (define-key (current-local-map) [xwidget-event] 'xwidget-handler-demo-grab)
147 ;ive basically found these xembeddable things:
148 ;openvrml
149 ;emacs
150 ;mplayer
151 ;surf
152 ;uzbl
154 ;try the openvrml:
155 ;/usr/libexec/openvrml-xembed 0 ~/Desktop/HelloWorld.wrl
157 (defun xwidget-handler-demo-basic ()
158 (interactive)
159 (message "stuff happened to xwidget %S" last-input-event)
160 (let*
161 ((xwidget-event-type (nth 1 last-input-event))
162 (xwidget (nth 2 last-input-event)))
163 (cond ( (eq xwidget-event-type 'xembed-ready)
164 (let*
165 ((xembed-id (nth 3 last-input-event)))
166 (message "xembed ready event: %S xw-id:%s" xembed-id xwidget)
167 ;;will start emacs/uzbl in a xembed socket when its ready
168 (cond
169 (t;;(eq 3 xwidget)
170 (start-process "xembed" "*xembed*" "/var/lib/jenkins/jobs/emacs-xwidgets-automerge/workspace/src/emacs" "-q" "--parent-id" (number-to-string xembed-id) ) )
171 ;; ((eq 5 xwidget-id)
172 ;; (start-process "xembed2" "*xembed2*" "uzbl-core" "-s" (number-to-string xembed-id) "http://www.fsf.org" )
176 ))))
180 (defun xwidget-handler-demo-grab ()
181 (interactive)
182 (message "stuff happened to xwidget %S" last-input-event)
183 (let*
184 ((xwidget-event-type (nth 2 last-input-event)))
185 (cond ( (eq xwidget-event-type 'xembed-ready)
186 (let*
187 ((xembed-id (nth 3 last-input-event)))
188 (message "xembed ready %S" xembed-id)
190 ))))
191 (defun xwidget-dummy-hook ()
192 (message "xwidget dummy hook called"))
194 ; (xwidget-resize-hack 1 200 200)
196 ;(xwidget-demo-basic)
198 (provide 'xwidget-test-manual)