(FILECREATED "29-Apr-87 16:38:33" {QV}<NOTECARDS>1.3K>LIBRARY>NCFILECARD.;17 17316  

      changes to:  (FNS NC.GetFileFromUser NC.MakeFileCardCore NC.EditFileSubstance)

      previous date: " 5-Apr-87 20:48:54" {QV}<NOTECARDS>1.3K>LIBRARY>NCFILECARD.;16)


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

(PRETTYCOMPRINT NCFILECARDCOMS)

(RPAQQ NCFILECARDCOMS ((* * Globalvars from elsewhere)
			 (GLOBALVARS NC.DefaultFont TEDIT.DEFAULT.MENU NC.FileCardIcon)
			 (* * Substance functions)
			 (FNS NC.MakeFileCard NC.EditFileSubstance NC.FileSubstanceDirtyP 
			      NC.GetFileSubstance NC.MarkFileSubstanceDirty NC.PutFileSubstance 
			      NC.QuitFileSubstance NC.FileCardPutFile)
			 (* * Utilities)
			 (FNS NC.FileCardFileVersionNumber NC.FileCardTitle NC.FetchTextStream 
			      NC.GetFileFromUser NC.MakeFileCardCore NC.SetTextStream 
			      NC.FileCardShrinkFn)
			 (BITMAPS NC.FileCardIcon)
			 (* * Add file card type to CardTypes list)
			 (FNS NC.AddFileCardType)
			 (P (NC.AddFileCardType))
			 (* * Hang an ExportSubstanceFn off the File litatom.)
			 (P (PUTPROP (QUOTE File)
				     (QUOTE ExportSubstanceFn)
				     (FUNCTION OPENTEXTSTREAM)))
			 (FNS NCAddStub.FileCard)))
(* * Globalvars from elsewhere)

(DECLARE: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS NC.DefaultFont TEDIT.DEFAULT.MENU NC.FileCardIcon)
)
(* * Substance functions)

(DEFINEQ

(NC.MakeFileCard
  (LAMBDA (Card Title NoDisplayFlg)                          (* fgh: " 1-Jun-86 16:28")

          (* * Make a new card of type File -- ERSETQ around Core procedure here!)


    (LET (ReturnValue)
         (COND
	   ((AND (ERSETQ (SETQ ReturnValue (NC.MakeFileCardCore Card Title NoDisplayFlg)))
		   ReturnValue))
	   (T (AND (OPENWP (NC.FetchWindow Card))
		     (CLOSEW (NC.FetchWindow Card)))
	      NIL)))))

(NC.EditFileSubstance
  (LAMBDA (Card FileDesignator RegionOrPosition)             (* rht: "29-Apr-87 16:32")

          (* * Bring up a TEdit window for Card ID whose substance is specified by file designator in Region specified by 
	  RegionOrPosition or by the user.)



          (* * fgh 12/17/85 Updated for 1.3 and multiple open NFs)



          (* * fgh 6/1/86 Updated with new title bar menu scheme)



          (* * rht 11/16/86: Now moves window to RegionOrPosition if already up.)



          (* * rht 4/29/87: Changed to match NC.BringUpTEditCard.)


    (PROG (Region TEditWindow TEditProcess Title NewFileName Type TextStream)
	    (if (SETQ TEditWindow (NC.FetchWindow Card))
		then (TOTOPW TEditWindow)
		       (if RegionOrPosition
			   then (SHAPEW TEditWindow (NC.DetermineDisplayRegion Card 
										 RegionOrPosition)))
		       (RPTQ 2 (FLASHW TEditWindow))
		       (if (SETQ TEditProcess (WINDOWPROP TEditWindow (QUOTE PROCESS)))
			   then (TTY.PROCESS TEditProcess)
			 else                              (* Process may have been turned off.
							     Try to restart.)
				(SETQ TEditProcess (RESTART-PROCESS-OF-TEDIT-WINDOW TEditWindow)))
		       (RETURN TEditWindow))
	    (SETQ Region (NC.DetermineDisplayRegion Card RegionOrPosition))
	    (SETQ Title (NC.RetrieveTitle Card))
	    (SETQ Type (NC.RetrieveType Card))
	    (SETQ TEditWindow (CREATEW Region Title NIL T))
                                                             (* Make a prompt window "invisibly" so it gets hooked 
							     in.)
	    (NC.AttachPromptWindowOffScreen TEditWindow)
	    (WINDOWADDPROP TEditWindow (QUOTE SHRINKFN)
			     (FUNCTION NC.FileCardShrinkFn))
	    (NC.InstallTitleBarLeftMenu TEditWindow Type)
	    (NC.InstallTextTitleBarMiddleMenu TEditWindow Type)
	    (COND
	      ((NULL (INFILEP FileDesignator))
		(NC.PrintMsg TEditWindow T FileDesignator " is no longer a file." (CHARACTER
				 13))
		(COND
		  ((NC.YesP (NC.AskUser "Do you want to create the file?" " -- " "Yes" NIL 
					    TEditWindow NIL NIL T))
		    (CLOSEF (PROG1 (SETQ FileDesignator (OPENSTREAM FileDesignator
									    (QUOTE OUTPUT)
									    (QUOTE NEW)))
				       (BOUT FileDesignator 32))))
		  ((NC.YesP (NC.AskUser "Do you want to respecify the file name?" " -- " "Yes" 
					    NIL TEditWindow NIL NIL T))
		    (SETQ FileDesignator (NC.GetFileFromUser TEditWindow T))
		    (NC.SetSubstance Card FileDesignator)
		    (NC.MarkCardDirty Card)
		    (NC.SetTitle Card (NC.FileCardTitle Card))
		    (NC.SetTitleDirtyFlg Card T)
		    (WINDOWPROP TEditWindow (QUOTE TITLE)
				  (NC.SetTitle Card (NC.FileCardTitle Card)))
		    (NC.PutProp Card (QUOTE FileName)
				  FileDesignator))
		  (T (CLOSEW TEditWindow)
		     (RETURN NIL)))))
	    (TEDIT FileDesignator TEditWindow NIL (NC.MakeTEditPropsList TEditWindow T
									     (fetch (Card NoteFile)
										of Card)))
	    (NC.SetTextStream Card (SETQ TextStream (WINDOWPROP TEditWindow (QUOTE TEXTSTREAM)
								      )))
	    (STREAMPROP TextStream (QUOTE NoteCardObject)
			  Card)
	    (NC.PutProp Card (QUOTE FileVersion)
			  (NC.FileCardFileVersionNumber Card))
	    (RETURN TEditWindow))))

(NC.FileSubstanceDirtyP
  (LAMBDA (Card)                                             (* fgh: "17-Dec-85 18:23")

          (* * Return T is TextSubstance has been changed.)



          (* * fgh 12/17/85 Updated for 1.3)


    (LET (TextStream)
         (AND (SETQ TextStream (NC.FetchTextStream Card))
		(TEDIT.STREAMCHANGEDP TextStream)))))

(NC.GetFileSubstance
  (LAMBDA (Card Length Stream VersionNumber)                 (* fgh: " 3-Jun-86 15:45")

          (* * Read the File designator from DatabaseStream)



          (* * fgh 12/17/85 Updated for 1.3)



          (* * fgh 6/3/86 Added Stream and VersionNumber args and made READ from Stream.)


    (READ Stream)))

(NC.MarkFileSubstanceDirty
  (LAMBDA (Card ResetFlg)                                    (* fgh: "17-Dec-85 18:24")

          (* * Mark or unmark TextStream of File being changed.)



          (* * fgh 12/17/85 Updated for 1.3)


    (LET (TextObj (Window (NC.FetchWindow Card)))
         (AND Window (SETQ TextObj (WINDOWPROP Window (QUOTE TEXTOBJ)))
		(replace (TEXTOBJ \DIRTY) of TextObj with (COND
								    (ResetFlg NIL)
								    (T T)))))))

(NC.PutFileSubstance
  (LAMBDA (Card Stream)                                      (* fgh: " 3-Jun-86 15:45")

          (* * Put a file designator onto DatabaseStream)



          (* * fgh 12/17/85 Updated for 1.3)



          (* * Save the file for this file card)



          (* * fgh 2/6/86 Now returns a version number.)


    (NC.FileCardPutFile Card Stream)

          (* * Save the file card stuff in the NoteFile)


    (PRINT (NC.FetchSubstance Card)
	     Stream)
    0))

(NC.QuitFileSubstance
  (LAMBDA (WindowOrTextStreamOrCard)                         (* rht: "16-Oct-86 16:59")

          (* * fgh 12/17/85 Updated for 1.3)



          (* * rht 10/16/86: Removed call to NC.DeactivateCard.)


    (LET (Window PromptWindow TextStream TextStreamChanged (Card (NC.CoerceToCard 
									 WindowOrTextStreamOrCard)))
         (SETQ TextStream (NC.FetchTextStream Card))
         (SETQ Window (NC.FetchWindow Card))
         (COND
	   (Window (WINDOWDELPROP Window (QUOTE CLOSEFN)
				    (FUNCTION NC.QuitCard))
		   (TEDIT.QUIT TextStream)
		   (AND (SETQ PromptWindow (fetch (TEXTOBJ PROMPTWINDOW) of (TEXTOBJ
											TextStream)))
			  (CLOSEW PromptWindow))))
         (NC.SetTextStream Card NIL))))

(NC.FileCardPutFile
  (LAMBDA (WindowOrCard DatabaseStream QuittingFlg)          (* fgh: "17-Dec-85 20:06")

          (* * Do the work to save a file card. That is you must put the file if its changed as well as write thee notecard 
	  info to the NoteFile)



          (* * fgh 12/17/85 Updated for 1.3)


    (LET (Window TextStream (Card (NC.CoerceToCard WindowOrCard)))
         (SETQ TextStream (NC.FetchTextStream Card))
         (if (AND TextStream (TEDIT.STREAMCHANGEDP TextStream))
	     then (TEDIT.PUT TextStream (NC.FetchSubstance Card))
		    (AND (SETQ Window (NC.FetchWindow Card))
			   (WINDOWPROP Window (QUOTE TITLE)
					 (NC.FileCardTitle Card)))
		    (NC.PutProp Card (QUOTE FileVersion)
				  (NC.FileCardFileVersionNumber Card))))))
)
(* * Utilities)

(DEFINEQ

(NC.FileCardFileVersionNumber
  (LAMBDA (Card)                                             (* fgh: "17-Dec-85 18:17")

          (* * Return the current version number of the file reffered to by the file card ID)



          (* * fgh 12/17/85 Updated for 1.3)


    (FILENAMEFIELD (FULLNAME (fetch (TEXTOBJ TXTFILE) of (TEXTOBJ (NC.FetchTextStream
										Card))))
		     (QUOTE VERSION))))

(NC.FileCardTitle
  [LAMBDA (Card)                                             (* rht: "25-Mar-87 15:40")

          (* * Determine the title for file card ID)



          (* * fgh 12/17/85 Updated for 1.3 and multiple open NoteFiles.)


    (LET ((FileName (NC.FetchSubstance Card)))
         (CONCAT (FILENAMEFIELD FileName (QUOTE NAME))
		   "."
		   (OR (FILENAMEFIELD FileName (QUOTE EXTENSION))
			 ""])

(NC.FetchTextStream
  (LAMBDA (Card)                                             (* fgh: "17-Dec-85 19:32")

          (* * fgh 12/17/85 Updated for 1.3)


    (NC.FetchUserDataProp Card (QUOTE NoteCardTextStream))))

(NC.GetFileFromUser
  (LAMBDA (Window DontClearPromptFlg FirstTry)               (* rht: "29-Apr-87 15:00")

          (* * Create a file designator)



          (* * rht 3/25/87: Changed to call NC.AskYesOrNo.)



          (* * rht 4/29/87: Removed call to NC.YesP.)


    (LET (FileName FullFileName)
         (SETQ FileName (NC.AskUser "Enter file name" ":  " FirstTry (NULL DontClearPromptFlg)
					Window T NIL T))
         (PROG1 (COND
		    ((SETQ FullFileName (INFILEP FileName))
		      (PACKFILENAME (QUOTE VERSION)
				      NIL
				      (QUOTE BODY)
				      FullFileName))
		    ((NULL (SETQ FullFileName (FULLNAME FileName (QUOTE NEW))))
		      (NC.PrintMsg Window T FileName " is not a legal file name." (CHARACTER
				       13)
				     "Please try again."
				     (CHARACTER 13))
		      (NC.GetFileFromUser Window T))
		    ((NC.AskYesOrNo (CONCAT "Do you want me to create " FullFileName)
				      " ? " "Yes" T Window NIL NIL T)
		      (PACKFILENAME (QUOTE VERSION)
				      NIL
				      (QUOTE BODY)
				      (CLOSEF (PROG1 (SETQ FileName (OPENSTREAM FileName
											(QUOTE
											  OUTPUT)
											(QUOTE
											  NEW)))
							 (BOUT FileName 32)))))
		    ((NC.YesP (NC.AskYesOrNo "Do you want to specify another file name?" " -- " 
						 "No"
						 T Window NIL NIL T))
		      (NC.GetFileFromUser Window DontClearPromptFlg FirstTry))
		    (T NIL))
		  (NC.ClearMsg Window T)))))

(NC.MakeFileCardCore
  (LAMBDA (Card Title NoDisplayFlg)                          (* rht: "29-Apr-87 16:27")

          (* * Make a new card of type File -- Core procedure)



          (* * fgh 12/17/85 Updated for 1.3 multiple open NF changes)



          (* * fgh 6/1/86 Updated with new title bar menu scheme)



          (* * rht 3/25/87: Cleaned up lots of outdated cruftiness.)



          (* * rht 4/29/87: Changed to match NC.MakeTEditCard.)


    (LET (FileName TextStream)
         (if (NOT NoDisplayFlg)
	     then (LET ((Window (NC.MakeNewCardWindow Card (OR Title "Creating File card ...")
							  NIL T))
			  (Type (NC.RetrieveType Card)))   (* Make a prompt window "invisibly" so it gets hooked 
							     in.)
		         (NC.AttachPromptWindowOffScreen Window)
		         (NC.InstallTitleBarLeftMenu Window Type)
		         (NC.InstallTextTitleBarMiddleMenu Window Type)
		         (WINDOWADDPROP Window (QUOTE SHRINKFN)
					  (FUNCTION NC.FileCardShrinkFn))
		         (TEDIT NIL Window NIL (NC.MakeTEditPropsList Window T
									  (fetch (Card NoteFile)
									     of Card)))
		         (until (SETQ TextStream (NC.SetTextStream Card (WINDOWPROP
									   Window
									   (QUOTE TEXTSTREAM))))
			    do (BLOCK))
		         (STREAMPROP TextStream (QUOTE NoteCardObject)
				       Card)
		         (if (SETQ FileName (NC.GetFileFromUser Window))
			     then (TEDIT.INCLUDE (TEXTOBJ TextStream)
						     FileName)
				    (NC.SetSubstance Card FileName)
				    (WINDOWPROP Window (QUOTE TITLE)
						  (NC.SetTitle Card (NC.FileCardTitle Card)))
				    (NC.PutProp Card (QUOTE FileName)
						  FileName)
				    (NC.PutProp Card (QUOTE FileVersion)
						  (NC.FileCardFileVersionNumber Card))
				    (GIVE.TTY.PROCESS Window)
				    Window
			   else (NC.DeleteNoteCard Card NIL T)
				  NIL))
	   else (SETQ FileName (NC.GetFileFromUser))
		  (NC.SetSubstance Card FileName)
		  (NC.SetTitle Card (NC.FileCardTitle Card))
		  Card))))

(NC.SetTextStream
  (LAMBDA (Card TextStream)                                  (* fgh: "17-Dec-85 19:30")

          (* * fgh 12/17/85 Updated for 1.3)


    (NC.SetUserDataProp Card (QUOTE NoteCardTextStream)
			  TextStream)
    TextStream))

(NC.FileCardShrinkFn
  (LAMBDA (W)                                                (* fgh: "17-Dec-85 18:32")

          (* * This is in order to get the right title on the TEdit icon. This is a kludgy finesse around TEdit's shrunken 
	  icon title facility.)


    (PROG ((OldIconTitle (WINDOWPROP W (QUOTE NoteCardsIconTitle)))
	     (Icon (WINDOWPROP W (QUOTE ICON)))
	     (Card (NC.CoerceToCard W))
	     IconTitle)
	    (COND
	      ((NULL Icon)
		(APPLY* (WINDOWPROP W (QUOTE ICONFN))
			  W)
		(SETQ Icon (WINDOWPROP W (QUOTE ICON)))))
	    (COND
	      ((NOT (EQUAL OldIconTitle (SETQ IconTitle (CONCAT "File Card" (CHARACTER
									  13)
									"NC: "
									(NC.FetchTitle Card)))))
		(ICONTITLE IconTitle NIL NIL Icon)
		(WINDOWPROP W (QUOTE NoteCardsIconTitle)
			      IconTitle))))))
)

(RPAQ NC.FileCardIcon (READBITMAP))
(21 18
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"H@@@@H@@"
"H@@@@H@@"
"KMBANH@@"
"JABA@H@@"
"JABA@H@@"
"JABA@H@@"
"KIBALH@@"
"JABA@H@@"
"JABA@H@@"
"JABA@H@@"
"JACMNH@@"
"H@@@@H@@"
"H@@@@H@@"
"OOOOOH@@")
(* * Add file card type to CardTypes list)

(DEFINEQ

(NC.AddFileCardType
  (LAMBDA NIL                                                (* rht: " 5-Sep-86 17:49")

          (* * Add a file card type to the card types list)


    (NC.AddCardType (QUOTE File)
		      (QUOTE NoteCard)
		      (BQUOTE ((MakeFn , (FUNCTION NC.MakeFileCard))
				 (EditFn , (FUNCTION NC.EditFileSubstance))
				 (QuitFn , (FUNCTION NC.QuitFileSubstance))
				 (GetFn , (FUNCTION NC.GetFileSubstance))
				 (PutFn , (FUNCTION NC.PutFileSubstance))
				 (MarkDirtyFn , (FUNCTION NC.MarkFileSubstanceDirty))
				 (DirtyPFn , (FUNCTION NC.FileSubstanceDirtyP))))
		      (BQUOTE ((DefaultWidth 350)
				 (DefaultHeight 500)
				 (LinkAnchorModesSupported , (QUOTE Global))
				 (DisplayedInMenuFlg T)
				 (MiddleButtonMenuItems
				   ,
				   (for Item in (fetch (MENU ITEMS) of TEDIT.DEFAULT.MENU)
				      collect (if (EQ Item (QUOTE Quit))
						    then (QUOTE (Quit (FUNCTION NC.QuitCard)
									  
					  "Close this note card after saving it in the NoteFile."))
						  else Item)))
				 (LinkIconAttachedBitMap , NC.FileCardIcon))))))
)
(NC.AddFileCardType)
(* * Hang an ExportSubstanceFn off the File litatom.)

(PUTPROP (QUOTE File)
	 (QUOTE ExportSubstanceFn)
	 (FUNCTION OPENTEXTSTREAM))
(DEFINEQ

(NCAddStub.FileCard
  (LAMBDA NIL                                                (* rht: " 8-Nov-86 19:25")

          (* * kirk 18Jun86 Add the text card stub)



          (* * rht 11/8/86: Now specifies bitmap.)


    (DECLARE (GLOBALVARS NC.FileCardIcon))
    (NC.AddCardTypeStub (QUOTE File)
			  (QUOTE NoteCard)
			  (QUOTE NCFILECARD)
			  NIL
			  (BQUOTE ((DisplayedInMenuFlg T)
				     (LinkIconAttachedBitMap , NC.FileCardIcon))))))
)
(PUTPROPS NCFILECARD COPYRIGHT ("Xerox Corporation" 1985 1986 1987))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1416 8916 (NC.MakeFileCard 1426 . 1907) (NC.EditFileSubstance 1909 . 5463) (
NC.FileSubstanceDirtyP 5465 . 5839) (NC.GetFileSubstance 5841 . 6198) (NC.MarkFileSubstanceDirty 6200
 . 6709) (NC.PutFileSubstance 6711 . 7235) (NC.QuitFileSubstance 7237 . 8061) (NC.FileCardPutFile 8063
 . 8914)) (8939 15074 (NC.FileCardFileVersionNumber 8949 . 9390) (NC.FileCardTitle 9392 . 9846) (
NC.FetchTextStream 9848 . 10084) (NC.GetFileFromUser 10086 . 11676) (NC.MakeFileCardCore 11678 . 13894
) (NC.SetTextStream 13896 . 14159) (NC.FileCardShrinkFn 14161 . 15072)) (15367 16563 (
NC.AddFileCardType 15377 . 16561)) (16724 17225 (NCAddStub.FileCard 16734 . 17223)))))
STOP