diff --git a/lispusers/DINFO b/lispusers/DINFO index 12b94118c..cae8c0595 100644 --- a/lispusers/DINFO +++ b/lispusers/DINFO @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "25-May-2024 13:19:49" {WMEDLEY}DINFO.;14 65819 +(FILECREATED " 9-May-2025 21:15:54" {WMEDLEY}DINFO.;19 67369 :EDIT-BY rmk - :CHANGES-TO (FNS DINFO.OPENTEXTSTREAM DINFO.UPDATE.TEXT.DISPLAY) + :CHANGES-TO (FNS DINFO.CLOSEFN DINFO.UPDATE.FROM.GRAPH DINFO.GET.GRAPH.WINDOW + DINFO.OPENTEXTSTREAM) - :PREVIOUS-DATE "11-Apr-2024 08:27:34" {WMEDLEY}DINFO.;13) + :PREVIOUS-DATE " 7-May-2025 10:13:33" {WMEDLEY}DINFO.;17) (PRETTYCOMPRINT DINFOCOMS) @@ -482,12 +483,19 @@ (WINDOWADDPROP WINDOW 'EXPANDFN 'DINFO.EXPANDFN]) (DINFO.CLOSEFN - [LAMBDA (W) (* drc%: "25-Jan-86 18:26") + [LAMBDA (W) (* ; "Edited 9-May-2025 21:15 by rmk") + (* drc%: "25-Jan-86 18:26") + + (* ;; + "This closes the DINFO text window. When the text window closes, the graph window closes too.") + + (* ;; "There is a potential cycle from the graph to the the text window and then back to the graph. To clean this up, every window should have a pointer to this window, and this window would point to the DINFOGRAPH. If we ever wanted to collect (why would we?), we would have a single place to break the link.") + (LET [(GRAPH (WINDOWPROP W 'DINFOGRAPH] - (if (type? DINFOGRAPH GRAPH) - then (CLOSEW (fetch (DINFOGRAPH GRAPH.WINDOW) of GRAPH)) - (* remove circularity...) - (WINDOWPROP W 'DINFOGRAPH NIL]) + (CL:WHEN (type? DINFOGRAPH GRAPH) + (CLOSEW (fetch (DINFOGRAPH GRAPH.WINDOW) of GRAPH)) + (* ; "remove circularity...") + (AND NIL (WINDOWPROP W 'DINFOGRAPH NIL)))]) (DINFO.SHRINKFN [LAMBDA (W) (* drc%: "25-Jan-86 18:26") @@ -856,20 +864,28 @@ (fetch (DINFONODE LABEL) of (fetch (DINFOGRAPH CURRENTNODE) of DINFO.GRAPH]) (DINFO.UPDATE.FROM.GRAPH - [LAMBDA (GRAPHER.NODE GRAPH.WINDOW) (* ; "Edited 9-Mar-2024 14:21 by rmk") + [LAMBDA (GRAPHER.NODE GRAPH.WINDOW) (* ; "Edited 9-May-2025 16:16 by rmk") + (* ; "Edited 9-Mar-2024 14:21 by rmk") (* drc%: "12-Dec-85 18:34") - (AND GRAPHER.NODE (ADD.PROCESS `[DINFO.UPDATE ',(WINDOWPROP GRAPH.WINDOW 'DINFOGRAPH) - ',(fetch (GRAPHNODE NODEID) of GRAPHER.NODE] - 'NAME "DInfo From Graph"]) + (CL:WHEN GRAPHER.NODE + (ADD.PROCESS `[DINFO.UPDATE ',(WINDOWPROP GRAPH.WINDOW 'DINFOGRAPH) + ',(fetch (GRAPHNODE NODEID) of GRAPHER.NODE] + 'NAME "DInfo From Graph"))]) (DINFO.GET.GRAPH.WINDOW - [LAMBDA (GRAPH REGION) (* drc%: "25-Jan-86 18:05") + [LAMBDA (GRAPH REGION) (* ; "Edited 9-May-2025 16:21 by rmk") + (* drc%: "25-Jan-86 18:05") + + (* ;; "Given a graph, this creates the window with the nodes to click on. The graph points to the graph window, and the graph window points to the graph. On closing the cycle is broken by removing the window's pointer to the graph.") + + (* ;; "Note that the DINFO text window is not part of this.") + (LET ((W (fetch (DINFOGRAPH GRAPH.WINDOW) of GRAPH))) (COND ((WINDOWP W)) (T (SETQ W (DINFO.CREATE.GRAPH.WINDOW GRAPH REGION)) - [WINDOWPROP W 'CLOSEFN (FUNCTION (LAMBDA (W) - (WINDOWPROP W 'DINFOGRAPH NIL] + [AND NIL (WINDOWPROP W 'CLOSEFN (FUNCTION (LAMBDA (W) + (WINDOWPROP W 'DINFOGRAPH NIL] (replace (DINFOGRAPH GRAPH.WINDOW) of GRAPH with W))) (WINDOWPROP W 'DINFOGRAPH GRAPH) W]) @@ -988,7 +1004,8 @@ (DEFINEQ (DINFO.UPDATE.TEXT.DISPLAY - [LAMBDA (GRAPH NODE SEL OFF?) (* ; "Edited 25-May-2024 13:16 by rmk") + [LAMBDA (GRAPH NODE SEL OFF?) (* ; "Edited 6-May-2025 23:45 by rmk") + (* ; "Edited 25-May-2024 13:16 by rmk") (* drc%: "25-Jan-86 18:18") (* drc%: "25-Jan-86 18:18") (LET ((WINDOW (fetch (DINFOGRAPH WINDOW) of GRAPH)) @@ -1005,7 +1022,7 @@ WINDOW NIL NIL PROPS) (replace (DINFOGRAPH LAST.TEXT) of GRAPH with NIL) elseif (SETQ FULLFILENAME (MKATOM (INFILEP FILENAME))) - then (SETQ TEXTSTREAM (DINFO.OPENTEXTSTREAM FULLFILENAME WINDOW FROM TO PROPS)) + then (SETQ TEXTSTREAM (DINFO.OPENTEXTSTREAM FULLFILENAME GRAPH WINDOW FROM TO PROPS)) (DINFO.SHOWSEL TEXTSTREAM SEL) else (OPENTEXTSTREAM (OPENSTRINGSTREAM (CONCAT "Sorry, can't find the text for this node." (MKSTRING (CHARACTER (CHARCODE CR))) @@ -1037,7 +1054,9 @@ (PROMPTPRINT "DInfo is busy"]) (DINFO.OPENTEXTSTREAM - [LAMBDA (FILE WINDOW FROM TO PROPS) (* ; "Edited 25-May-2024 13:17 by rmk") + [LAMBDA (FILE GRAPH WINDOW FROM TO PROPS) (* ; "Edited 9-May-2025 12:37 by rmk") + (* ; "Edited 7-May-2025 00:24 by rmk") + (* ; "Edited 25-May-2024 13:17 by rmk") (* ; "Edited 10-Apr-2024 23:46 by rmk") (* ; "Edited 10-Mar-2024 15:37 by rmk") (* drc%: "25-Jan-86 18:24") @@ -1054,9 +1073,10 @@ else (CL:WHEN TEXTSTREAM (TEDIT.KILL TEXTSTREAM)) (CLEARW T) (CLEARW WINDOW) + (WINDOWPROP WINDOW 'DINFOGRAPH GRAPH) [RESETSAVE NIL `(AND RESETSTATE (WINDOWPROP ,WINDOW 'LAST.TEXT NIL] (PROG1 (TEDIT (OPENTEXTSTREAM FILE NIL FROM TO PROPS) - WINDOW) + (OR WINDOW 'DINFO)) (replace (DINFOGRAPH LAST.TEXT) of (DINFOGRAPH WINDOW) with THIS.TEXT))]) (DINFO.SHOWSEL @@ -1113,21 +1133,21 @@ (SETTEMPLATE 'DINFOGRAPHPROP 'MACRO) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4582 6041 (DINFOGRAPHPROP 4582 . 6041)) (7295 24433 (DINFO 7305 . 8919) (DINFO.UPDATE -8921 . 11785) (DINFOGRAPH 11787 . 12205) (DINFO.SPECIAL.UPDATE 12207 . 13905) (DINFO.READ.GRAPH 13907 - . 15762) (DINFO.WRITE.GRAPH 15764 . 16854) (DINFO.SELECT.GRAPH 16856 . 17763) (DINFO.DEFAULT.MENU -17765 . 20289) (DINFO.FIND 20291 . 22877) (DINFO.LOOKUP 22879 . 24431)) (24434 27128 ( -DINFO.READ.KOTO.GRAPH 24444 . 27126)) (27129 29443 (DINFO.SETUP.WINDOW 27139 . 27820) (DINFO.CLOSEFN -27822 . 28255) (DINFO.SHRINKFN 28257 . 28453) (DINFO.EXPANDFN 28455 . 29012) (DINFO.ICONFN 29014 . -29441)) (29444 40766 (DINFO.ADD.FMENU 29454 . 30549) (DINFO.CREATE.FMENU 30551 . 34578) ( -DINFO.FMW.CLOSEFN 34580 . 35425) (DINFO.FMENU.HANDLER 35427 . 36066) (DINFO.UPDATE.FMENU 36068 . 38257 -) (DINFO.TOGGLE.MENU 38259 . 38849) (DINFO.TOGGLE.GRAPH 38851 . 39350) (DINFO.TOGGLE.HISTORY 39352 . -39896) (DINFO.TOGGLE.TEXT 39898 . 40764)) (40767 48562 (DINFO.UPDATE.MENU.DISPLAY 40777 . 44898) ( -DINFO.UPDATE.FROM.MENU 44900 . 45199) (DINFO.UPDATE.HISTORY 45201 . 47731) (DINFO.HISTORIC.UPDATE -47733 . 48560)) (48563 58892 (DINFO.UPDATE.GRAPH.DISPLAY 48573 . 50025) (DINFO.UPDATE.FROM.GRAPH 50027 - . 50503) (DINFO.GET.GRAPH.WINDOW 50505 . 51090) (DINFO.CREATE.GRAPH.WINDOW 51092 . 52209) ( -DINFO.SHOWGRAPH 52211 . 53936) (DINFO.INVERT.NODE 53938 . 55326) (DINFO.LAYOUTGRAPH 55328 . 58890)) ( -58893 65232 (DINFO.UPDATE.TEXT.DISPLAY 58903 . 60963) (DINFO.TITLEMENUFN 60965 . 62090) ( -DINFO.OPENTEXTSTREAM 62092 . 63592) (DINFO.SHOWSEL 63594 . 64327) (DINFO.GET.FILENAME 64329 . 65230))) + (FILEMAP (NIL (4641 6100 (DINFOGRAPHPROP 4641 . 6100)) (7354 24492 (DINFO 7364 . 8978) (DINFO.UPDATE +8980 . 11844) (DINFOGRAPH 11846 . 12264) (DINFO.SPECIAL.UPDATE 12266 . 13964) (DINFO.READ.GRAPH 13966 + . 15821) (DINFO.WRITE.GRAPH 15823 . 16913) (DINFO.SELECT.GRAPH 16915 . 17822) (DINFO.DEFAULT.MENU +17824 . 20348) (DINFO.FIND 20350 . 22936) (DINFO.LOOKUP 22938 . 24490)) (24493 27187 ( +DINFO.READ.KOTO.GRAPH 24503 . 27185)) (27188 30053 (DINFO.SETUP.WINDOW 27198 . 27879) (DINFO.CLOSEFN +27881 . 28865) (DINFO.SHRINKFN 28867 . 29063) (DINFO.EXPANDFN 29065 . 29622) (DINFO.ICONFN 29624 . +30051)) (30054 41376 (DINFO.ADD.FMENU 30064 . 31159) (DINFO.CREATE.FMENU 31161 . 35188) ( +DINFO.FMW.CLOSEFN 35190 . 36035) (DINFO.FMENU.HANDLER 36037 . 36676) (DINFO.UPDATE.FMENU 36678 . 38867 +) (DINFO.TOGGLE.MENU 38869 . 39459) (DINFO.TOGGLE.GRAPH 39461 . 39960) (DINFO.TOGGLE.HISTORY 39962 . +40506) (DINFO.TOGGLE.TEXT 40508 . 41374)) (41377 49172 (DINFO.UPDATE.MENU.DISPLAY 41387 . 45508) ( +DINFO.UPDATE.FROM.MENU 45510 . 45809) (DINFO.UPDATE.HISTORY 45811 . 48341) (DINFO.HISTORIC.UPDATE +48343 . 49170)) (49173 60036 (DINFO.UPDATE.GRAPH.DISPLAY 49183 . 50635) (DINFO.UPDATE.FROM.GRAPH 50637 + . 51208) (DINFO.GET.GRAPH.WINDOW 51210 . 52234) (DINFO.CREATE.GRAPH.WINDOW 52236 . 53353) ( +DINFO.SHOWGRAPH 53355 . 55080) (DINFO.INVERT.NODE 55082 . 56470) (DINFO.LAYOUTGRAPH 56472 . 60034)) ( +60037 66782 (DINFO.UPDATE.TEXT.DISPLAY 60047 . 62222) (DINFO.TITLEMENUFN 62224 . 63349) ( +DINFO.OPENTEXTSTREAM 63351 . 65142) (DINFO.SHOWSEL 65144 . 65877) (DINFO.GET.FILENAME 65879 . 66780))) )) STOP diff --git a/lispusers/DINFO.LCOM b/lispusers/DINFO.LCOM index d2035c374..98343a301 100644 Binary files a/lispusers/DINFO.LCOM and b/lispusers/DINFO.LCOM differ