comparison lisp/w3/w3-forms.el @ 22:8fc7fe29b841 r19-15b94

Import from CVS: tag r19-15b94
author cvs
date Mon, 13 Aug 2007 08:50:29 +0200
parents 859a2309aef8
children 441bb1e64a06
comparison
equal deleted inserted replaced
21:b88636d63495 22:8fc7fe29b841
1 ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine 1 ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine
2 ;; Author: wmperry 2 ;; Author: wmperry
3 ;; Created: 1997/02/09 06:39:43 3 ;; Created: 1997/02/13 23:10:23
4 ;; Version: 1.65 4 ;; Version: 1.70
5 ;; Keywords: faces, help, comm, data, languages 5 ;; Keywords: faces, help, comm, data, languages
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. 9 ;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc.
43 (defvar w3-form-use-old-style nil 43 (defvar w3-form-use-old-style nil
44 "*Non-nil means use the old way of interacting for form fields.") 44 "*Non-nil means use the old way of interacting for form fields.")
45 45
46 (define-widget-keywords :emacspeak-help :w3-form-data) 46 (define-widget-keywords :emacspeak-help :w3-form-data)
47 47
48 (defvar w3-form-keymap (copy-keymap global-map)) 48 (defvar w3-form-keymap
49 (if (and w3-form-keymap widget-keymap) 49 (let ((map (copy-keymap global-map))
50 (cl-map-keymap (function 50 (eol-loc (where-is-internal 'end-of-line nil t)))
51 (lambda (key binding) 51 (if widget-keymap
52 (define-key w3-form-keymap 52 (cl-map-keymap (function
53 (if (vectorp key) key (vector key)) 53 (lambda (key binding)
54 (case binding 54 (define-key map
55 (widget-backward 'w3-widget-backward) 55 (if (vectorp key) key (vector key))
56 (widget-forward 'w3-widget-forward) 56 (case binding
57 (otherwise binding))))) 57 (widget-backward 'w3-widget-backward)
58 widget-keymap)) 58 (widget-forward 'w3-widget-forward)
59 (define-key w3-form-keymap [return] 'w3-form-maybe-submit-by-keypress) 59 (otherwise binding)))))
60 (define-key w3-form-keymap "\r" 'w3-form-maybe-submit-by-keypress) 60 widget-keymap))
61 (define-key w3-form-keymap "\n" 'w3-form-maybe-submit-by-keypress) 61 (define-key map [return] 'w3-form-maybe-submit-by-keypress)
62 (define-key w3-form-keymap "\t" 'w3-widget-forward) 62 (define-key map "\r" 'w3-form-maybe-submit-by-keypress)
63 (define-key w3-form-keymap "\C-k" 'widget-kill-line) 63 (define-key map "\n" 'w3-form-maybe-submit-by-keypress)
64 (define-key w3-form-keymap "\C-a" 'widget-beginning-of-line) 64 (define-key map "\t" 'w3-widget-forward)
65 (define-key w3-form-keymap "\C-e" 'widget-end-of-line) 65 (define-key map "\C-k" 'widget-kill-line)
66 (define-key map "\C-a" 'widget-beginning-of-line)
67 (if eol-loc
68 (define-key map eol-loc 'widget-end-of-line))
69 map))
66 70
67 ;; A form entry area is a vector 71 ;; A form entry area is a vector
68 ;; [ type name default-value value maxlength options widget plist] 72 ;; [ type name default-value value maxlength options widget plist]
69 ;; Where: 73 ;; Where:
70 ;; type = symbol defining what type of form entry area it is 74 ;; type = symbol defining what type of form entry area it is
150 'end-open t 154 'end-open t
151 'rear-nonsticky t))))) 155 'rear-nonsticky t)))))
152 156
153 (defun w3-form-resurrect-widgets () 157 (defun w3-form-resurrect-widgets ()
154 (let ((st (point-min)) 158 (let ((st (point-min))
159 ;; FIXME! For some reason this loses on long lines right now.
160 (widget-push-button-gui nil)
155 info nd node action face) 161 info nd node action face)
156 (while st 162 (while st
157 (if (setq info (get-text-property st 'w3-form-info)) 163 (if (setq info (get-text-property st 'w3-form-info))
158 (progn 164 (progn
159 (setq nd (or (next-single-property-change st 'w3-form-info) 165 (setq nd (or (next-single-property-change st 'w3-form-info)
380 (mapcar 386 (mapcar
381 (function 387 (function
382 (lambda (x) 388 (lambda (x)
383 (list 'choice-item :format "%[%t%]" 389 (list 'choice-item :format "%[%t%]"
384 :emacspeak-help 'w3-form-summarize-field 390 :emacspeak-help 'w3-form-summarize-field
391 :menu-tag-get (` (lambda (zed) (, (car x))))
385 :tag (mule-truncate-string (car x) size ? ) 392 :tag (mule-truncate-string (car x) size ? )
386 :button-face face 393 :button-face face
387 :value-face face 394 :value-face face
388 :value (car x)))) 395 :value (car x))))
389 (w3-form-element-options el))))) 396 (w3-form-element-options el)))))