Mercurial > hg > xemacs-beta
diff lisp/w3/w3-speak.el @ 82:6a378aca36af r20-0b91
Import from CVS: tag r20-0b91
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:07:36 +0200 |
parents | 1ce6082ce73f |
children | 0d2f883870bc |
line wrap: on
line diff
--- a/lisp/w3/w3-speak.el Mon Aug 13 09:06:45 2007 +0200 +++ b/lisp/w3/w3-speak.el Mon Aug 13 09:07:36 2007 +0200 @@ -8,7 +8,8 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Copyright (c) 1996 by T.V. Raman (raman@adobe.com) -;;; Copyright (c) 1996 by William M. Perry (wmperry@spry.com) +;;; Copyright (c) 1996, 1997 by William M. Perry (wmperry@spry.com) +;;; Copyright (c) 1997 Free Software Foundation, Inc. ;;; ;;; This file is not part of GNU Emacs, but the same permissions apply. ;;; @@ -56,157 +57,32 @@ (error (message "Emacspeak not found - speech will not work."))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; How to get information summarizing a form field, so it can be spoken in -;;; a sane manner. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;{{{ putting and getting form field summarizer - -(defsubst w3-speak-define-field-summarizer (type &optional function-name) - "Associate the name of a function that describes this type of form field." - (put type 'w3-speak-summarizer - (or function-name (intern - (format "w3-speak-summarize-%s-field" type))))) - -(defsubst w3-speak-get-field-summarizer (type) - "Retrieve function-name string for this voice" - (get type 'w3-speak-summarizer)) - -;;}}} -;;{{{ Associate summarizer functions for form fields - -(w3-speak-define-field-summarizer 'text) -(w3-speak-define-field-summarizer 'option) -(w3-speak-define-field-summarizer 'checkbox) -(w3-speak-define-field-summarizer 'reset) -(w3-speak-define-field-summarizer 'submit) -(w3-speak-define-field-summarizer 'button) -(w3-speak-define-field-summarizer 'radio) -(w3-speak-define-field-summarizer 'multiline) -(w3-speak-define-field-summarizer 'image) - -;;}}} - - -;;{{{ define the form field summarizer functions - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Now actually define the summarizers -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defsubst w3-speak-extract-form-field-label (data) - ;;; FIXXX!!! Need to reimplement using the new forms implementation! - (declare (special w3-form-labels)) - nil) - -(defun w3-speak-summarize-text-field (data) - "Summarize a text field given the field data." - (let ( - (label (w3-speak-extract-form-field-label data)) - (name (w3-form-element-name data)) - (value (widget-get (w3-form-element-widget data) :value))) - (dtk-speak - (format "Text field %s %s " (or label (concat "called " name)) - (concat "set to " value))))) - -(defun w3-speak-summarize-multiline-field (data) - "Summarize a text field given the field data." - (let ( - (name (w3-form-element-name data)) - (label (w3-speak-extract-form-field-label data)) - (value (w3-form-element-value data))) - (dtk-speak - (format "Multiline text input %s %s" (or label (concat "called " name)) - (concat "set to " value))))) - -(defun w3-speak-summarize-checkbox-field (data) - "Summarize a checkbox field given the field data." - (let ( - (name (w3-form-element-name data)) - (label (w3-speak-extract-form-field-label data)) - (checked (widget-value (w3-form-element-widget data)))) - (dtk-speak - (format "Checkbox %s is %s" (or label name) (if checked "on" "off"))))) - -(defun w3-speak-summarize-option-field (data) - "Summarize a options field given the field data." - (let ( - (name (w3-form-element-name data)) - (label (w3-speak-extract-form-field-label data)) - (default (w3-form-element-default-value data))) - (dtk-speak - (format "Choose an option %s %s" (or label name) - (if (string= "" default) - "" - (format "default is %s" default)))))) - -;;; to handle brain dead nynex forms -(defun w3-speak-summarize-image-field (data) - "Summarize a image field given the field data. -Currently, only the NYNEX server uses this." - (let ( - (name (w3-form-element-name data)) - (label (w3-speak-extract-form-field-label data))) - (dtk-speak - (substring name 1)))) - -(defun w3-speak-summarize-submit-field (data) - "Summarize a submit field given the field data." - (let ( - (type (w3-form-element-type data)) - (label (w3-speak-extract-form-field-label data)) - (button-text (widget-value (w3-form-element-widget data)))) - (message "%s" (or label button-text - (case type - (submit "Submit Form") - (reset "Reset Form") - (button "A Button")))))) - -(defalias 'w3-speak-summarize-reset-field 'w3-speak-summarize-submit-field) -(defalias 'w3-speak-summarize-button-field 'w3-speak-summarize-submit-field) - -(defun w3-speak-summarize-radio-field (data) - "Summarize a radio field given the field data." - (let ( - (name (w3-form-element-name data)) - (label (w3-speak-extract-form-field-label data)) - (checked (widget-value (w3-form-element-widget data)))) - (dtk-speak - (format "Radio button %s is %s" (or label name) (if checked - "pressed" - "not pressed"))))) - -;;}}} - ;;{{{ speaking form fields ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Now for the guts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun w3-speak-extract-form-field-information () - (let* ((widget (widget-at (point))) - (data (and widget (widget-get widget 'w3-form-data)))) - data)) - (defun w3-speak-summarize-form-field () "Summarizes field under point if any." - (let* ((data (w3-speak-extract-form-field-information)) - (type (and data (w3-form-element-type data))) - (summarizer (and type (w3-speak-get-field-summarizer type)))) - (cond - ((and data - summarizer - (fboundp summarizer)) - (funcall summarizer data)) - (data - (message "Please define a summarizer function for %s" type)) - (t nil)))) + (let ((widget (widget-at (point)))) + (and widget (w3-form-summarize-field widget)))) ;;}}} ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Movement notification ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defadvice w3-widget-forward (after emacspeak pre act comp) + (when (interactive-p) + (emacspeak-auditory-icon 'large-movement) + (emacspeak-widget-summarize (emacspeak-widget-at (point ))))) + + +(defadvice w3-widget-backward (after emacspeak pre act comp) + (when (interactive-p) + (emacspeak-auditory-icon 'large-movement) + (emacspeak-widget-summarize (emacspeak-widget-at (point ))))) + (defadvice w3-scroll-up (after emacspeak pre act comp) "Provide auditory feedback" (when (interactive-p)