Skip to content

Clicking on the graph after the main window has closed does't break #2146

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 55 additions & 35 deletions lispusers/DINFO
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)

(FILECREATED "25-May-2024 13:19:49" {WMEDLEY}<lispusers>DINFO.;14 65819
(FILECREATED " 9-May-2025 21:15:54" {WMEDLEY}<lispusers>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}<lispusers>DINFO.;13)
:PREVIOUS-DATE " 7-May-2025 10:13:33" {WMEDLEY}<lispusers>DINFO.;17)


(PRETTYCOMPRINT DINFOCOMS)
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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])
Expand Down Expand Up @@ -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))
Expand All @@ -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)))
Expand Down Expand Up @@ -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")
Expand All @@ -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
Expand Down Expand Up @@ -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
Binary file modified lispusers/DINFO.LCOM
Binary file not shown.