diff lisp/dialog.el @ 2730:7031e143e4ee

[xemacs-hg @ 2005-04-14 05:58:45 by michaels] 2005-04-12 Mike Sperber <mike@xemacs.org> * minibuf.el (get-user-response): Move here from dialog.el so it works even when dialogs are not available. * dialog.el: See above.
author michaels
date Thu, 14 Apr 2005 05:58:46 +0000
parents bcb5d65d0d94
children fbafdc1bb4d2 308d34e9f07d
line wrap: on
line diff
--- a/lisp/dialog.el	Wed Apr 13 21:51:24 2005 +0000
+++ b/lisp/dialog.el	Thu Apr 14 05:58:46 2005 +0000
@@ -92,116 +92,6 @@
 				 `[,(car x) (dialog-box-finish ',(cdr x)) t])))
 			   (cdr contents))))
 
-(defun get-user-response (position question answers)
-  "Ask a question and get a response from the user, in minibuffer or dialog box.
-POSITION specifies which frame to use.
-This is normally an event or a window or frame.
-If POSITION is t or nil, it means to use the frame the mouse is on.
-The dialog box appears in the middle of the specified frame.
-
-QUESTION is the question to ask (it should end with a question mark followed
-by a space).
-
-ANSWERS are the possible answers.  It is a list; each item looks like
-
-  (KEY BUTTON-TEXT RESPONSE)
-
-where KEY is the key to be pressed in the minibuffer, BUTTON-TEXT is the
-text to be displayed in a dialog box button (you should put %_ in it to
-indicate the accelerator), and RESPONSE is a value (typically a symbol)
-to be returned if the user selects this response.  KEY should be either a
-single character or a string; which one you use needs to be consistent for
-all responses and determines whether the user responds by hitting a single
-key or typing in a string and hitting ENTER.
-
-An item may also be just a string--that makes a nonselectable item in the
-dialog box and is ignored in the minibuffer.
-
-An item may also be nil -- that means to put all preceding items
-on the left of the dialog box and all following items on the right; ignored
-in the minibuffer."
-  (if (should-use-dialog-box-p)
-      (get-dialog-box-response
-       position
-       (cons question
-	     (mapcar #'(lambda (x)
-			 (cond
-			  ((null x) nil)
-			  ((stringp x) x)
-			  (t (cons (second x) (third x)))))
-		     answers)))
-    (save-excursion
-      (let* ((answers (remove-if-not #'consp answers))
-	     (possible
-	      (gettext
-	       (flet ((car-to-string-if (x)
-			(setq x (car x))
-			(if (stringp x)  x (char-to-string x))))
-		 (concat (mapconcat #'car-to-string-if
-			   (butlast answers) ", ") " or "
-			   (car-to-string-if (car (last answers)))))))
-	     (question (gettext question))
-	     (p (format "%s(%s) " question possible)))
-	(block nil
-	  (if (stringp (caar answers))
-	      ;; based on yes-or-no-p.
-	      (while t
-		(let* ((ans (downcase (read-string p nil t))) ;no history
-		       (res (member* ans answers :test #'equal :key #'car)))
-		  (if res (return (third (car res)))
-		    (ding nil 'yes-or-no-p)
-		    (discard-input)
-		    (message "Please answer %s." possible)
-		    (sleep-for 2))))
-	    ;; based on y-or-n-p.
-	    (save-excursion
-	      (let* ((pre "") event)
-		(while t
-		  (if (let ((cursor-in-echo-area t)
-			    (inhibit-quit t))
-			(message "%s%s(%s) " pre question possible)
-			(setq event (next-command-event event))
-			(condition-case nil
-			    (prog1
-				(or quit-flag (eq 'keyboard-quit
-						  (key-binding event)))
-			      (setq quit-flag nil))
-			  (wrong-type-argument t)))
-		      (progn
-			(message "%s%s(%s) %s" pre question possible
-				 (single-key-description event))
-			(setq quit-flag nil)
-			(signal 'quit '())))
-		  (let* ((keys (events-to-keys (vector event)))
-			 (def (lookup-key query-replace-map keys)))
-		    (cond
-; 		     ((eq def 'skip)
-; 		      (message "%s%sNo" question possible)
-; 		      (return nil))
-; 		     ((eq def 'act)
-; 		      (message "%s%sYes" question possible)
-; 		      (return t))
-		     ((eq def 'recenter)
-		      (recenter))
-		     ((or (eq def 'quit) (eq def 'exit-prefix))
-		      (signal 'quit '()))
-		     ((button-release-event-p event) ; ignore them
-		      nil)
-		     (t
-		      (let ((res (member* (event-to-character event) answers
-					  :key #'car)))
-			(if res (return (third (car res)))
-			  (message "%s%s(%s) %s" pre question possible
-				   (single-key-description event))
-			  (ding nil 'y-or-n-p)
-			  (discard-input)
-			  (if (= (length pre) 0)
-			      (setq pre (format "Please answer %s.  "
-						;; 17 parens!  a record in
-						;; our lisp code.
-						possible)))))))))))))))))
-
-
 (defun message-box (fmt &rest args)
   "Display a message, in a dialog box if possible.
 If the selected device has no dialog-box support, use the echo area.