1
0
mirror of synced 2026-01-16 08:43:50 +00:00

Use :DEFAULT to distinguish specifying the default when the DEFAULTPRINTINGHOST is NIL

Restores the Other - abort behavior.
This commit is contained in:
rmkaplan 2025-12-06 11:03:36 -08:00
parent ba4e42e027
commit 496b88a3ff
2 changed files with 100 additions and 91 deletions

View File

@ -1,10 +1,11 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 6-Dec-2025 00:46:05" {WMEDLEY}<sources>HARDCOPY.;94 149688
(FILECREATED " 6-Dec-2025 10:59:31" {WMEDLEY}<sources>HARDCOPY.;95 150352
:EDIT-BY rmk
:CHANGES-TO (FNS HARDCOPYREGION.TOPRINTER)
:CHANGES-TO (FNS MakeMenuOfPrinters HARDCOPYIMAGEW.TOPRINTER HARDCOPYREGION.TOPRINTER
NewPrinter HARDCOPYW)
:PREVIOUS-DATE " 5-Dec-2025 17:24:03" {WMEDLEY}<sources>HARDCOPY.;93)
@ -175,28 +176,31 @@
(HARDCOPY.SOMEHOW W (GetImageFile W])
(HARDCOPYIMAGEW.TOPRINTER
[LAMBDA (W DEFAULTPRINTER) (* ; "Edited 5-Dec-2025 17:23 by rmk")
[LAMBDA (W DEFAULTPRINTER) (* ; "Edited 6-Dec-2025 10:58 by rmk")
(* ; "Edited 19-Sep-2025 15:54 by rmk")
(* ; "Edited 18-Oct-2022 18:45 by lmm")
(* ; "Edited 22-Apr-98 16:19 by rmk:")
(* ; "Edited 11-Jul-90 13:55 by jds")
(LET ((PRINTERCHOICE (CL:IF DEFAULTPRINTER
(CAR (PRINTERS))
:DEFAULT
(GetPrinterName)))
PRINTERTYPE)
(if (LISTP PRINTERCHOICE)
then (* ;
(CL:WHEN PRINTERCHOICE
(CL:WHEN (EQ PRINTERCHOICE :DEFAULT)
(SETQ PRINTERCHOICE (DEFAULTPRINTER)))
(if (LISTP PRINTERCHOICE)
then (* ;
 "Got back a list, which is (TYPE NAME). Break it apart.")
(SETQ PRINTERTYPE (CAR PRINTERCHOICE))
(SETQ PRINTERCHOICE (CADR PRINTERCHOICE))
else (* ; "Got back just a name.")
(SETQ PRINTERTYPE (PRINTERTYPE PRINTERCHOICE)))
(SETQ PRINTERTYPE (CAR PRINTERCHOICE))
(SETQ PRINTERCHOICE (CADR PRINTERCHOICE))
else (* ; "Got back just a name.")
(SETQ PRINTERTYPE (PRINTERTYPE PRINTERCHOICE)))
(* ;; "HARDCOPY.SOMEHOW applies the window's HARDCOPYFN, or HARDCOPYW. But maybe the window should just be passed as a file to SEND.FILE.TO.PRINTER, and let its heuristics figure out what to do (CANPRINT, PREFERRED, etc.).")
(* ;; "HARDCOPY.SOMEHOW applies the window's HARDCOPYFN, or HARDCOPYW. But maybe the window should just be passed as a file to SEND.FILE.TO.PRINTER, and let its heuristics figure out what to do (CANPRINT, PREFERRED, etc.).")
(SEND.FILE.TO.PRINTER (HARDCOPY.SOMEHOW W (OPENSTREAM '{NODIRCORE} 'OUTPUT)
PRINTERTYPE)
PRINTERCHOICE])
(SEND.FILE.TO.PRINTER (HARDCOPY.SOMEHOW W (OPENSTREAM '{NODIRCORE} 'OUTPUT)
PRINTERTYPE)
PRINTERCHOICE))])
(HARDCOPYREGION.TOFILE
[LAMBDA NIL (* ; "Edited 26-Aug-87 14:08 by Snow")
@ -211,24 +215,29 @@
NIL NIL NIL (CDR FILE&TYPE])
(HARDCOPYREGION.TOPRINTER
[LAMBDA NIL (* ; "Edited 6-Dec-2025 00:45 by rmk")
[LAMBDA NIL (* ; "Edited 6-Dec-2025 10:24 by rmk")
(* ; "Edited 13-Jul-90 01:57 by jds")
(LET ((PRINTERCHOICE (GetPrinterName))
PRINTERTYPE)
[COND
((LISTP PRINTERCHOICE) (* ;
(CL:WHEN PRINTERCHOICE
(CL:WHEN (EQ PRINTERCHOICE :DEFAULT)
(SETQ PRINTERCHOICE (DEFAULTPRINTER)))
(if (LISTP PRINTERCHOICE)
then (* ;
 "Got back a list, which is (TYPE NAME). Break it apart.")
(SETQ PRINTERTYPE (CAR PRINTERCHOICE))
(SETQ PRINTERCHOICE (CADR PRINTERCHOICE)))
(PRINTERCHOICE (* ; "Got back just a name.")
(SETQ PRINTERTYPE (PRINTERTYPE PRINTERCHOICE]
(PROG (REGION)
(SPAWN.MOUSE)
(PROMPTPRINT "Select a region")
(SETQ REGION (GETREGION))
(CLRPROMPT)
(HARDCOPYW REGION (PACK* '{LPT} PRINTERCHOICE)
NIL NIL NIL (PRINTERTYPE PRINTERCHOICE])
(SETQ PRINTERTYPE (CAR PRINTERCHOICE))
(SETQ PRINTERCHOICE (CADR PRINTERCHOICE))
elseif PRINTERCHOICE
then (SETQ PRINTERCHOICE (CAR))
PRINTERCHOICE (* ; "Got back just a name.")
(SETQ PRINTERTYPE (PRINTERTYPE PRINTERCHOICE)))
(LET (REGION)
(SPAWN.MOUSE)
(PROMPTPRINT "Select a region")
(SETQ REGION (GETREGION))
(CLRPROMPT)
(HARDCOPYW REGION (PACK* '{LPT} PRINTERCHOICE)
NIL NIL NIL (PRINTERTYPE PRINTERCHOICE))))])
(COPY.WINDOW.TO.BITMAP
[LAMBDA (WINDOW) (* ; "Edited 26-Aug-87 14:09 by Snow")
@ -260,13 +269,13 @@
(DEFINEQ
(MakeMenuOfPrinters
[LAMBDA (MENUTITLE) (* ; "Edited 5-Dec-2025 12:47 by rmk")
[LAMBDA (MENUTITLE) (* ; "Edited 6-Dec-2025 09:52 by rmk")
(* ; "Edited 22-Jun-2023 17:30 by rmk")
(* ; "Edited 29-May-93 14:18 by rmk:")
(* ; "Edited 11-Jul-90 13:35 by jds")
(DECLARE (GLOBALVARS DEFAULTPRINTINGHOST))
(create MENU
ITEMS _ `(("(Default printer)" NIL)
ITEMS _ `(("(Default printer)" (KWOTE :DEFAULT))
,@(for P in (PRINTERS) unless (OR (NULL P)
(ZEROP (NCHARS P)))
collect (* ; "Skipped the NIL %"%" defaults")
@ -385,27 +394,28 @@
(CAR RESPONSE))])])
(NewPrinter
[LAMBDA (PRINTER NEW-DEFAULT?) (* ; "Edited 5-Dec-2025 13:21 by rmk")
[LAMBDA (PRINTER NEW-DEFAULT?) (* ; "Edited 6-Dec-2025 10:01 by rmk")
(* ; "Edited 11-Jul-90 13:48 by jds")
(* ;;; "If Printer is unknown it will be added to DEFAULTPRINTINGHOST. In addition, if NEW-DEFAULT? is true the printer will be pushed to the head of DEFAULTPRINTINGHOST, thus making it the default printer.")
(DECLARE (GLOBALVARS DEFAULTPRINTINGHOST))
(LET* ((PRINTERS (PRINTERS))
(PRINTER-NAME (CL:IF (LISTP PRINTER)
(CADR PRINTER)
PRINTER))
[MEMBER? (CL:MEMBER PRINTER-NAME PRINTERS :TEST '(LAMBDA (PRINTER ENTRY)
(STRING-EQUAL PRINTER
(CL:IF (LISTP ENTRY)
(CADR ENTRY)
ENTRY)]
(ENTRY (CL:IF MEMBER?
(CAR MEMBER?)
PRINTER)))
(SETQ DEFAULTPRINTINGHOST (CL:IF NEW-DEFAULT?
(CONS ENTRY (REMOVE ENTRY PRINTERS))
(NCONC1 PRINTERS ENTRY))])
(CL:UNLESS (EQ :DEFAULT PRINTER)
[LET* ((PRINTERS (PRINTERS))
(PRINTER-NAME (CL:IF (LISTP PRINTER)
(CADR PRINTER)
PRINTER))
[MEMBER? (CL:MEMBER PRINTER-NAME PRINTERS :TEST '(LAMBDA (PRINTER ENTRY)
(STRING-EQUAL PRINTER
(CL:IF (LISTP ENTRY)
(CADR ENTRY)
ENTRY)]
(ENTRY (CL:IF MEMBER?
(CAR MEMBER?)
PRINTER)))
(SETQ DEFAULTPRINTINGHOST (CL:IF NEW-DEFAULT?
(CONS ENTRY (REMOVE ENTRY PRINTERS))
(NCONC1 PRINTERS ENTRY))])])
(GetPrinterName
[LAMBDA NIL (* ; "Edited 29-May-93 13:58 by rmk:")
@ -502,6 +512,7 @@
(HARDCOPYW
[LAMBDA (WINDOW/BITMAP/REGION FILE HOST SCALEFACTOR ROTATION PRINTERTYPE HARDCOPYTITLE)
(* ; "Edited 6-Dec-2025 10:33 by rmk")
(* ; "Edited 27-Sep-2025 07:42 by rmk")
(* ; "Edited 19-Sep-2025 17:59 by rmk")
(* ; "Edited 18-Sep-2025 11:12 by rmk")
@ -513,6 +524,8 @@
(* ;; "WINDOW/BITMAP/REGION can be a WINDOW, a REGION, a BITMAP, or NIL = select region. If FILE supplied, output goes there. If HOST supplied, it is printed. If neither FILE nor HOST supplied, default is to print; if HARDCOPYTITLE is supplied it will be used as the document title of the hardcopy file created. If it isn't, 'Window Image' is used.")
(CL:WHEN (MEMB HOST '(NIL :DEFAULT))
(SETQ HOST (DEFAULTPRINTER)))
(PROG (PRINTHOST BITMAP SCREENREGION REGION BITMAPFILE)
[SETQ BITMAP (if (WINDOWP WINDOW/BITMAP/REGION)
then (COPY.WINDOW.TO.BITMAP WINDOW/BITMAP/REGION)
@ -534,22 +547,18 @@
elseif FILE
then (* ;
 "don't need a PRINTHOST if you give a file")
elseif [SETQ PRINTHOST (find HOST inside DEFAULTPRINTINGHOST
elseif [SETQ PRINTHOST (find HOST inside (PRINTERS)
suchthat (EQ PRINTERTYPE (PRINTERTYPE HOST]
else (ERROR "Can't find a printing host in DEFAULTPRINTINGHOST that is of type "
PRINTERTYPE)
(GO RETRY))
elseif PRINTHOST
then (SETQ PRINTERTYPE (PRINTERTYPE PRINTHOST))
elseif DEFAULTPRINTINGHOST
then (SETQ PRINTHOST (DEFAULTPRINTER))
(SETQ PRINTERTYPE (PRINTERTYPE PRINTHOST))
elseif (SETQ PRINTERTYPE (PRINTERTYPE PRINTHOST))
elseif FILE
then (CL:UNLESS (SETQ PRINTERTYPE (IMAGEFILETYPE FILE T))
(ERROR FILE "Can't tell what kind of print file to produce -- PRINTERTYPE, DEFAULTPRINTERTYPE, DEFAULTPRINTINGHOST all NIL"
)
(GO RETRY))
else (ERROR "Can't tell where to send window image -- HOST, DEFAULTPRINTINGHOST are NIL")
else (ERROR "Can't tell where to send window image -- HOST NIL")
(GO RETRY))
(CL:UNLESS SCALEFACTOR
(SETQ SCALEFACTOR (if REGION
@ -567,9 +576,9 @@
"Window Image"))
)
(CL:WHEN (OR HOST (NULL FILE))
[SEND.FILE.TO.PRINTER BITMAPFILE HOST '(DELETE ,(NULL FILE)
DOCUMENT.NAME
,(OR HARDCOPYTITLE "Window Image"])
[SEND.FILE.TO.PRINTER BITMAPFILE HOST '(DELETE %, (NULL FILE)
DOCUMENT.NAME %, (OR HARDCOPYTITLE
"Window Image"])
(RETURN (AND FILE BITMAPFILE])
(LISTFILES1
@ -2408,39 +2417,39 @@
(ADDTOVAR LAMA )
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (6398 13705 (HARDCOPY.SOMEHOW 6408 . 8644) (HARDCOPYIMAGEW 8646 . 9096) (
HARDCOPYIMAGEW.TOFILE 9098 . 9390) (HARDCOPYIMAGEW.TOPRINTER 9392 . 11057) (HARDCOPYREGION.TOFILE
11059 . 11601) (HARDCOPYREGION.TOPRINTER 11603 . 12684) (COPY.WINDOW.TO.BITMAP 12686 . 13703)) (13777
26081 (MakeMenuOfPrinters 13787 . 15245) (PRINTERS.WHENSELECTEDFN 15247 . 16870) (MakeMenuOfImageTypes
16872 . 17691) (GetNewPrinterFromUser 17693 . 18135) (PopUpWindowAndGetAtom 18137 . 19588) (
PopUpWindowAndGetList 19590 . 21160) (NewPrinter 21162 . 22558) (GetPrinterName 22560 . 22848) (
GetImageFile 22850 . 25829) (FetchDefaultPrinter 25831 . 26079)) (26136 44226 (DEFAULTPRINTER 26146 .
26407) (CONVERT.FILE.TO.TYPE.FOR.PRINTER 26409 . 27386) (CAN.PRINT.DIRECTLY 27388 . 27821) (EMPRESS
27823 . 28398) (HARDCOPYW 28400 . 33304) (LISTFILES1 33306 . 33483) (PRINTER.BITMAPFILE 33485 . 33874)
(PRINTER.BITMAPSCALE 33876 . 34360) (PRINTER.SCRATCH.FILE 34362 . 34673) (PRINTERPROP 34675 . 34925)
(PRINTERSTATUS 34927 . 35202) (PRINTERTYPE 35204 . 37839) (PRINTERNAME 37841 . 38927) (PRINTFILETYPE
38929 . 39191) (PRINTERTYPEP 39193 . 39418) (SEND.FILE.TO.PRINTER 39420 . 44224)) (44227 50786 (
PRINTERDEVICE 44237 . 45214) (PRINTERDEVICE.OPENFN 45216 . 45936) (PRINTERDEVICE.CLOSEFN 45938 . 49023
) (PRINTERDEVICEP 49025 . 49696) (PRINTERNAME 49698 . 50784)) (50848 52488 (PRINTERS 50858 . 52486)) (
52783 53341 (SCALEREGION 52793 . 53339)) (53565 60628 (TEXTTOIMAGEFILE 53575 . 54434) (
COPY.TEXT.TO.IMAGE 54436 . 60626)) (60690 62433 (\BLTSHADE.GENERICPRINTER 60700 . 62431)) (62500 99666
(MAKEHARDCOPYSTREAM 62510 . 64226) (UNMAKEHARDCOPYSTREAM 64228 . 65158) (HARDCOPYSTREAMTYPE 65160 .
65567) (\CHARWIDTH.HDCPYDISPLAY 65569 . 66389) (\DSPFONT.HDCPYDISPLAY 66391 . 69186) (
\DSPRIGHTMARGIN.HDCPYDISPLAY 69188 . 70043) (\DSPXPOSITION.HDCPYDISPLAY 70045 . 70420) (
\DSPYPOSITION.HDCPYDISPLAY 70422 . 70797) (\STRINGWIDTH.HDCPYDISPLAY 70799 . 71754) (
\STRINGWIDTH.HCPYDISPLAYAUX 71756 . 77096) (\HDCPYBLTCHAR 77098 . 81995) (\HDCPYDISPLAY.FIX.XPOS 81997
. 82754) (\HDCPYDISPLAY.FIX.YPOS 82756 . 83497) (\HDCPYDISPLAYINIT 83499 . 85189) (\HDCPYDSPPRINTCHAR
85191 . 91104) (\SLOWHDCPYBLTCHAR 91106 . 97722) (\CHANGECHARSET.HDCPYDISPLAY 97724 . 99664)) (99981
149532 (MAKEHARDCOPYMODESTREAM 99991 . 102712) (UNMAKEHARDCOPYMODESTREAM 102714 . 104304) (
\HCPYDISPLAYIMAGEOPS 104306 . 107126) (\BLTSHADE.HCPYMODE 107128 . 107794) (\BITBLT.HCPYMODE 107796 .
108544) (\BRUSHCONVERT.HCPYMODE 108546 . 109095) (\CHANGECHARSET.HCPYMODE 109097 . 112359) (
\DASHINGCONVERT.HCPYMODE 112361 . 112702) (\CHARWIDTH.HCPYMODE 112704 . 113141) (\DRAWLINE.HCPYMODE
113143 . 113672) (\DRAWCURVE.HCPYMODE 113674 . 114261) (\DRAWCIRCLE.HCPYMODE 114263 . 114748) (
\DRAWELLIPSE.HCPYMODE 114750 . 115434) (\DSPFONT.HCPYMODE 115436 . 118120) (\DSPLEFTMARGIN.HCPYMODE
118122 . 118864) (\DSPLINEFEED.HCPYMODE 118866 . 119499) (\DSPRIGHTMARGIN.HCPYMODE 119501 . 120569) (
\DSPSPACEFACTOR.HCPYMODE 120571 . 121346) (\DSPXPOSITION.HCPYMODE 121348 . 122366) (
\DSPYPOSITION.HCPYMODE 122368 . 123018) (\MOVETO.HCPYMODE 123020 . 123234) (\FONTCREATE.HCPYMODE
123236 . 125193) (\CREATECHARSET.HCPYMODE 125195 . 126918) (\STRINGWIDTH.HCPYMODE 126920 . 127715) (
\HCPYMODEBLTCHAR 127717 . 133467) (\HCPYMODEDSPPRINTCHAR 133469 . 139403) (\SLOWHCPYMODEBLTCHAR 139405
. 146034) (\SFFixY.HCPYMODE 146036 . 149530)))))
(FILEMAP (NIL (6487 14272 (HARDCOPY.SOMEHOW 6497 . 8733) (HARDCOPYIMAGEW 8735 . 9185) (
HARDCOPYIMAGEW.TOFILE 9187 . 9479) (HARDCOPYIMAGEW.TOPRINTER 9481 . 11310) (HARDCOPYREGION.TOFILE
11312 . 11854) (HARDCOPYREGION.TOPRINTER 11856 . 13251) (COPY.WINDOW.TO.BITMAP 13253 . 14270)) (14344
26760 (MakeMenuOfPrinters 14354 . 15825) (PRINTERS.WHENSELECTEDFN 15827 . 17450) (MakeMenuOfImageTypes
17452 . 18271) (GetNewPrinterFromUser 18273 . 18715) (PopUpWindowAndGetAtom 18717 . 20168) (
PopUpWindowAndGetList 20170 . 21740) (NewPrinter 21742 . 23237) (GetPrinterName 23239 . 23527) (
GetImageFile 23529 . 26508) (FetchDefaultPrinter 26510 . 26758)) (26815 44890 (DEFAULTPRINTER 26825 .
27086) (CONVERT.FILE.TO.TYPE.FOR.PRINTER 27088 . 28065) (CAN.PRINT.DIRECTLY 28067 . 28500) (EMPRESS
28502 . 29077) (HARDCOPYW 29079 . 33968) (LISTFILES1 33970 . 34147) (PRINTER.BITMAPFILE 34149 . 34538)
(PRINTER.BITMAPSCALE 34540 . 35024) (PRINTER.SCRATCH.FILE 35026 . 35337) (PRINTERPROP 35339 . 35589)
(PRINTERSTATUS 35591 . 35866) (PRINTERTYPE 35868 . 38503) (PRINTERNAME 38505 . 39591) (PRINTFILETYPE
39593 . 39855) (PRINTERTYPEP 39857 . 40082) (SEND.FILE.TO.PRINTER 40084 . 44888)) (44891 51450 (
PRINTERDEVICE 44901 . 45878) (PRINTERDEVICE.OPENFN 45880 . 46600) (PRINTERDEVICE.CLOSEFN 46602 . 49687
) (PRINTERDEVICEP 49689 . 50360) (PRINTERNAME 50362 . 51448)) (51512 53152 (PRINTERS 51522 . 53150)) (
53447 54005 (SCALEREGION 53457 . 54003)) (54229 61292 (TEXTTOIMAGEFILE 54239 . 55098) (
COPY.TEXT.TO.IMAGE 55100 . 61290)) (61354 63097 (\BLTSHADE.GENERICPRINTER 61364 . 63095)) (63164
100330 (MAKEHARDCOPYSTREAM 63174 . 64890) (UNMAKEHARDCOPYSTREAM 64892 . 65822) (HARDCOPYSTREAMTYPE
65824 . 66231) (\CHARWIDTH.HDCPYDISPLAY 66233 . 67053) (\DSPFONT.HDCPYDISPLAY 67055 . 69850) (
\DSPRIGHTMARGIN.HDCPYDISPLAY 69852 . 70707) (\DSPXPOSITION.HDCPYDISPLAY 70709 . 71084) (
\DSPYPOSITION.HDCPYDISPLAY 71086 . 71461) (\STRINGWIDTH.HDCPYDISPLAY 71463 . 72418) (
\STRINGWIDTH.HCPYDISPLAYAUX 72420 . 77760) (\HDCPYBLTCHAR 77762 . 82659) (\HDCPYDISPLAY.FIX.XPOS 82661
. 83418) (\HDCPYDISPLAY.FIX.YPOS 83420 . 84161) (\HDCPYDISPLAYINIT 84163 . 85853) (\HDCPYDSPPRINTCHAR
85855 . 91768) (\SLOWHDCPYBLTCHAR 91770 . 98386) (\CHANGECHARSET.HDCPYDISPLAY 98388 . 100328)) (
100645 150196 (MAKEHARDCOPYMODESTREAM 100655 . 103376) (UNMAKEHARDCOPYMODESTREAM 103378 . 104968) (
\HCPYDISPLAYIMAGEOPS 104970 . 107790) (\BLTSHADE.HCPYMODE 107792 . 108458) (\BITBLT.HCPYMODE 108460 .
109208) (\BRUSHCONVERT.HCPYMODE 109210 . 109759) (\CHANGECHARSET.HCPYMODE 109761 . 113023) (
\DASHINGCONVERT.HCPYMODE 113025 . 113366) (\CHARWIDTH.HCPYMODE 113368 . 113805) (\DRAWLINE.HCPYMODE
113807 . 114336) (\DRAWCURVE.HCPYMODE 114338 . 114925) (\DRAWCIRCLE.HCPYMODE 114927 . 115412) (
\DRAWELLIPSE.HCPYMODE 115414 . 116098) (\DSPFONT.HCPYMODE 116100 . 118784) (\DSPLEFTMARGIN.HCPYMODE
118786 . 119528) (\DSPLINEFEED.HCPYMODE 119530 . 120163) (\DSPRIGHTMARGIN.HCPYMODE 120165 . 121233) (
\DSPSPACEFACTOR.HCPYMODE 121235 . 122010) (\DSPXPOSITION.HCPYMODE 122012 . 123030) (
\DSPYPOSITION.HCPYMODE 123032 . 123682) (\MOVETO.HCPYMODE 123684 . 123898) (\FONTCREATE.HCPYMODE
123900 . 125857) (\CREATECHARSET.HCPYMODE 125859 . 127582) (\STRINGWIDTH.HCPYMODE 127584 . 128379) (
\HCPYMODEBLTCHAR 128381 . 134131) (\HCPYMODEDSPPRINTCHAR 134133 . 140067) (\SLOWHCPYMODEBLTCHAR 140069
. 146698) (\SFFixY.HCPYMODE 146700 . 150194)))))
STOP

Binary file not shown.