(FILECREATED " 5-Apr-86 17:44:48" {QV}<NOTECARDS>1.3K>RHTPATCH037.;1 11966  

      changes to:  (VARS RHTPATCH037COMS)
		   (FNS NC.BringUpBrowserCard))


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

(PRETTYCOMPRINT RHTPATCH037COMS)

(RPAQQ RHTPATCH037COMS ((* * Changes to NCCONVERTVERSION2TO3)
			  (FNS NC.ConvertVersion2BrowserCard)
			  (* * Changes to NCBROWSERCARD)
			  (FNS NC.BringUpBrowserCard NC.MakeLinksLegendMenu)))
(* * Changes to NCCONVERTVERSION2TO3)

(DEFINEQ

(NC.ConvertVersion2BrowserCard
  (LAMBDA (Card Version2HashArray)                           (* rht: " 5-Apr-86 16:15")

          (* * Fix the browser roots and graphnode IDs to be version 3 -
	  this is just modified version of the code in NCMERGEFILES that processes browser cards.)



          (* * rht 4/5/86: Now removes NODEID and DESTNODEID fields from LinkParams of TOLINKS of graphnodes.
	  This effectively converts multiple links between pairs of nodes into single links. Thus, users will have to 
	  ReconnectNodesInBrowser in order to recover the multiple links they had in 1.2.)

                                                             (* Get various stuff off browser's prop list.)
    (NC.SetBrowserLinkLabels Card (CAR (NC.GetProp Card (QUOTE BrowserLinkLabels))))
    (NC.RemProp Card (QUOTE BrowserLinkLabels))
    (NC.SetBrowserLinksLegend Card (CAR (NC.GetProp Card (QUOTE BrowserLinksLegend))))
    (NC.RemProp Card (QUOTE BrowserLinksLegend))
    (NC.SetBrowserDepth Card (NC.GetProp Card (QUOTE BrowserDepth)))
    (NC.RemProp Card (QUOTE BrowserDepth))
    (NC.SetBrowserFormat Card (CAR (NC.GetProp Card (QUOTE BrowserFormat))))
    (NC.RemProp Card (QUOTE BrowserFormat))
    (NC.SetSpecialBrowserSpecs Card (CAR (NC.GetProp Card (QUOTE SpecialBrowserSpecs))))
    (NC.RemProp Card (QUOTE SpecialBrowserSpecs))        (* Fix up browser roots)
    (NC.SetBrowserRoots Card (for BrowserRootID in (CAR (NC.GetProp Card (QUOTE 
										     BrowserRoots)))
				  collect (NC.Version3CardFromVersion2ID BrowserRootID 
									     Version2HashArray)))
                                                             (* Throw away old browser roots.)
    (NC.RemProp Card (QUOTE BrowserRoots))

          (* * Fix up graph nodeids)


    (for GraphNode in (fetch (GRAPH GRAPHNODES) of (NC.FetchSubstance Card))
       do (replace (GRAPHNODE NODEID) of GraphNode with (NC.ConvertVersion2GraphNodeID
								  (fetch (GRAPHNODE NODEID)
								     of GraphNode)
								  Card Version2HashArray))
	    (replace (GRAPHNODE TONODES) of GraphNode
	       with (for NodeID in (fetch (GRAPHNODE TONODES) of GraphNode)
			 collect (COND
				     ((EQ (CAR NodeID)
					    LINKPARAMS)
				       (RPLACA (CDR NodeID)
						 (NC.ConvertVersion2GraphNodeID (CADR NodeID)
										  Card 
										Version2HashArray))
				       (AND (LISTGET NodeID (QUOTE NODEID))
					      (LISTPUT NodeID (QUOTE NODEID)
							 NIL))
				       (AND (LISTGET NodeID (QUOTE DESTNODEID))
					      (LISTPUT NodeID (QUOTE DESTNODEID)
							 NIL))
				       NodeID)
				     (T (NC.ConvertVersion2GraphNodeID NodeID Card 
									 Version2HashArray)))))
	    (replace (GRAPHNODE FROMNODES) of GraphNode
	       with (for NodeID in (fetch (GRAPHNODE FROMNODES) of GraphNode)
			 collect (COND
				     ((EQ (CAR NodeID)
					    LINKPARAMS)
				       (RPLACA (CDR NodeID)
						 (NC.ConvertVersion2GraphNodeID (CADR NodeID)
										  Card 
										Version2HashArray)))
				     (T (NC.ConvertVersion2GraphNodeID NodeID Card 
									 Version2HashArray))))))))
)
(* * Changes to NCBROWSERCARD)

(DEFINEQ

(NC.BringUpBrowserCard
  (LAMBDA (Card Substance Region/Position)                   (* rht: " 5-Apr-86 17:41")

          (* * Given a browser Substance, open a browser window and set it up to be a NoteCard with ID.)



          (* * rht 11/17/84: Now returns window.)



          (* * rht 9/11/85: Now checks for changed link icon display global params.)



          (* * rht 11/17/85: Now handles new card and Notefile objects.)



          (* * rht 2/1/86: Now restores any saved UID user data info stashed on card's prop list.)



          (* * fgh 2/5/86 Added call to NC.ApplySupersFn)



          (* * rht 2/14/86: Now rebuilds browser hash array.)



          (* * rht 2/28/86: Added WINDOWPROP for SCROLLFN and RESHAPEFN.)



          (* * rht 3/2/86: Took out call to NC.FetchBrowserHashArray.)



          (* * rht 4/5/86: Now only replaces graphnodes' TONODES' NODEID and DESTNODEID if they're non-nil.)


    (LET ((GraphNodes (fetch (GRAPH GRAPHNODES) of Substance))
	  Window OldUIDToNewUIDHashArray BrowserSavedLinkingInfo)

          (* * Restore any saved UID user data info stashed on card UID's prop list.)


         (if (SETQ BrowserSavedLinkingInfo (NC.FetchBrowserSavedLinkingInfo Card))
	     then (SETQ OldUIDToNewUIDHashArray (HASHARRAY 100 NIL (FUNCTION NC.MakeHashKey)
								 (FUNCTION NC.SameUIDP)))
		    (for BrowserSavedLinkingInfoForNode in BrowserSavedLinkingInfo
		       eachtime (BLOCK) do (for SavedLinkingInfo on (CDR 
								   BrowserSavedLinkingInfoForNode)
						    by (CDDR SavedLinkingInfo)
						    bind (SourceUID ←(
								   NC.NewBrowserNodeUIDFromOldUID
									(CAR 
								   BrowserSavedLinkingInfoForNode)
									GraphNodes 
									OldUIDToNewUIDHashArray))
						    eachtime (BLOCK)
						    do (NC.UIDPutProp SourceUID
									  (
								   NC.NewBrowserNodeUIDFromOldUID
									    (CAR SavedLinkingInfo)
									    GraphNodes 
									  OldUIDToNewUIDHashArray)
									  (CADR SavedLinkingInfo))))
	       )
         (NC.SetBrowserSavedLinkingInfo Card NIL)

          (* * For each graph node corresponding to a notecard, hang the card object off the node id's prop list.)


         (for GraphNode in GraphNodes bind LinkIcon DestCard eachtime (BLOCK)
	    when (NC.LinkIconImageObjP (SETQ LinkIcon (fetch (GRAPHNODE NODELABEL)
							       of GraphNode)))
	    do (NC.UIDPutProp (NC.CoerceToGraphNodeID GraphNode)
				  (QUOTE CardObject)
				  (SETQ DestCard (fetch (Link DestinationCard)
						      of (NC.FetchLinkFromLinkIcon LinkIcon)))))

          (* * Make a new browser hash array with the new graph node UIDs.)


         (NC.SetUserDataProp Card (QUOTE BrowserHashArray)
			       NIL)
         (NC.GetBrowserHashArray Card Substance)

          (* * For each graph node, fix the NODEID and DESTNODEID fields of each of its TONODES LinkParameters.)


         (for GraphNode in GraphNodes eachtime (BLOCK)
	    do (for ToNode in (fetch (GRAPHNODE TONODES) of GraphNode)
		    bind (ThisNodeID ←(NC.CoerceToGraphNodeID GraphNode)) eachtime (BLOCK)
		    when (EQ (CAR ToNode)
				 LINKPARAMS)
		    do (AND (LISTGET ToNode (QUOTE NODEID))
				(LISTPUT ToNode (QUOTE NODEID)
					   ThisNodeID))
			 (AND (LISTGET ToNode (QUOTE DESTNODEID))
				(LISTPUT ToNode (QUOTE DESTNODEID)
					   (NC.CoerceToGraphNodeID (CADR ToNode))))))

          (* * Bring up card and mess with its window.)


         (SETQ Window (NC.ApplySupersFn EditFn Card Substance Region/Position))
         (NC.SetupTitleBarMenu Window Card (QUOTE Browser))
         (NC.MakeLinksLegendMenu Window (NC.FetchBrowserLinksLegend Card))
                                                             (* Disable the old-style right button grapher editor 
							     menu.)
         (WINDOWPROP Window (QUOTE RIGHTBUTTONFN)
		       (FUNCTION NC.BrowserRightButtonFn))
         (WINDOWADDPROP Window (QUOTE SHRINKFN)
			  (FUNCTION NC.GraphCardShrinkFn))
         (WINDOWADDPROP Window (QUOTE REPAINTFN)
			  (FUNCTION NC.BrowserRepaintFn)
			  T)
         (WINDOWPROP Window (QUOTE SCROLLFN)
		       (FUNCTION NC.BrowserScrollFn))
         (WINDOWPROP Window (QUOTE RESHAPEFN)
		       (FUNCTION NC.BrowserReshapeFn))

          (* * I have to hang notecard's Card on window now in case REDISPLAYW runs and tries to get Card from window.)


         (WINDOWPROP Window (QUOTE NoteCardObject)
		       Card)                                 (* Check if link icon display global params have 
							     changed since last time card was up.
							     If so, fix graph nodes and redisplay.)
         (if (NC.GraphLinkIconUpdateCheck Card Window Substance T)
	     then (REDISPLAYW Window))
     Window)))

(NC.MakeLinksLegendMenu
  (LAMBDA (Win LabelPairs)                                   (* rht: " 5-Apr-86 17:06")

          (* * Build a links legend menu and attach to Win)



          (* * rht 1/10/85: Before starting, kill any old links legend menus for Win.)



          (* * rht 1/13/86: Now holds onto value of PASSTOMAINCOMS windowprop of prompt win and restores after reattaching.)



          (* * rht 1/15/86: Added windowprops MINSIZE and MAXSIZE to fix the bug where reshaping browser screws up links 
	  legend menu.)



          (* * rht 3/7/86: Now closes prompt window before attaching menu. Uses ATTACHMENU to attach the menu.)



          (* * rht 4/5/86: Took out call to NC.MoveWindowOntoScreen. For big browsers it causes redraw of window which is too
	  high a price to pay.)


    (LET (Menu MenuWin PromptWin MainWinPromptInfo PromptWinPASSTOMAINCOMS)
         (for AttachedWin in (ATTACHEDWINDOWS Win) when (WINDOWPROP AttachedWin
									      (QUOTE 
										  LINKSLEGENDWINP))
	    do (CLOSEW AttachedWin))
         (SETQ Menu (COND
	     (NC.LinkDashingInBrowser (create MENU
						ITEMS ←(for Pair in LabelPairs
							  join (LIST (CAR Pair)
									 (LIST (QUOTE "  "))))
						TITLE ←(QUOTE Links)
						MENUCOLUMNS ← 2))
	     (T (create MENU
			  ITEMS ←(for Pair in LabelPairs collect (CAR Pair))
			  TITLE ←(QUOTE Links)
			  MENUCOLUMNS ← 1))))                (* Close the prompt window if open.)
         (if (SETQ PromptWin (GETPROMPTWINDOW Win NIL NIL T))
	     then (CLOSEW PromptWin))                    (* Stick the links legend window at upper right 
							     corner.)
         (SETQ MenuWin (ATTACHMENU Menu Win (QUOTE RIGHT)
				       (QUOTE TOP)))       (* Rig so that close of menu won't close browser.)
         (WINDOWDELPROP MenuWin (QUOTE PASSTOMAINCOMS)
			  (QUOTE CLOSEW))
         (WINDOWADDPROP MenuWin (QUOTE CLOSEFN)
			  (FUNCTION (LAMBDA (W)
			      (DETACHWINDOW W)))
			  T)
         (WINDOWADDPROP MenuWin (QUOTE REPAINTFN)
			  (QUOTE NC.LinksLegendRepaintFn))
         (WINDOWADDPROP MenuWin (QUOTE RESHAPEFN)
			  (QUOTE NC.LinksLegendReshapeFn))
         (WINDOWADDPROP MenuWin (QUOTE LINKSLEGENDWINP)
			  T)
         (WINDOWPROP Win (QUOTE NCLABELPAIRS)
		       LabelPairs)
         (if NC.LinkDashingInBrowser
	     then (NC.LinksLegendRepaintFn MenuWin NIL)))))
)
(PUTPROPS RHTPATCH037 COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (508 4007 (NC.ConvertVersion2BrowserCard 518 . 4005)) (4045 11884 (NC.BringUpBrowserCard
 4055 . 9258) (NC.MakeLinksLegendMenu 9260 . 11882)))))
STOP