(FILECREATED "19-Dec-85 17:17:28" {QV}<NOTECARDS>1.3K>FGHPATCH009.;2 4818   

      changes to:  (VARS FGHPATCH009COMS)
		   (FNS NC.YesP NC.AskYesOrNo NC.AskUser)

      previous date: "19-Dec-85 00:57:50" {QV}<NOTECARDS>1.3K>FGHPATCH009.;1)


(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT FGHPATCH009COMS)

(RPAQQ FGHPATCH009COMS ((* * Redefined from NCUTILTIES)
			  (FNS NC.YesP NC.AskUser)
			  (* * New for NCUTILTIES)
			  (FNS NC.AskYesOrNo)))
(* * Redefined from NCUTILTIES)

(DEFINEQ

(NC.YesP
  (LAMBDA (Answer)                                           (* fgh: "19-Dec-85 17:03")

          (* * Is Answer a "yes" ?)


    (if (FMEMB (MKATOM Answer)
		   (QUOTE (Yes Y y YES yes)))
	then T)))

(NC.AskUser
  (LAMBDA (Msg Prompt FirstTry ClearFirstFlg MainWindow DontCloseAtEndFlg DontClearAtEndFlg 
	       PROMPTFORWORDFlg)                             (* fgh: "19-Dec-85 00:46")
                                                             (* Get a response from the user -
							     using the promptwindow attached to MainWindow)

          (* * rht 9/16/84: Added DontClearAtEndFlg which if non-nil prevents the call to NC.ClearMsg.)



          (* * rht 5/22/85: Now uses TTYIN instead of PROMPTFORWORD so that people can edit their answer.)



          (* * rht 5/30/85: Added PROMPTFORWORDFlg so callers doing yes/no questions can get old style PROMPTFORWORD 
	  functionality.)



          (* * rht 8/6/85: Wrapped TTYIN with NLSETQ so wouldn't break if CR inadvertantly inserted in string.)


    (LET (AskWindow)
         (SETQ AskWindow (NC.PrintMsg MainWindow ClearFirstFlg Msg))
         (TTY.PROCESS (THIS.PROCESS))
         (PROG1 (if PROMPTFORWORDFlg
		      then (PROMPTFORWORD Prompt FirstTry 
					      "To type a ?, type CTRL-V followed by a ?."
					      AskWindow NIL NIL (CHARCODE (EOL)))
		    else (RESETFORM (TTYDISPLAYSTREAM AskWindow)
					(CAR (NLSETQ (TTYIN (MKLIST (OR Prompt ""))
								  NIL NIL (QUOTE (STRING NORAISE))
								  NIL NIL (AND FirstTry
										 (LIST FirstTry)))))
					))

          (* * Setting the PromptWindow PROCESS to NIL is to break a circularity caused by TEXTOBJ -> PROMPTWINDOW -> PROCESS
	  -> TEXTSTREAM -> TEXTOBJ)


		  (WINDOWPROP AskWindow (QUOTE PROCESS)
				NIL)
		  (OR DontClearAtEndFlg (NC.ClearMsg MainWindow (NULL DontCloseAtEndFlg)))))))
)
(* * New for NCUTILTIES)

(DEFINEQ

(NC.AskYesOrNo
  (LAMBDA (Msg Prompt FirstTry ClearFirstFlg MainWindow DontCloseAtEndFlg DontClearAtEndFlg)
                                                             (* fgh: "19-Dec-85 17:01")

          (* * Get a Yes or No response from the user via keyboard or mouse. Return T if Yes answer and NIL otherwise.)


    (LET (Menu MenuWindow PromptWin)

          (* * Determine and open the prompt window if necessary)


         (COND
	   ((NOT (WINDOWP MainWindow))
	     (SETQ PromptWin PROMPTWINDOW))
	   ((NC.CoerceToCard MainWindow)
	     (SETQ PromptWin (GETPROMPTWINDOW MainWindow 5 (FONTCREATE (QUOTE HELVETICA)
									     10)))
	     (NC.MoveWindowOntoScreen MainWindow))
	   (T (SETQ PromptWin MainWindow)))

          (* * Attach a yes/no menu to the prompt window)


         (SETQ MenuWindow (ATTACHMENU (SETQ Menu (create
					      MENU
					      ITEMS ←(QUOTE (Yes No))
					      WHENSELECTEDFN ←(FUNCTION (LAMBDA (Item Menu Button)
						  (TTY.PROCESS (WINDOWPROP (MAINWINDOW
										 (WFROMMENU Menu))
									       (QUOTE PROCESS)))
						  (BKSYSBUF (CONCAT Item (CHARACTER 13)))))
					      MENUFONT ←(FONTCREATE (QUOTE HELVETICA)
								      14
								      (QUOTE BOLD))
					      MENUBORDERSIZE ← 1
					      ITEMHEIGHT ← 20
					      ITEMWIDTH ←(TIMES 2 (STRINGWIDTH
								    "Yes"
								    (FONTCREATE (QUOTE HELVETICA)
										  14
										  (QUOTE BOLD))))))
					  PromptWin
					  (COND
					    ((EQ PromptWin PROMPTWINDOW)
					      (QUOTE BOTTOM))
					    (T (QUOTE TOP)))
					  (QUOTE LEFT)))

          (* * print msg in prompt window and wait for user repsonse)


         (NC.YesP (PROG1 (NC.AskUser Msg Prompt FirstTry ClearFirstFlg MainWindow T 
					   DontClearAtEndFlg T)
			     (DELETEMENU Menu T)
			     (DETACHWINDOW MenuWindow)
			     (if (OR DontCloseAtEndFlg (EQ PromptWin PROMPTWINDOW))
			       else (CLOSEW PromptWin)))))))
)
(PUTPROPS FGHPATCH009 COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (537 2563 (NC.YesP 547 . 788) (NC.AskUser 790 . 2561)) (2595 4736 (NC.AskYesOrNo 2605 . 
4734)))))
STOP