(FILECREATED "29-Jan-85 14:31:16" {PHYLUM}<NOTECARDS>RELEASE1.1>NCFILECARD.;3 7058   

      changes to:  (VARS NCFILECARDCOMS)
		   (FNS NC.QuitFileSubstance NC.FileCopySubstance NC.EditFileSubstance 
			NC.FileSubstanceDirtyP NC.MarkFileSubstanceDirty)

      previous date: "24-Jan-85 20:17:15" {PHYLUM}<NOTECARDS>RELEASE1.1>NCFILECARD.;1)


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

(PRETTYCOMPRINT NCFILECARDCOMS)

(RPAQQ NCFILECARDCOMS ((FNS NC.CreateFileSubstance NC.EditFileSubstance NC.FileCopySubstance 
			    NC.FileSubstanceDirtyP NC.GetFileSubstance NC.MarkFileSubstanceDirty 
			    NC.PutFileSubstance NC.QuitFileSubstance)))
(DEFINEQ

(NC.CreateFileSubstance
  (LAMBDA NIL                                                (* fgh: "24-Jan-85 19:38")

          (* * Create a file designator)


    (PROG (FileName FullFileName)
          (SETQ FileName (NC.AskUser "Enter file name" ":  " NIL T NIL T NIL))
          (SETQ FullFileName (INFILEP FileName))
          (AND (NOT FullFileName)
	       (NC.YesP (NC.AskUser (CONCAT "Do you want me to create " (FULLNAME FileName
										  (QUOTE NEW)))
				    " ? " "y" T NIL T NIL))
	       (SETQ FullFileName (CLOSEF (OPENFILE FileName (QUOTE NEW)
						    (QUOTE OUTPUT)))))
          (RETURN FullFileName))))

(NC.EditFileSubstance
  (LAMBDA (ID FileDesignator Region/Position)                (* fgh: "29-Jan-85 12:27")

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


    (PROG (Region TEditWindow TEditProcess Title)
          (COND
	    ((AND (SETQ TEditWindow (NC.FetchWindow ID))
		  (SETQ TEditProcess (WINDOWPROP TEditWindow (QUOTE PROCESS))))
	      (TOTOPW TEditWindow)
	      (RPTQ 2 (FLASHW TEditWindow))
	      (TTY.PROCESS TEditProcess)
	      (RETURN TEditWindow)))
          (SETQ Region (COND
	      ((type? REGION Region/Position)
		Region/Position)
	      ((POSITIONP Region/Position)
		(CREATEREGION (fetch XCOORD of Region/Position)
			      (fetch YCOORD of Region/Position)
			      PSA.TEditCardDefaultWidth PSA.TEditCardDefaultHeight))
	      (T (COND
		   ((SETQ Region (NC.FetchRegion ID))
		     (GETBOXREGION (fetch WIDTH of Region)
				   (fetch HEIGHT of Region)
				   (GETMOUSEX)
				   (IDIFFERENCE (GETMOUSEY)
						(fetch HEIGHT of Region))
				   NIL
				   (CONCAT "Please specify location for edit of Note Card " ID)))
		   (T (GETBOXREGION PSA.TEditCardDefaultWidth PSA.TEditCardDefaultHeight (GETMOUSEX)
				    (IDIFFERENCE (GETMOUSEY)
						 PSA.TEditCardDefaultHeight)
				    NIL
				    (CONCAT "Please specify location for edit of Note Card " ID)))))))
          (SETQ Title (NC.FetchTitle ID))
          (SETQ TEditWindow (CREATEW Region Title (NC.DetermineBorderWidth (NC.FetchType ID))
				     T))
          (WINDOWPROP TEditWindow (QUOTE SHRINKFN)
		      (FUNCTION NC.ShrinkFn))
          (WINDOWPROP TEditWindow (QUOTE NoteCardsLeftButtonMenu)
		      (NC.MakeTEditLeftMenu (NC.FetchType ID)))
          (WINDOWPROP TEditWindow (QUOTE NoteCardsMiddleButtonMenu)
		      (NC.MakeTEditMiddleMenu))
          (TEDIT FileDesignator TEditWindow NIL (LIST (QUOTE FONT)
						      NC.DefaultFont
						      (QUOTE TITLEMENUFN)
						      (FUNCTION NC.TEditMenuFn)))
          (RETURN TEditWindow))))

(NC.FileCopySubstance
  (LAMBDA (ID FromStream ToStream)                           (* fgh: "29-Jan-85 13:30")

          (* * Copy file substance from FromStream to ToStream)


    (PROG (EndPtr EndPtrLoc FromStartPtr FromEndPtr)

          (* * Get the FromStream start/end ptrs)


          (SETQ FromStartPtr (NC.GetPtr FromStream))
          (SETQ FromEndPtr (NC.GetPtr FromStream))

          (* * Set up the ToStream start/end ptrs)


          (NC.PutPtr ToStream (IPLUS 6 (GETFILEPTR ToStream)))
          (SETQ NC.EndPtrLoc (GETFILEPTR ToStream))
          (NC.PutPtr ToStream 0)

          (* * Copy the bytes)


          (COPYBYTES FromStream ToStream FromStartPtr FromEndPtr)

          (* * Fix up the ToStream end ptr)


          (SETQ EndPtr (GETFILEPTR ToStream))
          (SETFILEPTR ToStream EndPtrLoc)
          (NC.PutPtr ToStream EndPtr)
          (RETURN T))))

(NC.FileSubstanceDirtyP
  (LAMBDA (ID)                                               (* fgh: "29-Jan-85 12:38")

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


    (PROG (TextStream (Window (NC.FetchWindow ID)))
          (RETURN (AND Window (SETQ TextStream (WINDOWPROP Window (QUOTE TEXTSTREAM)))
		       (TEDIT.STREAMCHANGEDP TextStream))))))

(NC.GetFileSubstance
  (LAMBDA (DatabaseStream)                                   (* fgh: "24-Jan-85 19:07")

          (* * Read the File designator from DatabaseStream)



          (* * Skip the start/end ptrs)


    (NC.GetPtr DatabaseStream 6)

          (* * Read the file name)


    (READ DatabaseStream)))

(NC.MarkFileSubstanceDirty
  (LAMBDA (ID ResetFlg)                                      (* fgh: "29-Jan-85 12:34")

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


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

(NC.PutFileSubstance
  (LAMBDA (ID DatabaseStream)                                (* fgh: "24-Jan-85 19:17")

          (* * Put a file designator onto DatabaseStream)


    (PROG (StartPtr EndPtr EndPtrLoc)
          (SETQ StartPtr (IPLUS (GETFILEPTR DatabaseStream)
				6))
          (NC.PutPtr DatabaseStream StartPtr)
          (SETQ EndPtrLoc (GETFILEPTR DatabaseStream))
          (NC.PutPtr DatabaseStream 0)
          (PRINT (NC.FetchSubstance ID))
          (SETQ EndPtr (GETFILEPTR DatabaseStream))
          (SETFILEPTR DatabaseStream EndPtrLoc)
          (NC.PutPtr DatabaseStream EndPtr))))

(NC.QuitFileSubstance
  (LAMBDA (WindowOrTextStreamOrID)                           (* fgh: "29-Jan-85 14:13")
    (PROG (Window (ID (NC.CoerceToID WindowOrTextStreamOrID)))
          (SETQ Window (NC.FetchWindow ID))
          (COND
	    (Window (WINDOWDELPROP Window (QUOTE CLOSEFN)
				   (FUNCTION NC.QuitCard))
		    (TEDIT.QUIT (WINDOWPROP Window (QUOTE DSP))))))))
)
(PUTPROPS NCFILECARD COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (677 6977 (NC.CreateFileSubstance 687 . 1394) (NC.EditFileSubstance 1396 . 3715) (
NC.FileCopySubstance 3717 . 4678) (NC.FileSubstanceDirtyP 4680 . 5085) (NC.GetFileSubstance 5087 . 
5425) (NC.MarkFileSubstanceDirty 5427 . 5890) (NC.PutFileSubstance 5892 . 6551) (NC.QuitFileSubstance 
6553 . 6975)))))
STOP