Mercurial > hg > xemacs-beta
comparison lisp/w3/w3-prefs.el @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | 8d2a9b52c682 |
children | 1ce6082ce73f |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
1 ;;; w3-prefs.el --- Preferences panels for Emacs-W3 | 1 ;;; w3-prefs.el --- Preferences panels for Emacs-W3 |
2 ;; Author: wmperry | 2 ;; Author: wmperry |
3 ;; Created: 1997/03/21 15:52:22 | 3 ;; Created: 1996/06/30 18:10:45 |
4 ;; Version: 1.23 | 4 ;; Version: 1.5 |
5 ;; Keywords: hypermedia, preferences | 5 ;; Keywords: hypermedia, preferences |
6 | 6 |
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
8 ;;; Copyright (c) 1996 by William M. Perry (wmperry@cs.indiana.edu) | 8 ;;; Copyright (c) 1996 by William M. Perry (wmperry@cs.indiana.edu) |
9 ;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc. | |
10 ;;; | 9 ;;; |
11 ;;; This file is part of GNU Emacs. | 10 ;;; This file is not part of GNU Emacs, but the same permissions apply. |
12 ;;; | 11 ;;; |
13 ;;; GNU Emacs is free software; you can redistribute it and/or modify | 12 ;;; GNU Emacs is free software; you can redistribute it and/or modify |
14 ;;; it under the terms of the GNU General Public License as published by | 13 ;;; it under the terms of the GNU General Public License as published by |
15 ;;; the Free Software Foundation; either version 2, or (at your option) | 14 ;;; the Free Software Foundation; either version 2, or (at your option) |
16 ;;; any later version. | 15 ;;; any later version. |
19 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 19 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 ;;; GNU General Public License for more details. | 20 ;;; GNU General Public License for more details. |
22 ;;; | 21 ;;; |
23 ;;; You should have received a copy of the GNU General Public License | 22 ;;; You should have received a copy of the GNU General Public License |
24 ;;; along with GNU Emacs; see the file COPYING. If not, write to the | 23 ;;; along with GNU Emacs; see the file COPYING. If not, write to |
25 ;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 24 ;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
26 ;;; Boston, MA 02111-1307, USA. | |
27 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 25 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
28 | 26 |
29 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 27 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
30 ;;; Preferences panels for Emacs-W3 | 28 ;;; Preferences panels for Emacs-W3 |
31 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 29 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
30 (require 'widget) | |
31 (require 'widget-edit) | |
32 (require 'w3-vars) | 32 (require 'w3-vars) |
33 (require 'w3-keyword) | 33 (require 'w3-keyword) |
34 (require 'w3-widget) | |
34 (require 'w3-toolbar) | 35 (require 'w3-toolbar) |
35 (eval-and-compile | 36 |
36 (require 'w3-widget)) | 37 (defvar w3-preferences-glyph nil) |
37 | 38 (defvar w3-preferences-map nil) |
38 (defvar w3-preferences-panel-begin-marker nil) | 39 (defvar w3-preferences-panel-begin-marker nil) |
39 (defvar w3-preferences-panel-end-marker nil) | 40 (defvar w3-preferences-panel-end-marker nil) |
40 (defvar w3-preferences-panels '( | 41 (defvar w3-preferences-panels '( |
41 (appearance . "Appearance") | 42 (appearance . "Appearance") |
42 (images . "Images") | 43 (images . "Images") |
43 (cookies . "HTTP Cookies") | 44 (cookies . "HTTP Cookies") |
44 (hooks . "Various Hooks") | 45 (hooks . "Various Hooks") |
45 (compatibility . "Compatibility") | 46 (compatibility . "Compatibility") |
46 (proxy . "Proxy") | 47 (proxy . "Proxy"))) |
47 (privacy . "Privacy"))) | 48 |
49 (defun w3-preferences-setup-glyph-map () | |
50 (let* ((x 0) | |
51 (height (and w3-preferences-glyph | |
52 (glyph-height w3-preferences-glyph))) | |
53 (width (and height (/ (glyph-width w3-preferences-glyph) | |
54 (length w3-preferences-panels))))) | |
55 (mapcar | |
56 (function | |
57 (lambda (region) | |
58 (vector "rect" (list (vector (if width (* x width) 0) 0) | |
59 (vector (if width (* (setq x (1+ x)) width) 0) | |
60 (or height 0))) | |
61 (car region) (cdr region)))) | |
62 w3-preferences-panels))) | |
48 | 63 |
49 (defun w3-preferences-generic-variable-callback (widget &rest ignore) | 64 (defun w3-preferences-generic-variable-callback (widget &rest ignore) |
50 (condition-case () | 65 (condition-case () |
51 (set (widget-get widget 'variable) (widget-value widget)) | 66 (set (widget-get widget 'variable) (widget-value widget)) |
52 (error (message "Invalid or incomplete data...")))) | 67 (error (message "Invalid or incomplete data...")))) |
87 (widget-insert "\tShow Toolbars as:\t") | 102 (widget-insert "\tShow Toolbars as:\t") |
88 (widget-put | 103 (widget-put |
89 (widget-create 'radio | 104 (widget-create 'radio |
90 :value (symbol-value 'w3-preferences-temp-w3-toolbar-type) | 105 :value (symbol-value 'w3-preferences-temp-w3-toolbar-type) |
91 :notify 'w3-preferences-generic-variable-callback | 106 :notify 'w3-preferences-generic-variable-callback |
92 :format "%v" | |
93 (list 'item :format "%t\t" :tag "Pictures" :value 'pictures) | 107 (list 'item :format "%t\t" :tag "Pictures" :value 'pictures) |
94 (list 'item :format "%t\t" :tag "Text" :value 'text) | 108 (list 'item :format "%t\t" :tag "Text" :value 'text) |
95 (list 'item :format "%t" :tag "Both" :value 'both)) | 109 (list 'item :format "%t" :tag "Both" :value 'both)) |
96 'variable 'w3-preferences-temp-w3-toolbar-type) | 110 'variable 'w3-preferences-temp-w3-toolbar-type) |
97 (widget-insert "\n\tToolbars appear on ") | 111 (widget-insert "\n\tToolbars appear on ") |
113 ;; Home page | 127 ;; Home page |
114 (widget-insert "\nStartup\n--------\n\tBrowser starts with:\t") | 128 (widget-insert "\nStartup\n--------\n\tBrowser starts with:\t") |
115 (widget-put | 129 (widget-put |
116 (widget-create | 130 (widget-create |
117 'radio | 131 'radio |
118 :format "%v" | |
119 :value (symbol-value 'w3-preferences-temp-use-home-page) | 132 :value (symbol-value 'w3-preferences-temp-use-home-page) |
120 :notify 'w3-preferences-generic-variable-callback | 133 :notify 'w3-preferences-generic-variable-callback |
121 (list 'item :format "%t\t" :tag "Blank Page" :value nil) | 134 (list 'item :format "%t\t" :tag "Blank Page" :value nil) |
122 (list 'item :format "%t" :tag "Home Page Location" :value t)) | 135 (list 'item :format "%t" :tag "Home Page Location" :value t)) |
123 'variable 'w3-preferences-temp-use-home-page) | 136 'variable 'w3-preferences-temp-use-home-page) |
124 (widget-insert "\n\t\tURL: ") | 137 (widget-insert "\n\t\tURL: ") |
125 (widget-put | 138 (widget-put |
126 (widget-create | 139 (widget-create |
127 'editable-field | 140 'field |
128 :value (or (symbol-value 'w3-preferences-temp-w3-default-homepage) "None") | 141 :value (or (symbol-value 'w3-preferences-temp-w3-default-homepage) "None") |
129 :notify 'w3-preferences-generic-variable-callback) | 142 :notify 'w3-preferences-generic-variable-callback) |
130 'variable 'w3-preferences-temp-w3-default-homepage) | 143 'variable 'w3-preferences-temp-w3-default-homepage) |
131 | 144 |
132 ;; Stylesheet | 145 ;; Stylesheet |
170 'checkbox | 183 'checkbox |
171 :notify 'w3-preferences-generic-variable-callback | 184 :notify 'w3-preferences-generic-variable-callback |
172 :value (symbol-value 'w3-preferences-temp-w3-delay-image-loads)) | 185 :value (symbol-value 'w3-preferences-temp-w3-delay-image-loads)) |
173 'variable 'w3-preferences-temp-w3-delay-image-loads) | 186 'variable 'w3-preferences-temp-w3-delay-image-loads) |
174 (widget-insert " Delay Image Loads\n" | 187 (widget-insert " Delay Image Loads\n" |
188 ;;; "\nAllowed Image Types\n" | |
189 ;;; "-------------------\n") | |
190 ;;; (set | |
191 ;;; (make-local-variable 'w3-preferences-image-type-widget) | |
192 ;;; (widget-create | |
193 ;;; 'repeat | |
194 ;;; :entry-format "%i %d %v" | |
195 ;;; :value (mapcar | |
196 ;;; (function | |
197 ;;; (lambda (x) | |
198 ;;; (list 'item :format "%t" :tag (car x) :value (cdr x)))) | |
199 ;;; w3-image-mappings) | |
200 ;;; '(item :tag "*/*" :value 'unknown))) | |
175 )) | 201 )) |
176 | 202 |
177 (defun w3-preferences-save-images-panel () | 203 (defun w3-preferences-save-images-panel () |
178 (let ((vars '(w3-delay-image-loads | 204 (let ((vars '(w3-delay-image-loads |
179 w3-image-mappings))) | 205 w3-image-mappings))) |
197 | 223 |
198 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 224 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
199 ;;; The hooks panel | 225 ;;; The hooks panel |
200 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 226 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
201 (defvar w3-preferences-hooks-variables | 227 (defvar w3-preferences-hooks-variables |
202 '(w3-load-hook | 228 '(w3-file-done-hook |
229 w3-file-prepare-hook | |
230 w3-load-hook | |
203 w3-mode-hook | 231 w3-mode-hook |
204 w3-preferences-cancel-hook | 232 w3-preferences-cancel-hook |
205 w3-preferences-default-hook | 233 w3-preferences-default-hook |
206 w3-preferences-ok-hook | 234 w3-preferences-ok-hook |
207 w3-preferences-setup-hook | 235 w3-preferences-setup-hook |
217 (doc nil)) | 245 (doc nil)) |
218 (widget-insert "\n") | 246 (widget-insert "\n") |
219 (while todo | 247 (while todo |
220 (setq cur (car todo) | 248 (setq cur (car todo) |
221 todo (cdr todo) | 249 todo (cdr todo) |
222 doc (documentation-property cur 'variable-documentation)) | 250 doc (get cur 'variable-documentation)) |
223 (if (string-match "^\\*" doc) | 251 (if (string-match "^\\*" doc) |
224 (setq doc (substring doc 1 nil))) | 252 (setq doc (substring doc 1 nil))) |
225 (setq pt (point)) | 253 (setq pt (point)) |
226 (widget-insert "\n" (symbol-name cur) " - " doc) | 254 (widget-insert "\n" (symbol-name cur) " - " doc) |
227 (fill-region-as-paragraph pt (point)) | 255 (fill-region-as-paragraph pt (point)) |
241 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 269 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
242 ;;; The compatibility panel | 270 ;;; The compatibility panel |
243 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 271 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
244 (defvar w3-preferences-compatibility-variables | 272 (defvar w3-preferences-compatibility-variables |
245 '( | 273 '( |
274 (w3-style-ie-compatibility | |
275 . "Internet Explorer (tm) 3.0 compatible stylesheet parsing") | |
246 (w3-netscape-compatible-comments | 276 (w3-netscape-compatible-comments |
247 . "Allow Netscape compatible comments") | 277 . "Allow Netscape compatible comments") |
248 (w3-user-colors-take-precedence | 278 (w3-user-colors-take-precedence |
249 . "Ignore netscape document color control") | 279 . "Ignore netscape document color control") |
250 (url-honor-refresh-requests | 280 (url-honor-refresh-requests |
286 (defun w3-preferences-init-proxy-panel () | 316 (defun w3-preferences-init-proxy-panel () |
287 (let ((proxies '("FTP" "Gopher" "HTTP" "Security" "WAIS" "SHTTP" "News")) | 317 (let ((proxies '("FTP" "Gopher" "HTTP" "Security" "WAIS" "SHTTP" "News")) |
288 (proxy nil) | 318 (proxy nil) |
289 (host-var nil) | 319 (host-var nil) |
290 (port-var nil) | 320 (port-var nil) |
291 (host nil) | 321 (urlobj nil)) |
292 (port nil) | |
293 (proxy-entry nil)) | |
294 (widget-insert "\n") | 322 (widget-insert "\n") |
295 (while proxies | 323 (while proxies |
296 (setq proxy (car proxies) | 324 (setq proxy (car proxies) |
297 proxies (cdr proxies) | 325 proxies (cdr proxies) |
298 host-var (intern (format "w3-%s-proxy-host" (downcase proxy))) | 326 host-var (intern (format "w3-%s-proxy-host" (downcase proxy))) |
299 port-var (intern (format "w3-%s-proxy-port" (downcase proxy))) | 327 port-var (intern (format "w3-%s-proxy-port" (downcase proxy))) |
300 proxy-entry (cdr-safe (assoc (downcase proxy) url-proxy-services))) | 328 urlobj (url-generic-parse-url |
301 (if (and proxy-entry (string-match "\\(.*\\):\\([0-9]+\\)" proxy-entry)) | 329 (cdr-safe |
302 (setq host (match-string 1 proxy-entry) | 330 (assoc (downcase proxy) url-proxy-services)))) |
303 port (match-string 2 proxy-entry)) | 331 (set (make-local-variable host-var) (or (url-host urlobj) "")) |
304 (setq host proxy-entry | 332 (set (make-local-variable port-var) (or (url-port urlobj) ""))))) |
305 port nil)) | |
306 (set (make-local-variable host-var) (or host "")) | |
307 (set (make-local-variable port-var) (or port "")))) | |
308 (set (make-local-variable 'w3-preferences-temp-no-proxy) | |
309 (cdr-safe (assoc "no_proxy" url-proxy-services)))) | |
310 | 333 |
311 (defun w3-preferences-create-proxy-panel () | 334 (defun w3-preferences-create-proxy-panel () |
312 (let ((proxies '("FTP" "Gopher" "HTTP" "Security" "WAIS" "SHTTP" "News")) | 335 (let ((proxies '("FTP" "Gopher" "HTTP" "Security" "WAIS" "SHTTP" "News")) |
313 (proxy nil) | 336 (proxy nil) |
314 (host-var nil) | 337 (host-var nil) |
320 proxies (cdr proxies) | 343 proxies (cdr proxies) |
321 host-var (intern (format "w3-%s-proxy-host" (downcase proxy))) | 344 host-var (intern (format "w3-%s-proxy-host" (downcase proxy))) |
322 port-var (intern (format "w3-%s-proxy-port" (downcase proxy)))) | 345 port-var (intern (format "w3-%s-proxy-port" (downcase proxy)))) |
323 (widget-insert (format "%10s Proxy: " proxy)) | 346 (widget-insert (format "%10s Proxy: " proxy)) |
324 (widget-put | 347 (widget-put |
325 (widget-create 'editable-field | 348 (widget-create 'field |
326 :size 20 | 349 :size 20 |
327 :value-face 'underline | 350 :value-face 'underline |
328 :notify 'w3-preferences-generic-variable-callback | 351 :notify 'w3-preferences-generic-variable-callback |
329 :value (format "%-20s" (symbol-value host-var))) | 352 :value (format "%-20s" (symbol-value host-var))) |
330 'variable host-var) | 353 'variable host-var) |
331 (widget-insert " Port: ") | 354 (widget-insert " Port: ") |
332 (widget-put | 355 (widget-put |
333 (widget-create 'editable-field | 356 (widget-create 'field |
334 :size 5 | 357 :size 5 |
335 :value-face 'underline | 358 :value-face 'underline |
336 :notify 'w3-preferences-generic-variable-callback | 359 :notify 'w3-preferences-generic-variable-callback |
337 :value (format "%5s" (symbol-value port-var))) | 360 :value (format "%5s" (symbol-value port-var))) |
338 'variable port-var) | 361 'variable port-var) |
339 (widget-insert "\n\n")) | 362 (widget-insert "\n\n")) |
340 (widget-insert " No proxy: ") | |
341 (widget-put | |
342 (widget-create 'editable-field | |
343 :size 40 | |
344 :value-face 'underline | |
345 :notify 'w3-preferences-generic-variable-callback | |
346 :value (or (symbol-value 'w3-preferences-temp-no-proxy) "")) | |
347 'variable 'w3-preferences-temp-no-proxy) | |
348 (widget-setup))) | 363 (widget-setup))) |
349 | 364 |
350 (defun w3-preferences-save-proxy-panel () | 365 (defun w3-preferences-save-proxy-panel () |
351 (let ((proxies '("FTP" "Gopher" "HTTP" "Security" "WAIS" "SHTTP" "News")) | 366 (let ((proxies '("FTP" "Gopher" "HTTP" "Security" "WAIS" "SHTTP" "News")) |
352 (proxy nil) | 367 (proxy nil) |
354 (port-var nil) | 369 (port-var nil) |
355 (urlobj nil) | 370 (urlobj nil) |
356 (host nil) | 371 (host nil) |
357 (port nil) | 372 (port nil) |
358 (new-proxy-services nil)) | 373 (new-proxy-services nil)) |
359 (if (/= 0 (length (symbol-value 'w3-preferences-temp-no-proxy))) | |
360 (setq new-proxy-services (cons | |
361 (cons | |
362 "no_proxy" | |
363 (symbol-value 'w3-preferences-temp-no-proxy)) | |
364 new-proxy-services))) | |
365 (while proxies | 374 (while proxies |
366 (setq proxy (car proxies) | 375 (setq proxy (car proxies) |
367 proxies (cdr proxies) | 376 proxies (cdr proxies) |
368 host-var (intern (format "w3-%s-proxy-host" (downcase proxy))) | 377 host-var (intern (format "w3-%s-proxy-host" (downcase proxy))) |
369 port-var (intern (format "w3-%s-proxy-port" (downcase proxy))) | 378 port-var (intern (format "w3-%s-proxy-port" (downcase proxy))) |
372 (assoc (downcase proxy) url-proxy-services))) | 381 (assoc (downcase proxy) url-proxy-services))) |
373 host (symbol-value host-var) | 382 host (symbol-value host-var) |
374 port (symbol-value port-var)) | 383 port (symbol-value port-var)) |
375 (if (and host (/= 0 (length host))) | 384 (if (and host (/= 0 (length host))) |
376 (setq new-proxy-services (cons (cons (downcase proxy) | 385 (setq new-proxy-services (cons (cons (downcase proxy) |
377 (format "%s:%s" host | 386 (format "http://%s:%s/" host |
378 (or port "80"))) | 387 (or port "80"))) |
379 new-proxy-services)))) | 388 new-proxy-services)))) |
380 (setq url-proxy-services new-proxy-services))) | 389 (setq url-proxy-services new-proxy-services))) |
381 | |
382 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
383 ;;; Privacy panel | |
384 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
385 | |
386 (defsubst w3-preferences-privacy-bits-sort (bits) | |
387 (sort bits (function (lambda (a b) | |
388 (memq b (memq a '(email os lastloc agent cookie))))))) | |
389 | |
390 (defvar url-valid-privacy-levels | |
391 '((paranoid . (email os lastloc agent cookie)) | |
392 (high . (email lastloc)) | |
393 (low . (lastloc)) | |
394 (none . nil))) | |
395 | |
396 (defvar w3-preferences-privacy-bit-widgets nil) | |
397 (defvar w3-preferences-privacy-level-widget nil) | |
398 (defvar w3-preferences-temp-url-privacy-level nil) | |
399 ;; darnit i just noticed the checklist widget, this should probably be | |
400 ;; reimplemented with that instead of checkboxes, but i've almost finished. | |
401 (defun w3-preferences-privacy-bit-callback (widget &rest ignore) | |
402 (let ((privacy-bits (if (listp w3-preferences-temp-url-privacy-level) | |
403 w3-preferences-temp-url-privacy-level | |
404 (copy-list (cdr-safe (assq w3-preferences-temp-url-privacy-level url-valid-privacy-levels))))) | |
405 (bit (widget-get widget 'bit)) | |
406 (val (widget-value widget))) | |
407 (if val | |
408 (setq privacy-bits (delq bit privacy-bits)) | |
409 (setq privacy-bits (w3-preferences-privacy-bits-sort (cons bit (delq bit privacy-bits))))) | |
410 (setq w3-preferences-temp-url-privacy-level | |
411 (or (car (rassoc privacy-bits url-valid-privacy-levels)) | |
412 privacy-bits)) | |
413 (widget-value-set w3-preferences-privacy-level-widget | |
414 (if (listp w3-preferences-temp-url-privacy-level) | |
415 'custom | |
416 w3-preferences-temp-url-privacy-level)) | |
417 )) | |
418 | |
419 | |
420 (defun w3-preferences-privacy-level-callback (widget &rest ignore) | |
421 (let* ((val (widget-value widget)) | |
422 (privacy-bits (cdr-safe (assq val url-valid-privacy-levels)))) | |
423 (if (eq val 'custom) nil | |
424 (setq w3-preferences-temp-url-privacy-level val) | |
425 (mapcar (function (lambda (bit) | |
426 (widget-value-set (cdr bit) | |
427 (not (memq (car bit) | |
428 privacy-bits))))) | |
429 w3-preferences-privacy-bit-widgets)) | |
430 )) | |
431 | |
432 (defun w3-preferences-init-privacy-panel () | |
433 (w3-preferences-create-temp-variables '(url-privacy-level | |
434 url-cookie-confirmation)) | |
435 (setq w3-preferences-privacy-bit-widgets nil) | |
436 (setq w3-preferences-privacy-level-widget nil)) | |
437 | |
438 (defsubst w3-preferences-create-privacy-bit-widget (bit bit-text current-bits) | |
439 (let ((bit-widget (widget-create | |
440 'checkbox | |
441 :value (not (memq bit current-bits)) | |
442 :notify 'w3-preferences-privacy-bit-callback | |
443 ))) | |
444 (widget-put bit-widget 'bit bit) | |
445 (setq w3-preferences-privacy-bit-widgets (cons (cons bit bit-widget) | |
446 w3-preferences-privacy-bit-widgets)) | |
447 (widget-insert " " bit-text "\n"))) | |
448 | |
449 | |
450 (defun w3-preferences-create-privacy-panel () | |
451 (let ((privacy-bits (if (listp url-privacy-level) | |
452 url-privacy-level | |
453 (cdr-safe (assq url-privacy-level url-valid-privacy-levels))))) | |
454 (widget-insert "\n") | |
455 (widget-insert "General Privacy Level: ") | |
456 ;;; XXX something is weird with case folding in the following widget if you | |
457 ;;; type an option in lower case it accepts it but doesn't do anything | |
458 (setq w3-preferences-privacy-level-widget | |
459 (widget-create | |
460 'choice | |
461 :value (if (listp w3-preferences-temp-url-privacy-level) | |
462 'custom | |
463 w3-preferences-temp-url-privacy-level) | |
464 :notify 'w3-preferences-privacy-level-callback | |
465 :format "%v" | |
466 :tag "Privacy Level" | |
467 (list 'choice-item :format "%[%t%]" :tag "Paranoid" :value 'paranoid) | |
468 (list 'choice-item :format "%[%t%]" :tag "High" :value 'high) | |
469 (list 'choice-item :format "%[%t%]" :tag "Low" :value 'low) | |
470 (list 'choice-item :format "%[%t%]" :tag "None" :value 'none) | |
471 (list 'choice-item :format "%[%t%]" :tag "Custom" :value 'custom))) | |
472 (widget-put w3-preferences-privacy-level-widget 'variable 'w3-preferences-temp-url-privacy-level) | |
473 | |
474 (widget-insert "\n(controls the options below)\n\nSend the following information with each request:\n") | |
475 (setq w3-preferences-privacy-bit-widgets nil) | |
476 (w3-preferences-create-privacy-bit-widget 'email "E-mail address" privacy-bits) | |
477 (w3-preferences-create-privacy-bit-widget 'lastloc "Last location visited" privacy-bits) | |
478 (w3-preferences-create-privacy-bit-widget 'os "Operating system information" privacy-bits) | |
479 (w3-preferences-create-privacy-bit-widget 'agent "User agent information" privacy-bits) | |
480 (w3-preferences-create-privacy-bit-widget 'cookie "Accept cookies" privacy-bits) | |
481 (widget-insert " ") | |
482 (widget-put | |
483 (widget-create | |
484 'checkbox | |
485 :value (symbol-value 'w3-preferences-temp-url-cookie-confirmation) | |
486 :notify 'w3-preferences-generic-variable-callback) | |
487 'variable 'w3-preferences-temp-url-cookie-confirmation) | |
488 (widget-insert " Ask before accepting cookies\n")) | |
489 (widget-setup)) | |
490 | |
491 (defun w3-preferences-save-privacy-panel () | |
492 (w3-preferences-restore-variables '(url-privacy-level | |
493 url-cookie-confirmation)) | |
494 (url-setup-privacy-info)) | |
495 | 390 |
496 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 391 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
497 ;;; | 392 ;;; |
498 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 393 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
499 (defun w3-preferences-create-panel (panel) | 394 (defun w3-preferences-create-panel (panel) |
513 (widget-forward 1) | 408 (widget-forward 1) |
514 (error nil))) | 409 (error nil))) |
515 | 410 |
516 (defun w3-preferences-notify (widget widget-ignore &optional event) | 411 (defun w3-preferences-notify (widget widget-ignore &optional event) |
517 (let* ((glyph (and event w3-running-xemacs (event-glyph event))) | 412 (let* ((glyph (and event w3-running-xemacs (event-glyph event))) |
518 (x (and glyph (widget-glyphp glyph) (event-glyph-x-pixel event))) | 413 (x (and glyph (w3-glyphp glyph) (event-glyph-x-pixel event))) |
519 (y (and glyph (widget-glyphp glyph) (event-glyph-y-pixel event))) | 414 (y (and glyph (w3-glyphp glyph) (event-glyph-y-pixel event))) |
520 (map (widget-get widget 'usemap)) | 415 (map (widget-get widget 'usemap)) |
521 (value (widget-value widget))) | 416 (value (widget-value widget))) |
522 (if (and map x y) | 417 (if (and map x y) |
523 (setq value (w3-point-in-map (vector x y) map))) | 418 (setq value (w3-point-in-map (vector x y) map))) |
524 (if value | 419 (if value |
583 (while todo | 478 (while todo |
584 (setq func (intern (format "w3-preferences-init-%s-panel" (caar todo))) | 479 (setq func (intern (format "w3-preferences-init-%s-panel" (caar todo))) |
585 todo (cdr todo)) | 480 todo (cdr todo)) |
586 (and (fboundp func) (funcall func))))) | 481 (and (fboundp func) (funcall func))))) |
587 | 482 |
588 ;;###autoload | |
589 (defun w3-preferences-edit () | 483 (defun w3-preferences-edit () |
590 (interactive) | 484 (interactive) |
485 (if (not w3-preferences-map) | |
486 (setq w3-preferences-map (w3-preferences-setup-glyph-map))) | |
591 (let* ((prefs-buffer (get-buffer-create "W3 Preferences")) | 487 (let* ((prefs-buffer (get-buffer-create "W3 Preferences")) |
592 (widget nil) | 488 (widget nil) |
593 (inhibit-read-only t) | 489 (inhibit-read-only t) |
594 (window-conf (current-window-configuration))) | 490 (window-conf (current-window-configuration))) |
595 (delete-other-windows) | 491 (delete-other-windows) |
596 (set-buffer prefs-buffer) | 492 (set-buffer prefs-buffer) |
597 (set (make-local-variable 'widget-push-button-gui) nil) | |
598 (w3-preferences-init-all-panels) | 493 (w3-preferences-init-all-panels) |
599 (set-window-buffer (selected-window) prefs-buffer) | 494 (set-window-buffer (selected-window) prefs-buffer) |
600 (make-local-variable 'widget-field-face) | 495 (make-local-variable 'widget-field-face) |
601 (setq w3-preferences-panel-begin-marker (make-marker) | 496 (setq w3-preferences-panel-begin-marker (make-marker) |
602 w3-preferences-panel-end-marker (make-marker)) | 497 w3-preferences-panel-end-marker (make-marker)) |
603 (set-marker-insertion-type w3-preferences-panel-begin-marker nil) | 498 (set-marker-insertion-type w3-preferences-panel-begin-marker nil) |
604 (set-marker-insertion-type w3-preferences-panel-end-marker t) | 499 (set-marker-insertion-type w3-preferences-panel-end-marker t) |
605 (use-local-map widget-keymap) | 500 (use-local-map widget-keymap) |
606 (erase-buffer) | 501 (erase-buffer) |
607 (run-hooks 'w3-preferences-setup-hook) | 502 (run-hooks 'w3-preferences-setup-hook) |
608 (setq widget (apply 'widget-create 'menu-choice | 503 (setq widget (widget-create 'image |
609 :tag "Panel" | 504 :notify 'w3-preferences-notify |
610 :notify 'w3-preferences-notify | 505 :value 'appearance |
611 :value 'appearance | 506 :tag "Panel" |
612 (mapcar | 507 'usemap w3-preferences-map)) |
613 (function | |
614 (lambda (x) | |
615 (list 'choice-item | |
616 :format "%[%t%]" | |
617 :tag (cdr x) | |
618 :value (car x)))) | |
619 w3-preferences-panels))) | |
620 (goto-char (point-max)) | 508 (goto-char (point-max)) |
621 (insert "\n\n") | 509 (insert "\n\n") |
622 (set-marker w3-preferences-panel-begin-marker (point)) | 510 (set-marker w3-preferences-panel-begin-marker (point)) |
623 (set-marker w3-preferences-panel-end-marker (point)) | 511 (set-marker w3-preferences-panel-end-marker (point)) |
624 (w3-preferences-create-panel (caar w3-preferences-panels)) | 512 (w3-preferences-create-panel (caar w3-preferences-panels)) |
625 (goto-char (point-max)) | 513 (goto-char (point-max)) |
626 (widget-insert "\n\n") | 514 (widget-insert "\n\n") |
627 (widget-create 'push-button | 515 (widget-create 'push |
628 :notify 'w3-preferences-ok-callback | 516 :notify 'w3-preferences-ok-callback |
629 :value "Ok") | 517 :value "Ok") |
630 (widget-insert " ") | 518 (widget-insert " ") |
631 (widget-create 'push-button | 519 (widget-create 'push |
632 :notify 'w3-preferences-cancel-callback | 520 :notify 'w3-preferences-cancel-callback |
633 :value "Cancel") | 521 :value "Cancel") |
634 (widget-insert " ") | 522 (widget-insert " ") |
635 (widget-create 'push-button | 523 (widget-create 'push |
636 :notify 'w3-preferences-reset-callback | 524 :notify 'w3-preferences-reset-callback |
637 :value "Reset") | 525 :value "Reset") |
638 (center-region (point-min) w3-preferences-panel-begin-marker) | 526 (center-region (point-min) w3-preferences-panel-begin-marker) |
639 (center-region w3-preferences-panel-end-marker (point-max)))) | 527 (center-region w3-preferences-panel-end-marker (point-max)))) |
640 | 528 |