(FILECREATED "13-May-87 11:04:54" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH259.;2 12781
changes to: (FNS NC.EditNoteCard NC.InstallCopyButtonEventFn NC.ShowBrowserGraph)
(VARS RHTPATCH259COMS)
previous date: "13-May-87 11:03:24" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH259.;1)
(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT RHTPATCH259COMS)
(RPAQQ RHTPATCH259COMS ((DECLARE: FIRST (P (NC.LoadFileFromDirectories (QUOTE NCBROWSERCARD))))
(* * Fixes bug reported by John Tang whereby browser title bars can't be
selected following Reconnect, Relayout, etc.)
(* * New function for NCINTERFACE)
(FNS NC.InstallCopyButtonEventFn)
(* * Change to NCCARDS)
(FNS NC.EditNoteCard)
(* * Change to NCBROWSERCARD)
(FNS NC.RelayoutBrowserCard NC.ShowBrowserGraph)))
(DECLARE: FIRST
(NC.LoadFileFromDirectories (QUOTE NCBROWSERCARD))
)
(* * Fixes bug reported by John Tang whereby browser title bars can't be selected following
Reconnect, Relayout, etc.)
(* * New function for NCINTERFACE)
(DEFINEQ
(NC.InstallCopyButtonEventFn
(LAMBDA (Window) (* rht: "13-May-87 10:52")
(* * Save the current COPYBUTTONEVENTFN and stash ours.)
(OR (EQ (WINDOWPROP Window (QUOTE COPYBUTTONEVENTFN))
(FUNCTION NC.CopyButtonEventFn))
(WINDOWPROP Window (QUOTE OldCopyButtonEventFn)
(WINDOWPROP Window (QUOTE COPYBUTTONEVENTFN)
(FUNCTION NC.CopyButtonEventFn))))))
)
(* * Change to NCCARDS)
(DEFINEQ
(NC.EditNoteCard
(LAMBDA (Card RegionOrPosition TypeSpecificArgs) (* rht: "13-May-87 11:04")
(* * Bring the already created NoteCard specified by ID onto the screen at Region or Position specified by
RegionOrPosition)
(* * fgh 11/11/85: Updated to handle new Card object.)
(* * fgh 2/5/86 Added call to NC.ApplyFn)
(* * kirk 15May86 Added call to NC.AttachNoteFileName)
(* * rht 7/13/86: Added TypeSpecificArgs arg.)
(* * kef 7/16/86: Added NC.ObtainCardEditPermission.)
(* * kef 8/7/86: Added check to make sure that applying the EditFn worked. If not, then release those write locks,
thus keeping the writelock count consistent.)
(* * fgh 8/30/86 Converted APPLY* to NC.ApplyFn.)
(* * rht 10/6/86: Added checks before doing WINDOWPROP calls in case there was a recursive call to
NC.EditNoteCard.)
(* * rg 3/30/87 added NC.ProtectedCardOperation wrapper)
(* * rht 5/13/87: Added call to new NC.InstallCopyButtonEventFn.)
(DECLARE (GLOBALVARS NC.ShowNoteFileOnCards))
(NC.ProtectedCardOperation Card "Edit NoteCard" NIL (RESETSAVE (CURSOR WAITINGCURSOR))
(PROG (NoteCardType Window Substance EditResult)
(COND
((AND (NC.ActiveCardP Card)
(NC.ObtainEditPermission Card))
(SETQ Substance (NC.FetchSubstance Card)))
((NC.ObtainEditPermission Card)
(NC.GetNoteCard Card)
(SETQ Substance (NC.FetchSubstance Card)))
(T (RETURN (NC.CardPartBusy Card
(QUOTE (SUBSTANCE TOLINKS
GLOBALTOLINKS
PROPLIST)))))
)
(SETQ NoteCardType (NC.RetrieveType Card))
(COND
((AND (SETQ EditResult
(ERSETQ (NC.ApplyFn EditFn Card Substance
RegionOrPosition
TypeSpecificArgs)))
(WINDOWP (SETQ Window (CAR EditResult))))
(WINDOWADDPROP Window (QUOTE CLOSEFN)
(FUNCTION NC.QuitCard)
(QUOTE FIRST))
(OR (NC.CardP (WINDOWPROP Window (QUOTE
NoteCardObject)))
(WINDOWPROP Window (QUOTE NoteCardObject)
Card))
(NC.InstallCopyButtonEventFn Window)
(if NC.ShowNoteFileOnCards
then (NC.AttachNoteFileName Window)))
(T (* At this point, we've obtain the write locks but the
edit failed, so we'd better release them)
(for CardPart in (QUOTE (SUBSTANCE TOLINKS
GLOBALTOLINKS
PROPLIST))
do (NC.ApplyFn ReleaseWritePermissionFn Card
CardPart))
(RETURN)))
(RETURN Window)))))
)
(* * Change to NCBROWSERCARD)
(DEFINEQ
(NC.RelayoutBrowserCard
(LAMBDA (Window) (* rht: "13-May-87 10:54")
(* * Called from the middle button of a browser or structeditbrowser card. This lays out and displays the browser,
but does not recompute the nodes.)
(* * rht 11/17/85: updated to handle new notefile and card objects.)
(* * rht 2/7/86: Now gets browser format, etc. via fetch/set fns.)
(* * rht 2/28/86: Added WINDOWPROP for SCROLLFN and RESHAPEFN.)
(* * rht 5/8/86: Added calls to rig title bar properly.)
(* * fgh 6/30/86 Added NC.GRAPHERCOPYBUTTONEVENTFN to SHOWGRAPH call)
(* * rht 11/1/86: Added NC.ProtectedCardOperation wrapper and check for ops in progress.)
(* * rg 3/4/87 rewritten for new version of NC.ProtectedCardOperation, removed DontCheckOpInProgressFlg)
(LET ((Card (NC.CoerceToCard Window)))
(NC.ProtectedCardOperation
Card "Relayout Browser Card" NIL
(PROG (RootCards RootNodeIDs OldToNodePairs Graph GraphNodes BrowserFormat
DropVirtualNodesFlg SpecialBrowserSpecs)
(NC.PrintMsg Window T "Laying out graph ...")
(SETQ RootCards (NC.FetchBrowserRoots Card))
(SETQ BrowserFormat (OR (NC.FetchBrowserFormat Card)
(QUOTE (LATTICE))))
(* If user wants *GRAPH* format, i.e. virtual nodes
eliminated, then set the flag)
(if (FMEMB NC.*Graph*BrowserFormat BrowserFormat)
then (SETQ DropVirtualNodesFlg T))
(SETQ SpecialBrowserSpecs (OR (CAR (NC.FetchSpecialBrowserSpecs Card))
(create SPECIALBROWSERSPECS)))
(SETQ GraphNodes (fetch (GRAPH GRAPHNODES) of (SETQ Graph
(WINDOWPROP Window
(QUOTE
GRAPH)))))
(* Create hash array if haven't already.)
(NC.GetBrowserHashArray Card Graph) (* check graph node size against image box size.)
(NC.GraphLinkIconUpdateCheck Card Window Graph NIL)
(* Save the TONODES values of the nodes so can replace later after LAYOUTGRAPH call. At the same time, throw away
all the link params info in TONODES field.)
(SETQ OldToNodePairs (for Node in GraphNodes bind ToNodes eachtime
(BLOCK)
collect
(PROG1 (CONS (fetch (GRAPHNODE NODEID)
of Node)
(APPEND (SETQ ToNodes
(fetch (GRAPHNODE
TONODES)
of Node))))
(replace (GRAPHNODE TONODES) of Node
with (for ToNode in ToNodes
collect
(if (EQ (CAR ToNode)
LINKPARAMS)
then (CADR ToNode)
else ToNode))))))
(SETQ RootNodeIDs (for RootCard in RootCards collect (NC.GetBrowserNodeID
Card RootCard)))
(NC.SetPropListDirtyFlg Card T) (* Layout graph, including as roots any non-virtual
nodes with no from nodes to avoid disconnected
graphs.)
(SETQ Graph (if GraphNodes
then (LAYOUTGRAPH
GraphNodes
(for Node in GraphNodes bind NodeID
eachtime (BLOCK)
(SETQ NodeID (fetch (GRAPHNODE NODEID)
of Node))
when (OR (AND (NULL (fetch (GRAPHNODE
FROMNODES)
of Node))
(NOT (LISTP NodeID)))
(FMEMB NodeID RootNodeIDs))
collect NodeID)
(SUBST (QUOTE LATTICE)
NC.*Graph*BrowserFormat BrowserFormat)
(fetch (SPECIALBROWSERSPECS Font) of
SpecialBrowserSpecs)
(fetch (SPECIALBROWSERSPECS MotherD) of
SpecialBrowserSpecs)
(fetch (SPECIALBROWSERSPECS PersonalD) of
SpecialBrowserSpecs)
(fetch (SPECIALBROWSERSPECS FamilyD) of
SpecialBrowserSpecs))
else (create GRAPH)))
(* Replace the TONODES fields of the Graph nodes by their pre-LAYOUTGRAPH values. Also throw away any nodes that
didn't appear in the old graph.)
(if Graph
then (replace (GRAPH GRAPHNODES) of Graph
with (for Node in (fetch (GRAPH GRAPHNODES) of Graph)
bind AssocPair eachtime (BLOCK)
when (SETQ AssocPair (FASSOC (fetch (GRAPHNODE
NODEID)
of Node)
OldToNodePairs))
collect (replace (GRAPHNODE TONODES) of Node
with (CDR AssocPair))
(if DropVirtualNodesFlg
then (replace (GRAPHNODE NODEBORDER)
of Node with NIL))
(* Throw away LINKPARAMS junk from the FromNodes that
LAYOUTGRAPH stuck in.)
(replace (GRAPHNODE FROMNODES) of Node
with (for FromNode
in (fetch (GRAPHNODE FROMNODES)
of Node)
eachtime (BLOCK)
collect
(if (EQ (CAR FromNode)
LINKPARAMS)
then (CADR FromNode)
else FromNode)))
Node)))
(SHOWGRAPH Graph Window (FUNCTION NC.GraphCardLeftButtonFn)
(FUNCTION NC.GraphCardMiddleButtonFn)
NIL T (FUNCTION NC.GRAPHERCOPYBUTTONEVENTFN))
(* * Have to reset windowprops since SHOWGRAPH messes with them.)
(* Disable the old-style right button grapher editor
menu.)
(WINDOWPROP Window (QUOTE RIGHTBUTTONFN)
(FUNCTION NC.BrowserRightButtonFn))
(WINDOWADDPROP Window (QUOTE REPAINTFN)
(FUNCTION NC.BrowserRepaintFn)
T)
(WINDOWPROP Window (QUOTE SCROLLFN)
(FUNCTION NC.BrowserScrollFn))
(WINDOWPROP Window (QUOTE RESHAPEFN)
(FUNCTION NC.BrowserReshapeFn))
(NC.SetSubstance Card (WINDOWPROP Window (QUOTE GRAPH)))
(NC.MarkCardDirty Card)
(NC.InstallTitleBarButtonEventFn Window (FUNCTION NC.TitleBarButtonEventFn))
(NC.InstallCopyButtonEventFn Window)
(NC.ClearMsg Window T))))))
(NC.ShowBrowserGraph
(LAMBDA (Graph Window) (* rht: "13-May-87 11:00")
(* * SHOWGRAPH Graph in Window.)
(* * rht 5/13/87: Added call to NC.InstallCopyButtonEventFn.)
(SHOWGRAPH Graph Window (FUNCTION NC.GraphCardLeftButtonFn)
(FUNCTION NC.GraphCardMiddleButtonFn)
NIL T)
(* * Have to reset windowprops since SHOWGRAPH messes with them.)
(* Disable the old-style right button grapher editor
menu.)
(WINDOWPROP Window (QUOTE RIGHTBUTTONFN)
(FUNCTION NC.BrowserRightButtonFn))
(WINDOWADDPROP Window (QUOTE REPAINTFN)
(FUNCTION NC.BrowserRepaintFn)
T)
(WINDOWPROP Window (QUOTE SCROLLFN)
(FUNCTION NC.BrowserScrollFn))
(WINDOWPROP Window (QUOTE RESHAPEFN)
(FUNCTION NC.BrowserReshapeFn))
(NC.InstallTitleBarButtonEventFn Window (FUNCTION NC.TitleBarButtonEventFn))
(NC.InstallCopyButtonEventFn Window)))
)
(PUTPROPS RHTPATCH259 COPYRIGHT ("Xerox Corporation" 1987))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1089 1578 (NC.InstallCopyButtonEventFn 1099 . 1576)) (1609 4584 (NC.EditNoteCard 1619
. 4582)) (4621 12699 (NC.RelayoutBrowserCard 4631 . 11586) (NC.ShowBrowserGraph 11588 . 12697)))))
STOP