1
0
mirror of synced 2026-04-27 12:39:46 +00:00

Hardcopy to printer (#2290)

* Separate interface for imagefile creation from the send-to-printer interface
* SEND.FILE.TO.PRINTER recognizes :DEFAULTPRINTER
* Various changes to address #2414
* Move BITMAP properties from PRINTERTYPES to PRINTFILETYPES.
* Fix ShellOpen, add UNIX-TMP-FILE-NAME
* Include COERCEFONTSPEC changes in anticipation of HTML streams
* PDFSTREAM compatible with new imagefile architecture plus able to convert non-local Postscript streams
* SKETCH compatible with new imagefile/printing architecture
* TEDIT compatible with new printing architecture
* Tedit files are of type TEDIT, not TEXT, new interface function TEDIT.TO.IMAGEFILE
* ATTACHEDWINDOW:  DOATTACHEDWINDOWCOM allows menu to have a form to EVAL, like the background menu
* WINDOW: fix menus for new hardcopy architecture
* Remove FLUSHFONTSINCORE--FLUSHFONTCACHE is more general
* LOAD character names as suggested in PR #2398
* HARDCOPYW respects file extension
* VIEWER as default printinghost
* SLASHIT interprets '.
* MCCS to UTF8 conversion on printer name
* Deal with {LPT}.LOCAL and upper casing
* @ LPT printers work with exact upper/lower matching
* Using NSPRINT functions to recognize fax
* Let "UNIX" be the name of the default printer of type UNIX
This commit is contained in:
rmkaplan
2026-01-26 15:38:22 -08:00
committed by GitHub
parent 23cef354eb
commit 65df2ba6a4
63 changed files with 3435 additions and 3177 deletions

View File

@@ -1,14 +1,13 @@
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "28-Apr-92 17:29:44" |{PELE:MV:ENVOS}<LISPCORE>SOURCES>NSPRINT.;3| 30963
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS \NSPRINT.INTERNAL)
(FILECREATED "19-Jan-2026 13:20:47" {WMEDLEY}<sources>NSPRINT.;4 31625
previous date%: "16-May-90 20:54:31" |{PELE:MV:ENVOS}<LISPCORE>SOURCES>NSPRINT.;2|)
:EDIT-BY rmk
:CHANGES-TO (FNS \FAX.PARSE.NAME FAX.HOSTNAMEP)
:PREVIOUS-DATE "12-Dec-2025 19:35:12" {WMEDLEY}<sources>NSPRINT.;2)
(* ; "
Copyright (c) 1984, 1985, 1986, 1987, 1990, 1992 by Venue & Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT NSPRINTCOMS)
@@ -37,10 +36,7 @@ Copyright (c) 1984, 1985, 1986, 1987, 1990, 1992 by Venue & Xerox Corporation.
(HOSTNAMEP FAX.HOSTNAMEP)
(STATUS FAX.STATUS)
(PROPERTIES FAX.PROPERTIES)
(SEND FAX.SEND.FILE)
(BITMAPSCALE INTERPRESS.BITMAPSCALE)
(BITMAPFILE (INTERPRESSBITMAP FILE BITMAP SCALEFACTOR REGION
ROTATION TITLE])
(SEND FAX.SEND.FILE])
(COURIERPROGRAM PRINTING (4 3)
TYPES
@@ -448,14 +444,61 @@ Copyright (c) 1984, 1985, 1986, 1987, 1990, 1992 by Venue & Xerox Corporation.
)
(FAX.HOSTNAMEP
(LAMBDA (PRINTERNAME) (* bvm%: "16-Sep-85 22:51") (* ;;; "True if PRINTERNAME is something that looks like a FAX spec, i.e., person@place, where place is a phone number or something registered as a fax address. Stupid for now") (AND (STRPOS "@" PRINTERNAME) (QUOTE FAX)))
)
[LAMBDA (PRINTERNAME) (* ; "Edited 19-Jan-2026 12:15 by rmk")
(* bvm%: "16-Sep-85 22:51")
(* ;;; "True if PRINTERNAME is something that looks like a FAX spec, i.e., person@place, where place is a phone number or something registered as a fax address. Stupid for now")
(CL:WHEN (if PRINTERNAME
then (CAR (\FAX.PARSE.NAME PRINTERNAME T))
elseif DEFAULTFAXHOST)
'FAX])
(\FAX.PARSE.NAME
(LAMBDA (PLACE) (* bvm%: "17-Sep-85 15:58") (* ;;; "Parse a Fax spec 'Person@Place' and return a dotted pair (FaxServer . PrintOptions)") (PROG (AT PERSON DESTINATION PHONE HOST MSG INFO) RETRY (SETQ AT (STRPOS "@" PLACE)) (COND ((SETQ PERSON (AND (NEQ AT 1) (SUBSTRING PLACE 1 (SUB1 AT)))) (SETQ PERSON (LIST (QUOTE RECIPIENT.NAME) PERSON)))) (SETQ DESTINATION (SUBSTRING PLACE (ADD1 AT))) (COND ((for CH instring DESTINATION always (OR (DIGITCHARP CH) (EQ CH (CHARCODE -)) (EQ CH (CHARCODE *)) (EQ CH (CHARCODE %#)))) (* ; "Looks like a phone number") (SETQ PHONE DESTINATION)) ((AND (SETQ INFO (CDR (ASSOC (MKATOM (U-CASE DESTINATION)) FAXADDRESSES))) (SETQ PHONE (CAR INFO))) (SETQ HOST (CADR INFO))) (T (SETQ MSG (CONCAT "The FAX destination %"" DESTINATION "%" is unknown.
Edit the list FAXADDRESSES")) (GO FAIL))) (COND ((AND (NULL HOST) (NULL (SETQ HOST DEFAULTFAXHOST))) (SETQ MSG "Don't know the name of your local FAX server.
Set the variable DEFAULTFAXHOST") (GO FAIL))) (RETURN (CONS HOST (CONS (QUOTE MESSAGE) (CONS PHONE PERSON)))) FAIL (ERROR (CONCAT "Don't understand " PLACE " because:") (CONCAT MSG " appropriately, then say OK.
Alternatively, RETURN %"name@CorrectPhoneOrDestination%"")))))
[LAMBDA (PLACE NOERROR) (* ; "Edited 19-Jan-2026 13:18 by rmk")
(* bvm%: "17-Sep-85 15:58")
(* ;;; "Parse a Fax spec 'Person@Place' and return a dotted pair (FaxServer . PrintOptions)")
(PROG (AT PERSON DESTINATION PHONE HOST MSG INFO)
RETRY
(SETQ AT (STRPOS "@" PLACE))
(CL:UNLESS AT (GO FAIL))
[COND
([SETQ PERSON (AND (NEQ AT 1)
(SUBSTRING PLACE 1 (SUB1 AT]
(SETQ PERSON (LIST 'RECIPIENT.NAME PERSON]
(SETQ DESTINATION (SUBSTRING PLACE (ADD1 AT)))
(COND
([for CH instring DESTINATION always (OR (DIGITCHARP CH)
(EQ CH (CHARCODE -))
(EQ CH (CHARCODE *))
(EQ CH (CHARCODE %#]
(* ; "Looks like a phone number")
(SETQ PHONE DESTINATION))
((AND (SETQ INFO (CDR (ASSOC (MKATOM (U-CASE DESTINATION))
FAXADDRESSES)))
(SETQ PHONE (CAR INFO)))
(SETQ HOST (CADR INFO)))
(T (SETQ MSG (CONCAT "The FAX destination %"" DESTINATION
"%" is unknown.
Edit the list FAXADDRESSES"))
(GO FAIL)))
(COND
((AND (NULL HOST)
(NULL (SETQ HOST DEFAULTFAXHOST)))
(SETQ MSG
"Don't know the name of your local FAX server.
Set the variable DEFAULTFAXHOST")
(GO FAIL)))
[RETURN (CONS HOST (CONS 'MESSAGE (CONS PHONE PERSON]
FAIL
(CL:WHEN NOERROR (RETURN NIL))
(ERROR (CONCAT "Don't understand " PLACE " because:")
(CONCAT MSG
" appropriately, then say OK.
Alternatively, RETURN %"name@CorrectPhoneOrDestination%""))
(GO RETRY])
)
(RPAQ? DEFAULTFAXHOST )
@@ -468,23 +511,19 @@ Alternatively, RETURN %"name@CorrectPhoneOrDestination%"")))))
(GLOBALVARS DEFAULTFAXHOST FAXADDRESSES FAX.NO.WATCHER)
)
(ADDTOVAR PRINTERTYPES
((FAX TELECOPIER)
(CANPRINT (INTERPRESS))
(HOSTNAMEP FAX.HOSTNAMEP)
(STATUS FAX.STATUS)
(PROPERTIES FAX.PROPERTIES)
(SEND FAX.SEND.FILE)
(BITMAPSCALE INTERPRESS.BITMAPSCALE)
(BITMAPFILE (INTERPRESSBITMAP FILE BITMAP SCALEFACTOR REGION ROTATION TITLE))))
(PUTPROPS NSPRINT COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1986 1987 1990 1992))
(ADDTOVAR PRINTERTYPES ((FAX TELECOPIER)
(CANPRINT (INTERPRESS))
(HOSTNAMEP FAX.HOSTNAMEP)
(STATUS FAX.STATUS)
(PROPERTIES FAX.PROPERTIES)
(SEND FAX.SEND.FILE)))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (10281 25115 (GETNSPRINTER 10291 . 11044) (NSPRINT 11046 . 12594) (\NSPRINT.INTERNAL
12596 . 23038) (\NSPRINT.MEDIUM.CHECK 23040 . 23418) (\NSPRINT.UNSUPPORTED 23420 . 23725) (
NSPRINTER.HOSTNAMEP 23727 . 23998) (NSPRINTER.STATUS 24000 . 24123) (NSPRINTER.PROPERTIES 24125 .
24257) (NSPRINTREQUEST.STATUS 24259 . 24421) (\NSPRINT.ENQUIRE 24423 . 24906) (\NSPRINT.COURIER.OPEN
24908 . 25113)) (25148 27735 (\NSPRINT.WATCHDOG 25158 . 26415) (\NSPRINT.WATCH.JOB 26417 . 26848) (
\NSPRINT.FULL.REQUEST.STATUS 26850 . 27733)) (27871 30302 (FAX.SEND.FILE 27881 . 28273) (FAX.STATUS
28275 . 28513) (FAX.PROPERTIES 28515 . 28771) (FAX.HOSTNAMEP 28773 . 29066) (\FAX.PARSE.NAME 29068 .
30300)))))
(FILEMAP (NIL (9930 24764 (GETNSPRINTER 9940 . 10693) (NSPRINT 10695 . 12243) (\NSPRINT.INTERNAL 12245
. 22687) (\NSPRINT.MEDIUM.CHECK 22689 . 23067) (\NSPRINT.UNSUPPORTED 23069 . 23374) (
NSPRINTER.HOSTNAMEP 23376 . 23647) (NSPRINTER.STATUS 23649 . 23772) (NSPRINTER.PROPERTIES 23774 .
23906) (NSPRINTREQUEST.STATUS 23908 . 24070) (\NSPRINT.ENQUIRE 24072 . 24555) (\NSPRINT.COURIER.OPEN
24557 . 24762)) (24797 27384 (\NSPRINT.WATCHDOG 24807 . 26064) (\NSPRINT.WATCH.JOB 26066 . 26497) (
\NSPRINT.FULL.REQUEST.STATUS 26499 . 27382)) (27520 31135 (FAX.SEND.FILE 27530 . 27922) (FAX.STATUS
27924 . 28162) (FAX.PROPERTIES 28164 . 28420) (FAX.HOSTNAMEP 28422 . 28988) (\FAX.PARSE.NAME 28990 .
31133)))))
STOP