(FILECREATED "20-Mar-87 14:35:18" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH220.;3 32711 changes to: (VARS RHTPATCH220COMS) (FNS NC.MakeLinksLegendMenu NC.BrowserOverviewWinReshapeFn NC.UpdateBrowserCard NC.MakeBrowserCard NC.AttachNoteFileName) (MACROS NC.WithTopWindowsUnattached NC.WithWindowsUnattached) previous date: "19-Mar-87 19:10:06" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH220.;1) (* Copyright (c) 1987 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT RHTPATCH220COMS) (RPAQQ RHTPATCH220COMS ((* * Fixes bug whereby RecomputeBrowser was always making new links even for those that didn't change. Also removed needless call to NC.ActivateBrowserCard from NC.MakeBrowserCard.) (P (LOAD? (NC.FindFile (QUOTE NCBROWSERCARD)))) (* * Changes to NCBROWSERCARD) (FNS NC.UpdateBrowserCard NC.MakeBrowserCard NC.MakeLinksLegendMenu NC.RedrawBrowserOverviewWin NC.BrowserOverviewWinReshapeFn) (* * New for NCUTILITIES) (MACROS NC.WithTopWindowsUnattached) (* * Change to NCINTERFACE) (FNS NC.AttachNoteFileName))) (* * Fixes bug whereby RecomputeBrowser was always making new links even for those that didn't change. Also removed needless call to NC.ActivateBrowserCard from NC.MakeBrowserCard.) (LOAD? (NC.FindFile (QUOTE NCBROWSERCARD))) (* * Changes to NCBROWSERCARD) (DEFINEQ (NC.UpdateBrowserCard (LAMBDA (Window) (* rht: "20-Mar-87 10:51") (* * rht 10/14/84: Added call to DETACHALLWINDOWS to close any existing links legend window and prompt window. Also added call to NC.MakeLinksLegend to make a new attached legend menu.) (* * rht 1/15/85: Put hooks for AddNode, AddLink, etc. so editing graph edits underlying structure.) (* * rht 2/14/85: Added ability to respecify roots and link labels before recomputing graph.) (* * rht 3/8/85: Modified to use new browser props stored on card's proplist as of release 1.2.) (* * rht 3/17/85: Now takes OnlyLayoutFlg argument. If set, then don't recompute lattice or ask about root nodes.) (* * rht 11/17/85: updated to handle new card and notefile objects.) (* * kirk 23Jan86 Changed to use NC.AskYesOrNo) (* * rht 2/7/86: Now gets and sets browser format, etc. via fetch/set fns.) (* * rht 3/7/86: Now only closes the Links legend menu attached window.) (* * rht 6/10/86: Moved code to delete links legend menu and code to make new browser hash array to after questioning user about respecifying roots.) (* * rht 11/1/86: Added NC.ProtectedCardOperation wrapper and check for ops in progress.) (* * pmi 12/5/86: Modified message to NC.SelectNoteCards to mention SHIFT-selection.) (* * pmi 12/12/86: Removed obsolete ReturnLinksFlg argument in call to NC.SelectNoteCards.) (* * rht 12/16/86: Now checks that NC.MakeLink succeeded before creating a real link icon. If not, then make a standin for a cross file link icon.) (* * rg 3/4/87 rewritten for new version of NC.ProtectedCardOperation, removed DontCheckOpInProgressFlg) (* * rg 3/18/87 added NC.CardSelectionOperation wrapper) (* * rht 3/19/87: Fixed the part that calls NC.MakeLink so it really only rebuilds links if they've changed.) (LET ((Card (NC.CoerceToCard Window))) (NC.ProtectedCardOperation Card "Recompute Browser Card" NIL (NC.CardSelectionOperation (PROG (LinkLabels RootCards RootNodes Lattice LinkIcon Graph GraphNodes NodeLabel BrowserSpecs BrowserFormat DropVirtualNodesFlg Depth SpecialBrowserSpecs OldLabelNodes OldRootCards) (SETQ RootCards (NC.FetchBrowserRoots Card)) (SETQ LinkLabels (NC.FetchBrowserLinkLabels 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 Depth (OR (NC.FetchBrowserDepth Card) 999999)) (SETQ SpecialBrowserSpecs (OR (NC.FetchSpecialBrowserSpecs Card) (create SPECIALBROWSERSPECS))) (SETQ GraphNodes (fetch (GRAPH GRAPHNODES) of (SETQ Graph (WINDOWPROP Window (QUOTE GRAPH))))) (* Get new roots.) (if (OR (NULL RootCards) (NC.AskYesOrNo "Want to respecify roots? " "--" "No" T Window T NIL)) then (NC.BrowserFlipRoots Window Card GraphNodes (SETQ OldRootCards RootCards)) (SETQ RootCards (NC.SelectNoteCards NIL NIL NC.SelectingBrowserSourceMenu Window (CONCAT "Please shift-select the Cards and/or Boxes the browser should start from." (CHARACTER 13) "(Current roots are highlighted.)") T)) (NC.BrowserFlipRoots Window Card GraphNodes OldRootCards) (COND ((EQ RootCards (QUOTE CANCELLED)) (RETURN)))) (* Get rid of the links legend menu attached window.) (for Win in (ATTACHEDWINDOWS Window) when (WINDOWPROP Win (QUOTE LINKSLEGENDWINP)) do (DETACHWINDOW Win) (CLOSEW Win)) (* Smash the current hash array, putting a fresh one in its place.) (NC.GetBrowserHashArray Card) (NC.PrintMsg Window T (CHARACTER 13) "Computing browser graph. Please wait. ...") (* Compute lattice breadth-first from the roots.) (SETQ Lattice (NC.GrowLinkLattice RootCards NIL LinkLabels Card Depth)) (SETQ RootNodes (for RootCard in RootCards collect (NC.GetBrowserNodeID Card RootCard))) (NC.SetPropListDirtyFlg Card T) (* Remove all links that are in the old browser graph but not in the new one) (for Node in GraphNodes eachtime (BLOCK) unless (for LatticeNode in Lattice bind (CardForNode ←(NC.CardFromBrowserNodeID (NC.CoerceToGraphNodeID Node))) thereis (NC.SameCardP CardForNode (NC.CardFromBrowserNodeID (NC.CoerceToGraphNodeID LatticeNode) ))) do (LET ((NodeLabel (fetch (GRAPHNODE NODELABEL) of Node))) (COND ((NC.LinkIconImageObjP NodeLabel) (NC.DeleteLink (NC.FetchLinkFromLinkIcon NodeLabel) T T)) ((STRINGP NodeLabel) (* Collect the label nodes from the old browser.) (SETQ OldLabelNodes (CONS Node OldLabelNodes)))))) (* Create Links for all nodes in the new browser graph but not in the old one.) (for Node in Lattice eachtime (BLOCK) do (LET ((NodeID (fetch (GRAPHNODE NODEID) of Node)) (OldNode (for GraphNode in GraphNodes bind (CardForNode ←(NC.CardFromBrowserNodeID (NC.CoerceToGraphNodeID Node))) when (NC.SameCardP CardForNode (NC.CardFromBrowserNodeID (NC.CoerceToGraphNodeID GraphNode))) do (RETURN GraphNode)))) (if OldNode then (replace (GRAPHNODE NODELABEL) of Node with (fetch (GRAPHNODE NODELABEL) of OldNode)) else (replace (GRAPHNODE NODELABEL) of Node with (LET ((NewLink (NC.MakeLink Window NC.BrowserContentsLinkLabel (fetch (GRAPHNODE NODELABEL) of Node) Card NIL))) (if NewLink then (NC.MakeLinkIcon NewLink) else (NC.MakeCrossFileLinkIconStandIn (NCP.CardTitle (fetch (GRAPHNODE NODELABEL) of Node))))))) (* Untouch each graph node so that next Recompute will put fresh values on proplist.) (NC.GraphNodeIDRemProp NodeID (QUOTE TouchedFlg)) (NC.GraphNodeIDRemProp NodeID (QUOTE VisitedFlg)))) (* Throw in the label nodes from the old browser.) (SETQ Lattice (NCONC Lattice OldLabelNodes)) (* For each old label node, take away nonexistent fromnodes and save the label nodes that no longer have any from nodes.) (for OldLabelNode in OldLabelNodes eachtime (BLOCK) do (replace (GRAPHNODE FROMNODES) of OldLabelNode with (for FromNodeID in (fetch (GRAPHNODE FROMNODES) of OldLabelNode) bind FromNode eachtime (BLOCK) when (SETQ FromNode (FASSOC FromNodeID Lattice)) collect (* If the From node isn't a label node, then add to its Tonode list.) (if (NC.LinkIconImageObjP (fetch (GRAPHNODE NODELABEL) of FromNode)) then (replace (GRAPHNODE TONODES) of FromNode with (CONS (fetch (GRAPHNODE NODEID) of OldLabelNode) (fetch (GRAPHNODE TONODES) of FromNode)))) FromNodeID)) (* For the old label node's ToNodes, just need to remove any for ToNodes that no longer exist.) (replace (GRAPHNODE TONODES) of OldLabelNode with (for ToNodeID in (fetch (GRAPHNODE TONODES) of OldLabelNode) bind ToNode eachtime (BLOCK) when (SETQ ToNode (FASSOC ToNodeID Lattice)) collect (* If the To node isn't a label node, then add to its FromNode list.) (if (NC.LinkIconImageObjP (fetch (GRAPHNODE NODELABEL) of ToNode)) then (replace (GRAPHNODE FROMNODES) of ToNode with (CONS (fetch (GRAPHNODE NODEID) of OldLabelNode) (fetch (GRAPHNODE FROMNODES) of ToNode)))) ToNodeID))) (* Layout graph, including as roots any non-virtual nodes with no from nodes to avoid disconnected graphs.) (SETQ Graph (if (AND Lattice RootNodes) then (LAYOUTGRAPH Lattice (for Node in Lattice bind NodeID eachtime (BLOCK) (SETQ NodeID (OR (NC.CoerceToGraphNodeID Node) (fetch (GRAPHNODE NODEID) of Node))) when (OR (FMEMB NodeID RootNodes) (NULL (fetch (GRAPHNODE FROMNODES) of Node))) 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))) (* Build links legend and fix up TONODES in the graph.) (NC.SetBrowserLinksLegend Card (NC.MakeLinksLegend Graph Window DropVirtualNodesFlg)) (NC.SetBrowserRoots Card RootCards) (NC.SetBrowserDepth Card Depth) (WINDOWPROP Window (QUOTE GRAPH) Graph) (NC.RelayoutBrowserCard Window))))))) (NC.MakeBrowserCard (LAMBDA (Card Title NoDisplayFlg ParamList) (* rht: "20-Mar-87 11:07") (* Make a browser card with id Card using root at RootID and the link following predictae specified by Predicate. IF Root and/or ListOfLinkLabels not specified, ask the user.) (* * rht 8/3/84: Changed to call NC.AskLinkLabel with its ReverseLinkLabel parameter set to T.) (* * fgh 10/2/84 Changed Link Icons to be image objects in NodeLabel of Graph Npodes rather than annotations on graph nodes.) (* * rht 10/19/84: Fixed setting up of browser card's prop list in case NoDisplayFlg is T so we have no Window. Now NC.MakeLinksLegend returns the label pairs.) (* * rht 11/27/84: Removed the WINDOWADDPROP call to put NC.GraphCardCloseFn on the CLOSEFN of the window. This causes trouble. NC.QuitCard will get put on by NC.MakeNoteCard and that's enough.) (* * rht 1/3/85: Now puts a dummy region of the right size if the NoDisplayFlg is on.) (* * rht 1/15/85: Put hooks for AddNode, AddLink, etc. so editing graph edits underlying structure.) (* * rht 2/14/85: Added VerticalFlg and made BrowserSpecs get put on browser's proplist in all cases.) (* * rht 4/1/85: Now calls NC.AskBrowserSpecs with additional Don'tAskFlg in case of call from Programmer's interface.) (* * rht 11/17/85: Updated to handle new card and notefile objects.) (* * rht 2/7/86: Now gets browser format, etc. via fetch/set fns.) (* * rht 5/6/86: Took out call to NC.SetupTitleBarMenu.) (* * rht 5/8/86: Added calls to rig title bar properly.) (* * rht 7/10/86: Now passes ListOfLinkLabels to NC.AskBrowserSpecs.) (* * rht 9/19/86: Mod to above fix. Now calls NC.MakeNewCardWindow a new fn that creates window and hangs Card off windowprop.) (* * pmi 12/5/86: Modified message to NC.SelectNoteCards to mention SHIFT-selection. Also added GLOBALVARS statement.) (* * pmi 12/12/86: Removed obsolete ReturnLinksFlg argument in call to NC.SelectNoteCards.) (* * rht 12/16/86: Now checks that NC.MakeLink succeeded before creating a real link icon. If not, then make a standin for a cross file link icon.) (* * rg 3/18/87 added NC.CardSelectionOperation wrapper) (* * rht 3/20/87: Removed needless call to NC.ActivateCard.) (DECLARE (GLOBALVARS NC.SubBoxLinkLabel NC.BrowserContentsLinkLabel NC.SpecialBrowserSpecsFlg NC.*Graph*BrowserFormat NC.SelectingBrowserSourceMenu)) (NC.CardSelectionOperation (PROG ((RootCards (MKLIST (LISTGET ParamList (QUOTE ROOTCARDS)) )) (ListOfLinkLabels (LISTGET ParamList (QUOTE LINKTYPES))) (BrowserFormat (LISTGET ParamList (QUOTE FORMAT))) (Depth (LISTGET ParamList (QUOTE DEPTH))) (CardType (NC.RetrieveType Card)) Lattice RootNodes Window Graph SpecialBrowserSpecs BrowserSpecs DropVirtualNodesFlg) (COND ((NULL NoDisplayFlg) (SETQ Window (NC.MakeNewCardWindow Card (OR Title "Untitled"))) (WINDOWADDPROP Window (QUOTE SHRINKFN) (FUNCTION NC.GraphCardShrinkFn)))) (if (NULL RootCards) then (SETQ RootCards (if NoDisplayFlg then (LIST NIL) else (NC.SelectNoteCards NIL NIL NC.SelectingBrowserSourceMenu Window "Please shift-select the Cards and/or Boxes the browser should start from." T)))) (COND ((EQ RootCards (QUOTE CANCELLED)) (NC.DeactivateCard Card) (CLOSEW Window) (RETURN))) (NC.HoldTTYProcess) (SETQ BrowserSpecs (NC.AskBrowserSpecs Window Card ListOfLinkLabels Depth BrowserFormat T (if (OR ParamList NoDisplayFlg) then (QUOTE DONTASK)))) (COND ((NULL BrowserSpecs) (NC.DeactivateCard Card) (CLOSEW Window) (RETURN))) (SETQ ListOfLinkLabels (CAR BrowserSpecs)) (SETQ Depth (CADR BrowserSpecs)) (SETQ BrowserFormat (CADDR BrowserSpecs)) (* 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 (COND (NC.SpecialBrowserSpecsFlg (NC.AskSpecialBrowserSpecs Window)) (T (create SPECIALBROWSERSPECS)))) (OR NoDisplayFlg (NC.PrintMsg Window T (CHARACTER 13) "Computing browser graph. Please wait. ...")) (* Create new browser hash array) (NC.GetBrowserHashArray Card) (* Compute lattice breakdth-first starting from roots.) (SETQ Lattice (NC.GrowLinkLattice RootCards NIL ListOfLinkLabels Card Depth)) (SETQ RootNodes (for RootCard in RootCards collect (NC.GetBrowserNodeID Card RootCard))) (OR NoDisplayFlg (WINDOWPROP Window (QUOTE NoteCardObject) Card)) (* * Link destination id information stored in NodeLabel field into a LinkIcon for display) (for Node in Lattice bind NodeID eachtime (BLOCK) do (replace (GRAPHNODE NODELABEL) of Node with (LET ((NewLink (NC.MakeLink Window NC.BrowserContentsLinkLabel (fetch (GRAPHNODE NODELABEL) of Node) Card NIL))) (if NewLink then (NC.MakeLinkIcon NewLink) else (NC.MakeCrossFileLinkIconStandIn (NCP.CardTitle (fetch (GRAPHNODE NODELABEL) of Node)))))) (* Untouch each graph node so that next Recompute will put fresh values on proplist.) (SETQ NodeID (fetch (GRAPHNODE NODEID) of Node)) (NC.GraphNodeIDRemProp (NC.CoerceToGraphNodeID NodeID) (QUOTE TouchedFlg)) (NC.GraphNodeIDRemProp (NC.CoerceToGraphNodeID NodeID) (QUOTE VisitedFlg))) (SETQ Graph (if (AND Lattice RootNodes) then (LAYOUTGRAPH Lattice RootNodes (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))) (NC.SetBrowserLinksLegend Card (NC.MakeLinksLegend Graph Window DropVirtualNodesFlg)) (OR NoDisplayFlg (NC.PrintMsg Window NIL "Done!")) (NC.SetSubstance Card Graph) (NC.SetBrowserLinkLabels Card (OR ListOfLinkLabels (LIST NC.SubBoxLinkLabel))) (NC.SetBrowserRoots Card RootCards) (NC.SetBrowserFormat Card BrowserFormat) (NC.SetBrowserDepth Card Depth) (NC.SetSpecialBrowserSpecs Card SpecialBrowserSpecs) (COND (NoDisplayFlg (RETURN Card))) (WINDOWPROP Window (QUOTE GRAPH) Graph) (NC.InstallTitleBarLeftMenu Window CardType) (NC.InstallTitleBarMiddleMenu Window CardType) (NC.RelayoutBrowserCard Window) (RETURN Window))))) (NC.MakeLinksLegendMenu (LAMBDA (Win LabelPairs) (* rht: "20-Mar-87 12:37") (* * 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.) (* * rht 3/20/87: Changed so that ATTACHMENU call is inside of NC.WithWindowsUnattached macro. Also took out closing of prompt window, as it's no longer necessary.) (LET (Menu MenuWin PromptWin MainWinPromptInfo PromptWinPASSTOMAINCOMS) (for AttachedWin in (ATTACHEDWINDOWS Win) when (WINDOWPROP AttachedWin (QUOTE LINKSLEGENDWINP)) do (REMOVEWINDOW 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)))) (* Stick the links legend window at upper right corner.) (NC.WithTopWindowsUnattached Win (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))))) (NC.RedrawBrowserOverviewWin (LAMBDA (OverviewWin BrowserWin) (* rht: " 8-May-86 11:29") (* * The contents of the browser window have changed. Redraw the overview win.) (* * rht 3/20/86: Now compresses to fit overview if necessary.) (* * rht 5/8/86: Now smashes SCROLLFN) (NC.ShrinkGraphToWindow (WINDOWPROP BrowserWin (QUOTE GRAPH)) OverviewWin) (if (EQ (WINDOWPROP BrowserWin (QUOTE OVERVIEWWINMODE)) NC.OverviewWinMode.Compress) then (WINDOWPROP OverviewWin (QUOTE RESHAPEFN) NIL) (NC.CompressOverviewWin OverviewWin BrowserWin)) (WINDOWPROP OverviewWin (QUOTE REPAINTFN) (FUNCTION NC.BrowserOverviewWinRepaintFn)) (WINDOWPROP OverviewWin (QUOTE RESHAPEFN) (FUNCTION NC.BrowserOverviewWinReshapeFn)) (WINDOWPROP OverviewWin (QUOTE BUTTONEVENTFN) (FUNCTION NC.BrowserOverviewWinButtonEventFn)) (WINDOWPROP OverviewWin (QUOTE SCROLLFN) NIL) (NC.DrawWireFrameInOverviewWin OverviewWin BrowserWin))) (NC.BrowserOverviewWinReshapeFn (LAMBDA (OverviewWin OldWinBitmap OldWinRegion) (* rht: "20-Mar-87 14:33") (* * When overview win is reshaped, we need to recompute its contents from scratch. We detach and reattach in case user pulled it away from browser edge.) (* * rht 3/20/87: Now instead of deleting SHAPEW from PASSTOMAINCOMS, it replaces whole list. This is because Shrager's WDWHACKS package adds screwy SHAPEW.mumble things to PASSTOMAINCOMS.) (LET ((BrowserWin (MAINWINDOW OverviewWin)) (WhereAttached (WINDOWPROP OverviewWin (QUOTE WHEREATTACHED)))) (DETACHWINDOW OverviewWin) (ATTACHWINDOW OverviewWin BrowserWin (OR (CAR WhereAttached) (QUOTE LEFT)) (OR (CDR WhereAttached) (QUOTE TOP)) (QUOTE LOCALCLOSE)) (WINDOWPROP OverviewWin (QUOTE PASSTOMAINCOMS) (QUOTE (MOVEW SHRINKW BURYW))) (WINDOWPROP BrowserWin (QUOTE OverviewWinWidth) (fetch (REGION WIDTH) of (WINDOWREGION OverviewWin))) (WINDOWPROP BrowserWin (QUOTE OverviewWinHeight) (fetch (REGION HEIGHT) of (WINDOWREGION OverviewWin))) (WINDOWPROP OverviewWin (QUOTE MAXSIZE) (CONS (fetch (REGION WIDTH) of (WINDOWREGION OverviewWin)) (fetch (REGION HEIGHT) of (WINDOWREGION OverviewWin)))) (NC.RedrawBrowserOverviewWin OverviewWin BrowserWin)))) ) (* * New for NCUTILITIES) (DECLARE: EVAL@COMPILE (DEFMACRO NC.WithTopWindowsUnattached (MainWindow &BODY Forms) (* * Run Forms after temporarily detaching windows attached to top of MainWindow. This code was originally in Frank's NC.AttachNoteFileName function, but found to be more generally useful.) (BQUOTE (RESETLST (RESETSAVE NIL (BQUOTE (, (FUNCTION (LAMBDA (DescriptionList) (* Reattach windows according to information in a description list.) (for windowDescription in DescriptionList do (ATTACHWINDOW (CAR windowDescription) , MainWindow (CAADR windowDescription) (CDADR windowDescription)) (WINDOWPROP (CAR windowDescription) (QUOTE PASSTOMAINCOMS) (CADDR windowDescription))))) , (bind WA for window in (ATTACHEDWINDOWS , MainWindow) when (EQ (QUOTE TOP) (CAR (SETQ WA (WINDOWPROP window (QUOTE WHEREATTACHED))))) collect (* Detach attached windows at the top of the main window and retuirn a list describing their attachment.) (PROG1 (LIST window WA (WINDOWPROP window (QUOTE PASSTOMAINCOMS))) (DETACHWINDOW window)))))) ,@ Forms))) ) (* * Change to NCINTERFACE) (DEFINEQ (NC.AttachNoteFileName (LAMBDA (CardWindow OffFlg) (* rht: "20-Mar-87 12:38") (* * Attach an indicator of the NoteFile for this Card to the Card) (* * fgh 5/29/86 Changed collection of old attached windows to prevent NILs in collection result.) (* * fgh 6/13/86 Put detachment and reattachment of previous attached windows into a RESETLST. Added FREEATTACHEDWINDOW as the CLOSEFN of the indicator window. Added code to reset PASSTOMAINWINDOW COMS of the previously attachwed windows. Changed MINSIZE of indicator window to allow small fonts. Added a REPAINTFN to the indicator window.) (* * fgh 7/2/86 Replaced the CLEARW call in the indicator window REPAINTFN with a DSPRESET for two reasons: reset the X coor befre printining and CLEARW is not allowed in REPAINTFNS.) (* * fgh&rht 7/5/86: Changed the name "FileName" to "NameToPrint".) (* * rht 3/20/87: Moved Frank's hack that temporarily detaches windows into a macro called NC.WithWindowsUnattached.) (LET ((Card (NC.CardFromWindow CardWindow)) AttachedWindows FileName Window) (if (NC.CardP Card) then (SETQ AttachedWindows (ATTACHEDWINDOWS CardWindow)) (if OffFlg then (CLOSEW (for window in AttachedWindows thereis (WINDOWPROP window (QUOTE NoteFileIndicator) ))) (REPOSITIONATTACHEDWINDOWS CardWindow) else (TOTOPW CardWindow) (if (SETQ Window (for window in AttachedWindows thereis (WINDOWPROP window (QUOTE NoteFileIndicator)))) then (* * There already is an indicator window, open and redisplay it.) (OR (OPENWP Window) (OPENW Window)) (REDISPLAYW Window) else (* * No existing indicator window, make one.) (NC.WithTopWindowsUnattached CardWindow (* * Make the indicator window.) (LET (NoteFile NameToPrint YSize IndicatorWindow) (SETQ NoteFile (fetch (Card NoteFile) of Card)) (SETQ NameToPrint (NC.MakeNoteFileNameIndicator NoteFile)) (SETQ YSize (HEIGHTIFWINDOW (OR (FONTPROP NC.NoteFileIndicatorFont (QUOTE HEIGHT)) 20))) (SETQ IndicatorWindow (CREATEW (CREATEREGION 0 0 100 YSize) NIL T)) (WINDOWPROP IndicatorWindow (QUOTE MAXSIZE) (CONS 1000 YSize)) (WINDOWPROP IndicatorWindow (QUOTE MINSIZE) (CONS 20 YSize)) (ATTACHWINDOW IndicatorWindow CardWindow (QUOTE TOP) (QUOTE JUSTIFY) (QUOTE LOCALCLOSE)) (WINDOWPROP IndicatorWindow (QUOTE BUTTONEVENTFN) (FUNCTION (LAMBDA (window) (INVERTW window) (NC.SetUpNoteFileInterface (fetch (Card NoteFile) of (NC.CardFromWindow (MAINWINDOW window)))) (INVERTW window)))) (WINDOWPROP IndicatorWindow (QUOTE NameToPrint) NameToPrint) (WINDOWADDPROP IndicatorWindow (QUOTE CLOSEFN) (FUNCTION FREEATTACHEDWINDOW) T) (WINDOWPROP IndicatorWindow (QUOTE REPAINTFN) (FUNCTION (LAMBDA (Window Region) (DSPRESET Window) (PRIN1 (WINDOWPROP Window (QUOTE NameToPrint)) Window)))) (DSPFONT NC.NoteFileIndicatorFont IndicatorWindow) (PRIN1 NameToPrint IndicatorWindow) (OPENW IndicatorWindow) (WINDOWPROP IndicatorWindow (QUOTE NoteFileIndicator) (QUOTE Showing)))))))))) ) (PUTPROPS RHTPATCH220 COPYRIGHT ("Xerox Corporation" 1987)) (DECLARE: DONTCOPY (FILEMAP (NIL (1388 26999 (NC.UpdateBrowserCard 1398 . 12933) (NC.MakeBrowserCard 12935 . 21538) ( NC.MakeLinksLegendMenu 21540 . 24271) (NC.RedrawBrowserOverviewWin 24273 . 25422) ( NC.BrowserOverviewWinReshapeFn 25424 . 26997)) (28560 32629 (NC.AttachNoteFileName 28570 . 32627))))) STOP