1
0
mirror of synced 2026-03-17 23:52:35 +00:00

Compare commits

...

111 Commits

Author SHA1 Message Date
Larry Masinter
90c81b6f60 reduce changes: no separate MAKEFILE-NEW but fix so it will not copy from previous version if you do MAKEFILE(something NEW). 2024-04-18 12:57:42 -07:00
Larry Masinter
929690c6a3 fix FILEPKG so that MAKEFILE(NEW) never references the 'previous version' and recompiles the whole file 2024-01-30 15:09:30 -08:00
Matt Heffron
39ee2ecb5d Merge pull request #1518 from Interlisp/mth1--a-few-UNICODE-cleanups
A few fixes to UNICODE that I stumbled across.
2024-01-26 16:12:25 -08:00
Matt Heffron
a90b7ed73d A few fixes to UNICODE that I stumbled across.
READ-UNICODE-MAPPING-FILENAMES returned a bare string if FILESPEC matched 1 file (first clause of the (OR...) in join), this caused READ-UNICODE-MAPPING to fail.
SHOWCHARS referenced variable CODE that should have been C
Added FILETYPE property to UNICODE to specify TCOMPL compiler.
(Other changes are formatting by pretty printer, not mine.)
2024-01-26 14:38:04 -08:00
rmkaplan
54b2607070 Removed STORAGE.LCOM (#1511) 2024-01-19 23:53:12 -08:00
rmkaplan
971e8936b6 Replace \TEDIT.FORMATTED1 with TEDIT.FORMATTEDFILEP (#1508)
Internal \TEDIT.FORMATTED1 is being decommissioned
2024-01-19 21:49:45 -08:00
rmkaplan
e276460836 HRULE: More informative error messages (#1501) 2024-01-14 17:46:24 -08:00
Frank Halasz
ab818ff335 Merge pull request #1500 from Interlisp/repair-cpv
oops missing edit cpv
2024-01-12 17:23:16 -08:00
Larry Masinter
47d77542be oops missing edit cpv 2024-01-12 11:59:32 -08:00
rmkaplan
934d0fb7a4 Move charset management to externalformat (addresses #1454) (#1455)
* Move charset management to externalformat (addresses #1454)

Removed IMCHARSET from IMAGEOPS declaration, added FORMATCHARSETFN to EXTERNALFORMAT, put XCCS charset handling in the XCCS externalformat.

* XCCS, fixed a glitch

* UNICODE: Remove merge conflict

* Fix typo CLFUNCALL, MAKEFILE NEW and BCOMPL (versions didn't match)

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2024-01-12 11:42:22 -08:00
Frank Halasz
6420bdcf27 Fix for Issue #1472 (loadup failure on btrfs): update how cpv scripts handles hardlink versus copy (#1497) 2024-01-12 05:34:57 -08:00
rmkaplan
1d6e43e1ea Minor fixups (typos, formatting) to a few existing documentation files (#1470)
* Mostly minor fixups (typos, formatting) to a few existing documentation files

Plus converting the Unicode documentation from TXT to formatted

* Update UNICODE.TEDIT

Previous version did not have page-looks (heading location etc.)

* UNICODE.TEDIT:  write unbreakable charlook property

* Delete UNICODE.TEDIT

Master has a newer version, trying to eliminate conflict
2024-01-10 12:31:28 -08:00
rmkaplan
8837c61f85 SKETCHOPS (unhyphenated) should have been included (#1464) 2024-01-10 10:49:04 -08:00
rmkaplan
18aae01362 Suppresses size coercion for Titan 12 (#1476)
* Suppresses size coercion for Titan 12

* Typo
2024-01-10 10:48:03 -08:00
rmkaplan
a84242561a Rmk100 unicode utf 8 update (#1489)
* UNICODE:  a few additional Tedit helpers, revised documentation

* New JIS files (courtesy of Peter)

* Updated mapping files (courtesy of Peter Craven)

* UNICODE:  changed SHOULDNT to ERROR
2024-01-10 10:47:16 -08:00
Matt Heffron
70885c5a19 Merge pull request #1487 from Interlisp/mth-LockXorShift-issue-1486
change for CapsLock & Shift to be XOR vs OR.
2024-01-10 10:02:50 -08:00
Matt Heffron
57de705f39 Fix error in flag testing logic.
(No more midnight coding!)
2024-01-03 16:12:23 -08:00
Matt Heffron
7c3fa261c7 Rename KEYBOARD.SHIFTXORLOCK to SHIFTXORLOCKFLG.
(More inline with Medley/Interlisp convention.)
2024-01-03 12:37:30 -08:00
Matt Heffron
7fe4d2dcca Merge branch 'mth-LockXorShift-issue-1486' of https://github.com/Interlisp/medley into mth-LockXorShift-issue-1486
# Includes changes to make Shift XOR Lock behavior be conditional on GLOBALVAR KEYBOARD.SHIFTXORLOCK:
#	sources/LLKEY
#	sources/LLKEY.LCOM
The changes were made before the merge, and then Stashed.
2024-01-03 00:41:28 -08:00
Matt Heffron
30a4697d75 On Branch_medley-231217-3727653e: LLKEY 2024-01-03 00:22:14 -08:00
Matt Heffron
60a766574d index on Branch_medley-231217-3727653e: 3727653e Rmk96 move sketch files to library/sketch (#1446) 2024-01-03 00:22:14 -08:00
Matt Heffron
25a18f6bc0 Merge branch 'master' into mth-LockXorShift-issue-1486 2024-01-02 22:59:03 -08:00
Matt Heffron
6558a49adb change for CapsLock & Shift to be XOR vs OR. 2024-01-02 19:46:15 -08:00
Larry Masinter
4b30aa1640 update medley README to match new build instructions (#1458)
* update medley README to match new build instructions

* Remove NUL character

* Fix grammatical and typographic errors reported by Matt

* Fixed a few typos, some punctuation, a bit of wording, and removed the Docker references (Docker related files aren't in the repo anymore).

* A few more fixes

---------

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
Co-authored-by: Matt Heffron <heffron@alumni.caltech.edu>
2024-01-01 21:35:58 -08:00
rmkaplan
3727653e23 Rmk96 move sketch files to library/sketch (#1446)
* Move all SKETCH files from library/ to library/sketch/

and rename subsidiary files SKETCHXXX to SKETCH-XXX, according to our hyphen convention.  This will allow SKETCH and all its subsidiary files to be loaded automatically when the sketch GETFN is required to display an image object.

* New files again

Somehow GITFNS produced smashed copies on the first attempt.  May have to do with the fact that Medley doesn't always report that it couldn't create a new directory, or otherwise behaves badly in that situation.
2023-12-17 16:42:59 -08:00
rmkaplan
b1294ea5e9 Rmk94 fix checkeolc macro (#1435)
* EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention

* Recompile callers of \CHECKEOLC macro

* If ANY and no CR after LF, return EOL instead of CR
2023-12-09 22:50:39 -08:00
Matt Heffron
2a9076bede Change files DEFINE-FILE-INFO (i.e., the IL:MAKEFILE-ENVIRONMENT) to fix issue #1447 (#1448) 2023-12-09 22:42:28 -08:00
rmkaplan
72456ce4ec WINDOWOBJ: READIMAGEOBJ doesn't ask for permission (#1449)
If the image object is on a hyphenated file and it can find a nonhyphenated sister, it loads that.  If that doesn't provide the getfn, it tries the original file.
2023-12-09 22:41:43 -08:00
rmkaplan
c8c4768315 WINDOWOBJ: Better handling of unknown image objects (#1436)
* WINDOWOBJ: Better handling of unknown image objects

2 changes:   If WHEREIS says that an unknown getfn is on FOO-FIE and FOO>FOO exists, then offer FOO in the mouseconfirm.  This should get all the support code (e.g. TMAX is offered instead of TMAX-NUMBER).  Issue #748.  Separately, if the getfn is not found when the file is opened (so the image object is encapsulated), the encapsulated imagebox fn will upgrade the image if the getfn exists when the object is redisplayed.

* Glitch
2023-12-02 15:51:20 -08:00
Larry Masinter
735108ecb7 Pull in newer or missing library/*.tedit files (#1398) 2023-11-29 14:05:09 -08:00
rmkaplan
f735fca83e POSTSCRIPTSTREAM: POSTSCRIPTFILEP applies also to closed files (#1434) 2023-11-29 07:14:00 -08:00
rmkaplan
560def37bc PSEUDHOSTS and .TEDIT: Apply TRUEFILENAME on PREFIX, update documenta… (#1385)
* PSEUDHOSTS and .TEDIT: Apply TRUEFILENAME on PREFIX, update documentation

Documentation addresses #1303 .  Using TRUEFILENAME makes sure it always goes to a ground instance in e.g.  (PSEUDOHOST 'MEDLEY '{MEDLEY}).

* PSEUDOHOSTS.LCOM and .TEDIT

Appear to have gotten out of step
2023-11-29 07:11:37 -08:00
rmkaplan
41f32b7db5 INTERPRESS fixes some of the Asciifont-to-NS character mappings, MATHTONS is obsolete (#1413)
* Fixes some of the character mappings from Ascii fonts into NS, moves Math mappings into Interpress

The separate lispusers/MATHTONS is now obsolete.

* INTERPRESS:  Add back empty ASCIITONSTRANSLATIONS

Turns out they were intended, not a mistake.  But that was just a shorthand for saying MODERN, as a fall back.  I made that explicit.
2023-11-29 07:09:38 -08:00
rmkaplan
ab831a46ba Add a hook to extend FILEBROWSER SEE, PDFSTREAM uses it (#1414)
So SEE of a PDF file should open up a desktop window in a pdf viewer.  (This uses PDFILEP, which looks inside the file, not at the extension.  So it might try to open a file with a wrong extension, and the viewer might fail.)
2023-11-29 07:04:58 -08:00
rmkaplan
f1cf759098 LLSYMBOL's FILEMAP was also incomplete (#1381)
This update hopefully won't reveal any other problems
2023-11-29 06:58:58 -08:00
rmkaplan
017bf88a3a FILEIO: OPENSTREAM parameters default to STREAMPROP (#1335)
also add LINELENGTH
2023-11-29 06:47:14 -08:00
Nick Briggs
b2f750e549 Restore NSPROTECTION files to lispusers (#1430) 2023-11-22 22:05:26 -08:00
Frank Halasz
8cf17ce950 Fix loadup-apps-from-full.sh so that it fails gracefully when a notecards directory cannot be found (#1428) 2023-11-21 21:40:19 -08:00
Larry Masinter
008aff1d25 EDITBMPATCHES already in EDITBM; NEW-SKETCH-COLOR saved but in Obsolete (#1379) 2023-11-20 22:58:06 -08:00
Larry Masinter
214cfb8674 Add some files to set analyzed in fuller.database (#1425) 2023-11-20 22:56:11 -08:00
Larry Masinter
2e7b88d0cc Recompile files that seemed to have \IS.NO.RANDACCESSP in compiled code (#1417) 2023-11-20 22:48:37 -08:00
Frank Halasz
14fbff63cf Merge pull request #1419 from Interlisp/fgh_LDEKBDTYPE
Set LDEKBDTYPE to X in run-medley - if not already set.  Works around issue with loading VIRTUALKEYBOARDS
2023-11-17 23:20:26 -08:00
Frank Halasz
bec32f475a Merge pull request #1420 from Interlisp/fgh_ShellBrowserGit
Fix minor issue in ShellBrowser - when using the git path was missing the web--browse subcommand.
2023-11-17 23:19:31 -08:00
rmkaplan
6e845d747f ADIR fix UNPACKFILENAME.STRING address #1416 (#1421)
The early . was seen as starting an extension, the ! then was seen as starting a version.  When the other marks caused those hypotheses to be revised, the extension's end wasn't being revised
2023-11-14 07:11:58 -08:00
Frank Halasz
459aeef74a Merge branch 'master' into fgh_LDEKBDTYPE 2023-11-13 13:07:55 -08:00
Frank Halasz
19ceac6515 Fix the git case in ShellBrowser. Was missing the web--browse argument. 2023-11-13 13:04:16 -08:00
Frank Halasz
914604a6eb Set LDEKBDTYPE to X in run-medley - if not already set. Fixes issue with loading VIRTUALKEYBOARDS 2023-11-13 12:42:34 -08:00
Larry Masinter
05f3ad19eb Update CLHS reference to use Interlisp CHLS instead; use UNIXUTILS ShellBrowser (#1412) 2023-11-13 12:12:56 -08:00
Frank Halasz
c62c183ae4 Update ShellOpen to handle versioned files; add ShellOpen into SEE-PDF in place of MacOS-specific open. (#1410)
* Update PDFSTREAM: integrate ShellOpen into PDF-SEE in place of MacOS specific calls; update how PDFCONVERTER is set to fix bug whereby it was always ps2pdf

* Fix ShellOpen so that if a file to open is versioned then that file is copied to tmp and its filename is changed from foo.pdf;25 to foo~25~.pdf and this tmp is passed to the opener instead of the original file.  This is so that the extension is preserved as the last thing when there are versions.  The extension as the last thing is used by most openers to determine the file type.

* Oops. Checked in the wriong versions of UNIXUTILS(.DFASL) last commit.  Correcting that here.
2023-11-11 11:05:24 -08:00
rmkaplan
328d3f53cd NEARESTCORNER must be onscreen (addresses #1294 (#1295)
* NEARESTCORNER must be onscreen  (addresses #1294

Mouse jumps to the nearest onscreen corner of the ghost region

* MODERNIZE:  Fixed off by one bug in NEARESTCORNER
2023-11-03 17:45:49 -07:00
rmkaplan
5b90251210 Patch to REGIONMANAGER and ADISPLAY for SCREENREGIONS (#1387)
For ADISPLAY, just added SCREENREGIONP.  Fixed typos in REGIONMANAGER.TEDIT
2023-11-03 17:39:33 -07:00
rmkaplan
713f2388c7 COMPAREDIRECTORIES, COMPARESOURCES, COMPARETEXT, EXAMINEDEFS (#1329)
* COMPAREDIRECTORIES, COMPARESOURCES, COMPARETEXT, EXAMINEDEFS

Relatively minor cleanups, little or no functionality improvements

* COMPAREDIRECTORIES:  Get AUTHOR only if selected

This may provide a little speed up.  But of more importance, almost all the array crashes I am seeing are underneath (GETFILEINFO xxx 'AUTHOR).  The UFS implementation may be smashing array space, or maybe it is just detecting the corruption.  For now, I'm eliminating this potential source of bad behavior.

* EXAMINEDEFS: Better interpretation of TYPE NIL = (FNS FUNCTIONS) with better formatting

* COMPARETEXT: fixed to avoid EOF error if EOL gets confused
2023-11-02 19:23:38 -07:00
rmkaplan
f49729cbd3 COLOROBJ never worked, move to obsolete (#1374) 2023-10-30 21:37:59 -07:00
Matt Heffron
bdf03e08a1 Modify CL:CHAR-NAME always to return string from lookup in IL:CHARACTERNAMES. (#1377)
This *seems* to fix the issue with printing "control characters" in #\Name format.
2023-10-30 19:43:13 -07:00
Frank Halasz
b19cfd5bbb Revert "Merge pull request #1331 from Interlisp/Remake-CMLARITH-filemap" (#1376)
This reverts commit e2d8c9e5ad, reversing
changes made to 9054814ef7.
2023-10-30 13:21:24 -07:00
Matt Heffron
e2d8c9e5ad Merge pull request #1331 from Interlisp/Remake-CMLARITH-filemap
CMLARAITH:  Makefile new to get fns/functions in filemap
2023-10-29 22:51:41 -07:00
Matt Heffron
2ea1321d81 Merge branch 'master' into Remake-CMLARITH-filemap
Signed-off-by: Matt Heffron <mattheffron475@gmail.com>
2023-10-29 22:38:03 -07:00
Frank Halasz
9054814ef7 Add dribble file to app-from-full loadup (#1371) 2023-10-29 10:00:59 -07:00
rmkaplan
84dead86af Patch TEDIT.DEACTIVATE.WINDOW in old Tedit (#1361) 2023-10-28 14:34:25 -07:00
rmkaplan
5e83d63567 VIRTUALKEYBOARD: fix loadup (#1262)
* VIRTUALKEYBOARD:  fix loadup

* Reorganizing VIRTUALKEYBOARDS as described in #1267

* KEYBOARDEDITOR:  fixed one bug, still is out of step

* Move KEYBOARDCONFIGS KEYBOARDEDIT to library/virtualkeyboards

This collects all files relevant to VIRTUALKEYBOARDS into the same subdirectory
2023-10-28 14:21:32 -07:00
rmkaplan
bcfeda62e1 EQUALALL tests equivalence of bitmaps and big bitmaps (#1302)
* EQUALALL tests equivalence of bitmaps and big bitmaps

* Oops, off by one

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-23 21:18:57 -07:00
Frank Halasz
45513f563b Extend changes made in PR#1356 to medley/sh et al to handle -title arguments with space; extend to handle vnc case and well as without vnc case. (#1358) 2023-10-19 17:04:40 -07:00
Frank Halasz
db084c6281 Add copy-full.sh to loadup-full.sh script to copy loadup products from the tmp directory into MEDLEYDIR/loadups - make loadup-full akin to loadup-all (#1359) 2023-10-18 20:53:24 -07:00
Matt Heffron
6c53acaca8 Merge pull request #1356 from Interlisp/EnableMedleyWindowTitleWithSpaces
Modify launcher to enable --title STRING option to work when STRING has embedded spaces (multiple words).
2023-10-18 14:01:19 -07:00
rmkaplan
fbb5a8f6f5 Expose useful subfunctions in REGIONMANAGER (#1336)
* Expose useful subfunctions

* REGISTER-TYPED-REGION creates a new TYPED-REGIONS entry

If a window is closed whose region is of an as-yet-unknown type, a new entry will be added implicitly to TYPED-REGIONS to that that region and future regions of that type can be recycled.

* If a window with a typed-region is reshaped and then closed, the typed-region is also reshaped for reuse

Also, the typed-region of a window is pushed on the front of the TYPED-REGIONS list when the window is closed, so the most recent region of that type will be used the next time.  Recency seems more intuitive than primacy
2023-10-18 07:38:27 -07:00
Matt Heffron
cb8eab788a Modify launcher to enable --title STRING option to work when STRING has embedded spaces (multiple words). 2023-10-17 23:40:26 -07:00
rmkaplan
50dc0a9269 Remove calls to openfile (#1333)
* Remove calls to OPENFILE

OPENFILE is a residual Interlisp function that returns a litatom instead of a stream.  In almost all cases, this immediate causes an error that litatom files are no longer supported.  I have found (FINDCALLERS) all the examples in lispusers/sources/library/ and replaced OPENFILE with OPENSTREAM (except for the calls from \PEEKPUP and \PEEKNS, that I didn't track down).  There was a trivai call in COMPILE.FILECHECK in COMPILE, but that function is not called anywhere.  So I removed it.

* ADIR:  remove OPENFILE calls, also another stab at \COPYSYS

With respect to \COPYSYS, this replaces the draft PR #1263.  This applies TRUEFILENAME at the start, but remembers whether it was in fact a pseudohost and restores that for the return value.  So if you start in a pseudo world you end up there.

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-17 21:54:17 -07:00
Larry Masinter
9273cffce2 pull (non-working) TCP files to obsolete (#1283) 2023-10-17 21:34:17 -07:00
rmkaplan
df8c5a52f1 Also remade filemap for CMLCHARACTER (and changed from LCOM to DFASL)
CLEANUP is confused about how to compile.  This had FILETYPE = CL-COMPILE-TYPE, with an existing LCOM.  It produced a new DFASL, but the LCOM was still hanging around.  I'm deleting the LCOM here, pushing the new DFASL.
2023-10-17 13:33:18 -07:00
rmkaplan
a219ea03e5 Improve check for closed stream in \UFSCloseFile. (#1334)
Check if the (STREAM ACCESS) bits are NIL, indicating a closed stream, and
if so do not attempt to close the file again

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-16 15:54:34 -07:00
rmkaplan
2072deb6ae GITFNS: preserves casing of pseudohost prefix-paths of medley projects (#1344)
Also, minor edit to GITFNS.TEDIT, but now also includes a Tedit timestamp.
2023-10-16 15:37:09 -07:00
rmkaplan
f6c91ee11c FONTPROFILE: specvars declaration for cleanliness (#1351) 2023-10-16 15:35:17 -07:00
rmkaplan
adc27d9684 MEDLEYDIR: Pack DSK as the default HOST on the value of (UNIX-GETENV "MEDLEYDIR") (#1282)
Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-16 14:45:29 -07:00
Matt Heffron
d92aa6395a Manager (Lispusers) grow anchor, icon, and fix typo. (#1346)
* File See operations use full path to loaded file.
Add Manager.WINDOW-ANCHOR to fix corner from which MANAGER-MAIN-WINDOW grows, and (attempt) to keep it on-screen.

* Improved handling of the ICONW for MANAGER-MAIN-WINDOW.

* Fix typo in MasterScope functions (multiple occurrences: LOADBFLG should be LOADDBFLG).
Changed to CL compiler by default (not need to go to submenu). This is my preference, so I should remove it before setting pull request.

* Manual cleanup of multiple "Edited" comments in 4 FNS.
Reverted: Changed to CL compiler by default (not need to go to submenu). (From commit f60c6362)

* Update MANAGER.TEDIT documentation file.
Fix error in previous commit. (Changes that I thought were there, were not.)
Cleanup COMMON-MAKE COMS so it can be handled by the file package, and add .LCOM file to the repo.
2023-10-14 06:39:13 -07:00
Matt Heffron
f1833861cc Merge pull request #1348 from Interlisp/medley-issue-1347
Fix for typo; issue #1347
2023-10-13 10:41:05 -07:00
Matt Heffron
270fee89e3 Fix for typo; issue #1347 2023-10-12 13:19:59 -07:00
Frank Halasz
cba04e168c Merge pull request #1342 from Interlisp/PDFSTREAM
Pdfstream
2023-10-08 23:30:02 -07:00
Frank Halasz
1e847ec274 Add ShellOpen (and ShellOpener) to UNIXUTILS; fix small bug in UNIX-FILE-NAME (#1341)
* Add ShellOpener and ShellOpen to UNIXUTILS - used to open a file using the generic opener on this machine.  Adapted ShellBrowse and ShellBrowser accordingly; fixed bug in UNIX-FILE-NAME where it fails if file does not exist and COPY is non-NIL and access is INPUT

* Add return of error strings to ShellOpen
2023-10-08 19:34:43 -07:00
rmkaplan
f765676ec4 UNIXUTILS: Add UNIX-FILE-NAME etc on top of previous ShellWhich update--should resynch 2023-10-02 12:56:57 -07:00
rmkaplan
17c72a1f2f Merge branch 'master' into PDFSTREAM 2023-10-02 12:47:02 -07:00
rmkaplan
995c6de04e PDFSTREAM: First implementation (#1260)
* PDFSTREAM:  first implementation

Makes PS file, then applies separate utility (if available) to convert PS to PDF

* POSTSCRIPTSTREAM:  Adds extra field to postscript data for PDFSTREAM filename

* HARDCOPY:  fixes printer menu

* PDFSTREAM: define PDF fonts as POSTSCRIPT fonts

* PDFSTREAM: fix convert template

* PDFSTREAM:  Fix logic around closing the postscript sub-stream

* PDF Stream:  slight generalization

* PDFSTREAM uses AFTERCLOSE streamprop so doesn't require change to POSTSCRIPTSTREAM

* UNIXUTILS: moved PROCESS-COMMAND and SLASHIT from GITFNS and PSEUDOHOST resp.

PROCESS-COMMAND executes a command in process-stream, like ShellCommand, but returns a completion code and not what happens in the shell.  SLASHIT is an approximation (doesn't deal with versions) of converting a Medley file name to its Unix equivalent, to use in commands

* GITFNS:  PROCESS-COMMAND moved to UNIXUTILS, cleanups from previous (unexamined) PR

The other PR will be cleaned out

* PSEUDOHOSTS: Moved SLASHIT to UNIXUTILS, also includes minor change in previous (unexamined) PR, to be removed

* PDFSTREAM:  wrapped FULLNAME around TRUEFILENAME

* Restore POSTSCRIPTSTREAM

* UNIXUTILS:  Added UNIX-FILE-NAME

Produces a Unix filename corresponding to a Medley file name (slashes, version number).  For use in ShellCommand an PROCESS-COMMAND.

* PDF-STREAM:  added SEE-PDF

A little stub that (on a mac) does a shell command to open Preview on the Unix-named file corresponding to a medley name

(Also added back some key functions that got lost in a bad edit)

* Pick up master changes

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-02 12:39:25 -07:00
Larry Masinter
877c6fbf17 Pick up master changes 2023-10-02 12:36:39 -07:00
rmkaplan
97b19f1b96 PDF-STREAM: added SEE-PDF
A little stub that (on a mac) does a shell command to open Preview on the Unix-named file corresponding to a medley name

(Also added back some key functions that got lost in a bad edit)
2023-10-01 23:54:23 -07:00
rmkaplan
948b0e09d1 UNIXUTILS: Added UNIX-FILE-NAME
Produces a Unix filename corresponding to a Medley file name (slashes, version number).  For use in ShellCommand an PROCESS-COMMAND.
2023-10-01 23:52:40 -07:00
Frank Halasz
de4e5f5ca4 Add cygwin build & install script to buildRealease action; remove old Windows docker build / install (#1337)
* Add cygwin-sdl build to buildLoadup workflow; add installer for cygwin-sdl on windows

* Change how buildLoadup computes latest maiko release to accomodate draft releases

* Fix call to gh release list for maiko

* Debugging call to gh release list for maiko

* Debugging call to gh release list for maiko #2

* Debugging call to gh release list for maiko #3

* Debugging call to gh release list for maiko #4

* Debugging call to gh release list for maiko #5

* Debugging call to gh release list for maiko #6

* Change maiko downloads to accoiunt for draft releases

* Change maiko downloads to account for draft releases #2

* Specify shell (powershell) for Download cygwin installler

* Few cleanup items on cygwin-install

* Update ShellWhich to use command -v instead of which because which returns to much crap on cygwin and command -v is more portable overall

* Switch from using medley-loadup & -runtime tars to medley-full-*.tgz so we get full release incl notecards; delete maiko on install and replace with cygwin maiko

* Make sure Notecards doesn't try to load its HASH fileon PostGreet - for apps.sysout

* Add xdg-utils to cygwin install to support ShellBrowser

* Odds and ends on cygwin build

* Redo medley.iss install script to use tar from Windows rather than cygwin tar because cygwin tar was messing up ACLs in windows.  Needed to change creation of medley.bat accordingly.

* Remove junk lines from buildLoadup.yml

* Restore accidently deleted line to buildLoadup.yml

* Fix multiple issues with cygwin_installer filename; arrange to remove placeholder.txt from the release assets at the end of cygwin installer

* Change name of job from windows_installer to cygwin_installer

* Fix missing GH_TOKEN is removal of placeholder.txt; fix naming of output file in medley.iss

* Fiddling with getting cygwin-installer name right

* Redoing merge of medley.sh/medley.command to handle the Darwin plus Cygwin cases; is medley.iss recreate symbolic links surrounding the medley.sh script

* Fix typos/syntrax errors in medley.sh/medley.command
2023-09-27 10:41:01 -07:00
rmkaplan
af912247b3 Restore POSTSCRIPTSTREAM 2023-09-25 20:32:17 -07:00
Frank Halasz
ebb5c739ea Fix latest issues with docker build (and Release+Docker builds) for Medley (#1326)
* fix buildRealeaseInclDocker.yml to pass secrets via inherits rather than explicitly.  Attempt to fix issue with GITHUB_TOEN not being passed to buildRelease.yml

* In buildDocker.yml, fix up calculation of medley and maiko release to accomodate new naming scheme for medley deb files

* Update Dockerfile_medley with new deb file naming convention
2023-09-25 11:34:51 -07:00
rmkaplan
1bed018db8 CMLARITH: The compiled file was bad in the previous commit
This has a FILESLOAD for lispusers/UNBOXEDOPS that somehow didn't get executed by the previous cleanup.  (That may be a separate issue with the compiler interface, not clear that it always makes the right choices even when the FILETYPE property is set.)

But this also begs the question, why is UNBOXEDOPS on lispusers?
2023-09-24 16:41:52 -07:00
rmkaplan
8a8e6fa4dc CMLARAITH: Makefile new to get fns/functions in filemap 2023-09-23 23:30:25 -07:00
rmkaplan
bf2e34841b PDFSTREAM: wrapped FULLNAME around TRUEFILENAME 2023-09-23 22:56:54 -07:00
rmkaplan
9ed6448591 PSEUDOHOSTS: Moved SLASHIT to UNIXUTILS, also includes minor change in previous (unexamined) PR, to be removed 2023-09-23 16:32:03 -07:00
rmkaplan
445de6745d GITFNS: PROCESS-COMMAND moved to UNIXUTILS, cleanups from previous (unexamined) PR
The other PR will be cleaned out
2023-09-23 16:30:47 -07:00
rmkaplan
68ed78a9f9 UNIXUTILS: moved PROCESS-COMMAND and SLASHIT from GITFNS and PSEUDOHOST resp.
PROCESS-COMMAND executes a command in process-stream, like ShellCommand, but returns a completion code and not what happens in the shell.  SLASHIT is an approximation (doesn't deal with versions) of converting a Medley file name to its Unix equivalent, to use in commands
2023-09-23 16:23:46 -07:00
rmkaplan
1ae08139c9 PDFSTREAM uses AFTERCLOSE streamprop so doesn't require change to POSTSCRIPTSTREAM 2023-09-23 16:20:30 -07:00
rmkaplan
bb4e230df4 Merge branch 'master' into PDFSTREAM 2023-09-23 15:57:53 -07:00
Frank Halasz
02665ca91b Change github workflows to provide MacOs full release zip file (#1290) 2023-09-17 23:03:18 -07:00
Frank Halasz
b819e18c64 Fix Issue#1323: buildDocker.yml Github Action is failing due to Ubuntu 22.10 being deprecated (#1324)
* Remove trailing whitespaces in buildDocker.yml; move Dockerfile_medley base back to 20.04 since 22.10 deprecated.

* In Dockerfile_medley load tzdata early so as to avaoid problems later on.

* In Dockerfile_medley do an apt update before tzdata

* Changing dockerfile_medley to be based on 22.04 to take care on glibc problems in online_medley docker
2023-09-16 18:09:34 -07:00
rmkaplan
781709e4e1 PDF Stream: slight generalization 2023-09-12 13:49:56 -07:00
Frank Halasz
b772b8383c Moving vncviewer to online.interlisp.org/downloads to bypass issues with sourceforge in buildLoadup.yml (#1319) 2023-09-04 10:39:52 -07:00
rmkaplan
9b4c4a3bf7 Merge branch 'PDFSTREAM' of https://github.com/interlisp/medley into PDFSTREAM 2023-07-20 22:26:48 -07:00
rmkaplan
51d554c67e Merge branch 'master' into PDFSTREAM 2023-07-20 22:26:41 -07:00
rmkaplan
ca39ccf27b Merge branch 'master' into PDFSTREAM 2023-07-20 21:01:13 -07:00
rmkaplan
e1cd9260b4 Merge branch 'master' into PDFSTREAM 2023-07-19 20:29:48 -07:00
rmkaplan
b0aa518a41 Merge branch 'master' into PDFSTREAM 2023-07-19 14:57:50 -07:00
rmkaplan
9e0bfabc52 Merge branch 'master' into PDFSTREAM 2023-07-19 12:58:02 -07:00
rmkaplan
ebff4f7268 PDFSTREAM: Fix logic around closing the postscript sub-stream 2023-07-17 23:04:38 -07:00
rmkaplan
c281728c65 PDFSTREAM: fix convert template 2023-07-02 18:25:41 -07:00
rmkaplan
c4554894b3 PDFSTREAM: define PDF fonts as POSTSCRIPT fonts 2023-06-25 17:16:27 -07:00
rmkaplan
58196b4011 HARDCOPY: fixes printer menu 2023-06-24 15:49:31 -07:00
rmkaplan
f6a9b88b34 POSTSCRIPTSTREAM: Adds extra field to postscript data for PDFSTREAM filename 2023-06-24 15:49:18 -07:00
rmkaplan
bad19ab45f PDFSTREAM: first implementation
Makes PS file, then applies separate utility (if available) to convert PS to PDF
2023-06-24 15:48:21 -07:00
380 changed files with 39356 additions and 9930 deletions

View File

@@ -7,7 +7,7 @@
#
# ******************************************************************************
FROM ubuntu:22.10
FROM ubuntu:22.04
ARG TARGETPLATFORM
# Handle ARGs, ENV variables, and LABELs
@@ -31,6 +31,12 @@ ENV LANG=C.UTF-8
# Copy over the release deb files
ADD ./*.deb /tmp
# Get tzdata setup ahead of time
RUN apt-get update; \
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime; \
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata; \
dpkg-reconfigure --frontend noninteractive tzdata
# Install Medley/Maiko and add tightvnc server and xclip to the image
RUN apt-get update \
&& apt-get install -y apt-utils \
@@ -51,8 +57,8 @@ RUN apt-get update \
echo "x86_64"; \
fi \
) \
&& deb="medley-full-${MEDLEY_RELEASE#medley-}" \
&& deb=${deb}_${MAIKO_RELEASE#maiko-}-linux-${p}.deb \
&& deb="medley-full-linux-${p}-${MEDLEY_RELEASE#medley-}" \
&& deb=${deb}_${MAIKO_RELEASE#maiko-}.deb \
&& apt-get install -y /tmp/${deb} \
&& chown --recursive root:root /usr/local/interlisp \
&& (if [ -n "$(which unminimize)" ]; then (yes | unminimize); fi)

View File

@@ -20,7 +20,7 @@ name: 'Build/Push Docker Image'
# Run this workflow on ...
on:
workflow_dispatch:
inputs:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
@@ -33,7 +33,7 @@ on:
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
@@ -59,7 +59,7 @@ on:
defaults:
run:
shell: bash
jobs:
@@ -86,7 +86,7 @@ jobs:
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
fi
######################################################################################
@@ -100,7 +100,7 @@ jobs:
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -110,7 +110,7 @@ jobs:
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
@@ -131,12 +131,12 @@ jobs:
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Find latest release (draft or normal)
# and download its assets
- name: Download linux debs from latest (draft) release
@@ -160,7 +160,7 @@ jobs:
- name: Get info about Miako and Medley releases
id: release_info
run: |
regex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
regex="^medley-full-[^-]*-[^-]*-\([^_]*\)_\(.*\).deb\$"
ls -1 release_debs | head -n 1 > debname.tmp
medley_release="medley-$(sed -e "s/${regex}/\1/" debname.tmp)"
maiko_release="maiko-$(sed -e "s/${regex}/\2/" debname.tmp)"
@@ -168,6 +168,8 @@ jobs:
echo "MEDLEY_RELEASE=${medley_release}" >> ${GITHUB_ENV}
echo "MAIKO_RELEASE=${maiko_release}" >> ${GITHUB_ENV}
# regex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
# Set repo env variables
- name: Set repo/docker env variables
id: repo_env
@@ -176,10 +178,10 @@ jobs:
docker_namespace="$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
docker_image="${docker_namespace}/${repo_name}"
if [ "${{ needs.inputs.outputs.draft }}" = "false" ];
then
then
docker_tags="${docker_image}:latest,${docker_image}:${MEDLEY_RELEASE#*-}_${MAIKO_RELEASE#*-}"
platforms="linux/amd64,linux/arm64"
else
else
docker_tags="${docker_image}:draft"
platforms="linux/amd64"
fi
@@ -242,7 +244,7 @@ jobs:
needs: [inputs, sentry, build_and-push]
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -257,10 +259,10 @@ jobs:
uses: ./../actions/set-sentry-action
with:
tag: "docker"
- name: Output
id: output
run: |
echo "build_successful='true'" >> ${GITHUB_OUTPUT}
######################################################################################

View File

@@ -60,7 +60,7 @@ defaults:
jobs:
######################################################################################
# JOB: inputs #######################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
@@ -85,8 +85,7 @@ jobs:
fi
######################################################################################
# JOB: sentry #######################################################################
# Use sentry-action to determine if this release has already been built
# based on the latest commit to the repo
@@ -114,11 +113,11 @@ jobs:
with:
tag: "loadup"
######################################################################################
# JOB: loadup #######################################################################
#
# Do the loadup
# Do the loadup and push to release on github
#
loadup:
@@ -130,6 +129,9 @@ jobs:
medley_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_RELEASE_TAG }}
medley_short_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_SHORT_RELEASE_TAG }}
debs_filename_base: ${{ steps.debs.outputs.DEBS_FILENAME_BASE }}
maiko_release_tag: ${{ steps.job_outputs.outputs.MAIKO_RELEASE_TAG }}
artifacts_filename_template: ${{ steps.job_outputs.outputs.ARTIFACTS_FILENAME_TEMPLATE }}
release_url: ${{ steps.push.outputs.html_url }}
needs: [inputs, sentry]
if: |
@@ -154,24 +156,36 @@ jobs:
id: tag
uses: ./../actions/release-tag-action
# Get Maiko release information, retrieves the name of the latest
# Get Maiko release information, retrieves the name of the latest (draft)
# release. Used to download the correct Maiko release
- name: Get Maiko Release Information
# Find latest release (draft or normal)
- name: Get maiko release information
id: maiko
uses: abatilo/release-info-action@v1.3.2
with:
owner: ${{ github.repository_owner }}
repo: maiko
run: |
tag=""
if [ "${{ needs.inputs.outputs.draft }}" = "true" ];
then
gh release list --repo ${{ github.repository_owner }}/maiko | grep Draft >/tmp/releases-$$
if [ $? -eq 0 ];
then
tag=$(head -n 1 /tmp/releases-$$ | awk '{ print $3 }')
fi
fi
if [ -z "${tag}" ];
then
tag=$(gh release list --repo ${{ github.repository_owner }}/maiko | grep Latest | head -n 1 | awk '{ print $3 }')
fi
echo "maiko_tag=${tag}" >> ${GITHUB_OUTPUT}
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Setup environment variables & establish job outputs
- name: Setup Environment Variables
run: |
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_OUTPUT}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "TARBALL_DIR=/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${RELEASE_TAG}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.latest_tag }}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.maiko_tag }}" >>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@" >>${GITHUB_ENV}
- name: More Environment Variables
run: |
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_RELEASE_TAG#medley-}" >>${GITHUB_ENV}
@@ -182,27 +196,26 @@ jobs:
- name: Establish job outputs
id: job_outputs
run: |
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MAIKO_RELEASE_TAG=${MAIKO_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "ARTIFACTS_FILENAME_TEMPLATE=${ARTIFACTS_FILENAME_TEMPLATE}" >> ${GITHUB_OUTPUT}
# Setup some needed dirs in workspace
- name: Create work dirs
run: mkdir -p ${TARBALL_DIR}
# Download Maiko Release Assets
# Download Maiko Release Assets and untar it
- name: Download Release Assets
uses: robinraju/release-downloader@v1.6
with:
repository: ${{ github.repository_owner }}/maiko
token: ${{ secrets.GITHUB_TOKEN }}
latest: true
out-file-path: ${{ env.TARBALL_DIR }}
fileName: "${{ env.MAIKO_RELEASE_TAG }}-linux.*.tgz"
- name: Untar Maiko Release for use in loadup
run: |
tar -xzf "${TARBALL_DIR}/${{ env.MAIKO_RELEASE_TAG }}-linux.x86_64.tgz"
gh release download ${MAIKO_RELEASE_TAG} \
-D ${TARBALL_DIR} \
--repo ${{ github.repository_owner }}/maiko \
-p '*.tgz'
tar -xzf "${TARBALL_DIR}/${MAIKO_RELEASE_TAG}-linux.x86_64.tgz"
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Checkout Notecards and tar it in the tarballsdir
- name: Checkout Notecards
@@ -210,11 +223,11 @@ jobs:
with:
repository: ${{ github.repository_owner }}/notecards
path: ./notecards
- run: mv ./notecards ../notecards
- name: Tar notecards into tarball dir
run: |
cd ..
tar cfz medley/${TARBALL_DIR}/notecards.tgz notecards
mv ./notecards ../notecards
cd ../notecards
git archive --format=tgz --output="${TARBALL_DIR}/notecards.tgz" --prefix=notecards/ main
# Install vnc
- name: Install vnc
@@ -224,7 +237,6 @@ jobs:
run: |
Xvnc -geometry 1280x720 :0 &
export DISPLAY=":0"
PATH="$PWD/maiko:$PATH"
scripts/loadup-all.sh -apps
scripts/loadup-db.sh
@@ -233,15 +245,6 @@ jobs:
scripts/release-make-tars.sh "${MEDLEY_RELEASE_TAG}"
mv releases/"${MEDLEY_SHORT_RELEASE_TAG}"/*.tgz "${TARBALL_DIR}"
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
debs_filename_base=$(./build_deb.sh)
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_ENV;
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_OUTPUT;
# Push the release up to github releases
- name: Delete existing release with same tag (if any)
uses: cb80/delrel@latest
@@ -250,29 +253,37 @@ jobs:
continue-on-error: true
- name: Push the release
id: push_release
id: push
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# ${{ env.TARBALL_DIR }}/notecards.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-loadups.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz,
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
draft: ${{ needs.inputs.outputs.draft }}
prerelease: false
generateReleaseNotes: true
token: ${{ secrets.GITHUB_TOKEN }}
# Save the tarball directory for subsequent jobs
- name: Save tarballs
uses: actions/upload-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
if-no-files-found: error
# JOB: linux_installer ##############################################################
#
# Create the Windows installer, push it up to the release on github and
# update the downloads page on OIO
# Create the linux installers (.deb and .tgz) and push to release on github
#
windows_installer:
linux_installer:
runs-on: windows-latest
runs-on: ubuntu-latest
needs: [inputs, sentry, loadup]
if: |
@@ -280,6 +291,157 @@ jobs:
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Environment variables
- name: Environment variables
run: |
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" \
>>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create taball dir
- run: mkdir -p ${TARBALL_DIR}
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
./build_deb.sh
# Push the debs and tgz up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
- name: Rename medley tar for the x86_64 platform
run: |
cd ${{ env.TARS_DIR }}
mv medley-full-linux-x86_64-*.tgz medley.tgz
- name: Save medley tar for use in cygwin installers
uses: actions/upload-artifact@v3
with:
name: medley-tar
path: |
${{ env.TARS_DIR }}/medley.tgz
# JOB: macos_installer ##############################################################
#
# Create the macos installers (.dmg and .zip) and push to release on github
#
macos_installer:
runs-on: macos-12
needs: [inputs, sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
# if: false
defaults:
run:
shell: bash
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Environment variables
- name: Environment variables
run: |
MACOS_DIR=installers/macos
echo "MACOS_DIR=${MACOS_DIR}" >>${GITHUB_ENV}
echo "ARTIFACTS_DIR=${MACOS_DIR}/artifacts" >>${GITHUB_ENV}
echo "TARBALL_DIR=${MACOS_DIR}/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" >>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create tarball dir
- run: mkdir -p ${TARBALL_DIR}
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
# Build the .dmg and .zip files
- name: Build .dmg & .zip files
id: dmg-zip
run: |
cd ${MACOS_DIR}
./build_artifacts.sh
# Push the .dmg and .zip up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# 2023-07-20 not yet building dmg -- ${{ env.ARTIFACTS_DIR }}/*.dmg,
${{ env.ARTIFACTS_DIR }}/*.zip
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# JOB: cygwin_installer #############################################################
#
# Create the Windows installer, push it up to the release on github and
# update the downloads page on OIO
#
cygwin_installer:
runs-on: windows-2022
needs: [inputs, sentry, loadup, linux_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
outputs:
cygwin_installer: ${{ steps.compile_iss.outputs.CYGWIN_INSTALLER }}
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
@@ -294,24 +456,59 @@ jobs:
echo "MEDLEY_RELEASE_TAG=$mrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=$msrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$aft="${{ needs.loadup.outputs.artifacts_filename_template }}"
echo "ARTIFACTS_FILENAME_TEMPLATE=$aft" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$debs="${{ needs.loadup.outputs.debs_filename_base }}"
echo "DEBS_FILENAME_BASE=$debs" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Download vnc viewer
- name: Download vncviewer
# Retrieve medley tars from artifact store
- name: Retrieve medley tar
uses: actions/download-artifact@v3
with:
name: medley-tar
path: installers/cygwin/
# Download maiko cygwin build
- name: Retrieve maiko cygwin build
shell: powershell
env:
GH_TOKEN: ${{ secrets.MAIKO_TOKEN }}
run: |
gh release download ${{ needs.loadup.outputs.maiko_release_tag }} --repo interlisp/maiko --pattern ${{ needs.loadup.outputs.maiko_release_tag }}-cygwin.x86_64.tgz --output installers\cygwin\maiko-cygwin.x86_64.tgz
# Download cygwin installer to be included by medley.iss
- name: Download cygwin installer
id: cygwin
shell: powershell
run: |
$url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
$output = "installers\win\vncviewer64-1.12.0.exe"
(New-Object System.Net.WebClient).DownloadFile($url, $output)
wget https://cygwin.com/setup-x86_64.exe -OutFile installers\cygwin\setup-x86_64.exe
# Download vnc viewer
#- name: Download vncviewer
# shell: powershell
# run: |
# $url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
# $output = "installers\win\vncviewer64-1.12.0.exe"
# (New-Object System.Net.WebClient).DownloadFile($url, $output)
# Run iscc.exe to compile the installer
- name: Compile medley.iss
#- name: Compile medley.iss
# shell: powershell
# run: |
# iscc installers\win\medley.iss
# $filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
# echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Run iscc.exe to compile the installer
- name: Compile cygwin_medley.iss
id: compile_iss
shell: powershell
run: |
iscc installers\win\medley.iss
$filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$Env:CYGWIN_INSTALLER_BASE="medley-full-cygwin-x86_64-${env:COMBINED_RELEASE_TAG}"
$CYGWIN_INSTALLER="${Env:CYGWIN_INSTALLER_BASE}.exe"
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
iscc installers\cygwin\medley.iss
# Upload windows installer to release
- name: Upload windows installer to release
@@ -319,7 +516,7 @@ jobs:
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: installers/win/${{ env.INSTALLER_FILENAME }}
artifacts: installers/cygwin/${{ env.CYGWIN_INSTALLER }}
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
@@ -327,18 +524,65 @@ jobs:
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Install the OpenSSH Client
- name: Install the OpenSSH Client
shell: powershell
# JOB: downloads_page ################################################################
#
# Update the downloads page on OIO
#
downloads_page:
runs-on: ubuntu-latest
needs: [inputs, sentry, loadup, linux_installer, macos_installer, cygwin_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Environment variables
- name: Environment Varibales (from other jobs)
run: |
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=${crt}" >>${GITHUB_ENV}
mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=${mrt}" >>${GITHUB_ENV}
msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=${msrt}" >>${GITHUB_ENV}
cyginst="${{ needs.cygwin_installer.outputs.cygwin_installer }}"
echo "CYGWIN_INSTALLER=${cyginst}" >>${GITHUB_ENV}
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Upload a dummy file to release
# Needed since download url of the release changes on every update
# So this will be the final update before creating downloads page
# and we can use its url for the page
- run: echo "placeholder" >placeholder.txt
- name: Upload windows placeholder.txt to release
id: pushph
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: placeholder.txt
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Update the downloads page and the man page on OIO
- name: Update the downloads page and the man page to the OIO static page host
shell: bash
run: |
# Figure out filenames
download_url="${{ steps.push.outputs.html_url }}"
download_url="${{ steps.pushph.outputs.html_url }}"
download_url="${download_url/\/tag\//\/download\/}"
local_template="installers/downloads_page/medley_downloads.html"
local_filename="medley_downloads.html"
@@ -356,9 +600,9 @@ jobs:
# Fill in downloads page template
sed \
-e "s/@@@MEDLEY.SHORT.RELEASE.TAG@@@/${MEDLEY_SHORT_RELEASE_TAG}/g" \
-e "s/@@@COMBINED.RELEASE.TAG@@@/${COMBINED_RELEASE_TAG}/g" \
-e "s~@@@DOWNLOAD_URL@@@~${download_url}~g" \
-e "s/@@@DEBS.FILENAME.BASE@@@/${DEBS_FILENAME_BASE}/g" \
-e "s/@@@WINDOWS.INSTALLER.FILENAME@@@/${INSTALLER_FILENAME}/g" \
-e "s~@@@CYGWIN.INSTALLER@@@~${CYGWIN_INSTALLER}~g" \
< "${local_template}" > "${local_filename}"
# Create sftp instruction file
echo "-rm ${remote_filepath}.oldold" > batch
@@ -373,9 +617,15 @@ jobs:
env:
SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
# Remove placeholder.txt
- name: Remove placeholder.txt
run: |
gh release delete-asset ${{ env.MEDLEY_RELEASE_TAG }} placeholder.txt --yes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
######################################################################################
# JOB: complete #####################################################################
# Use set-sentry-action to determine set the sentry that says this release has
# been successfully built
@@ -387,9 +637,16 @@ jobs:
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, loadup, windows_installer]
needs: [inputs, sentry, loadup, downloads_page]
steps:
# Delete the tarballs artifact
- name: Delete tarballs artifact
uses: geekyeggo/delete-artifact@v2
with:
name: tarballs
failOnError: false
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -411,21 +668,4 @@ jobs:
echo "build_successful='true'" >> $GITHUB_OUTPUT
######################################################################################
# - name: Download the Windows installer created in windows job
# uses: actions/download-artifact@v3
# with:
# name: windows_installer
# path: installers/win
# - name: Rename the Windows installer w/ version tag
# run: |
# maiko_release_tag="${{ steps.maiko.outputs.latest_tag }}"
# combined_release_tag="${MEDLEY_RELEASE_TAG#medley-}_${maiko_release_tag#maiko-}"
# windows_installer_filename="medley_install_${combined_release_tag}_x64.exe"
# cd installers/win
# mv medley_install_vXXXVERSIONXXX_x64.exe "${windows_installer_filename}"
# echo "WINDOWS_INSTALLER_FILENAME=${windows_installer_filename}" >>${GITHUB_ENV}
######################################################################################

View File

@@ -84,6 +84,7 @@ jobs:
echo "force=false" >> $GITHUB_OUTPUT;
fi
######################################################################################
@@ -94,8 +95,7 @@ jobs:
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets:
OIO_SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
secrets: inherit
######################################################################################
@@ -107,9 +107,7 @@ jobs:
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
secrets: inherit
######################################################################################

View File

@@ -1,45 +1,43 @@
# Medley
This repository is for the Lisp environment of [Medley Interlisp](https://Interlisp.org).
This repository is for the Lisp environment of [Medley](https://interlisp.org).
See the [Documentation links](https://github.com/Interlisp/medley/wiki/Documentation) for an overview and pointers to documentation.
In particular [Running](https://github.com/Interlisp/medley/wiki/Running) explains other methods of getting Medley Interlisp.
[Install and Run](https://interlisp.org/software/install-and-run) covers ways to install and start up Medley on Linux systems, MacOS, and Windows (with or without WSL).
[Interlisp/maiko](https://github.com/Interlisp/maiko), is the repo for the implementation (in C) of the Medley virtual machine.
[Using Medley](https://interlisp.org/software/using-medley/) has an overview and pointers to documentation.
## Using releases
[Interlisp/maiko](https://github.com/Interlisp/maiko), is the repo for the implementation (in C) of the Medley virtual machine.
There currently are separate releases of medley and maiko; get the latest version of each.
## Releases
### Getting releases
While there are installers for popular platforms, this section may be useful in some circumstances.
Get the Maiko release [here](https://github.com/Interlisp/maiko/releases). You'll need the .tgz file corresponding to your operating system and processor (for Windows with WSL or Intel Linux, use `linux.x86_64`; for Macs use `darwin.x86_64` for Intel and `darwin.aarch64` for M1.)
### Getting releases
Or, build your own maiko (the binaries `lde` `ldex` and `ldeinit`) We can build for other OS arch pairs depending on what is available for GitHub actions.
Get the Maiko release [here](https://github.com/Interlisp/maiko/releases). You'll need the .tgz file corresponding to your operating system and processor. For Windows with WSL or Intel Linux, use `linux.x86_64`; for Macs use `darwin.x86_64` for Intel and `darwin.aarch64` for Mac silicon. Windows without WSL uses `cygwin` instead.
The medley release comes in two parts, found [here](https://github.com/Interlisp/medley/releases)
1. The "loadups" (download `medley-`YYMMDD`-loadups.tgz`)
2. The "runtime" (download `medley-`YYMMDD`-runtime.tgz`)
Or, build your own maiko (the binaries `lde`, `ldex` OR `ldesdl`, and `ldeinit`).
You can also build for other architectures
You don't need the "runtime" if you've cloned this (medley) repo, but you'll still need the "loadups" release.
The medley release image and sources come in two parts, found [here](https://github.com/Interlisp/medley/releases)
1. The "loadups" (download `medley-`_YYMMDD-XXXXX_`-loadups.tgz`)
2. The "runtime" (download `medley-`_YYMMDD-XXXXX_`-runtime.tgz`)
If you happen to have the 'gh' GitHub command line installed you can download both using
```
gh release download -R Interlisp/medley -p "*"
```
but otherwise just click on the link(s) below to the parts you need.
where _YYMMDD_ is the date and _XXXXX_ is the GitHub commit ID.
The "runtime" isn't needed if you've cloned the (medley) repo--you have all the files. The "runtime" has extra fonts, unicode tables, and source code that aren't part of the loadups but may be called on.
### Unpacking releases
From a shell/terminal window:
1. Choose where you want to install medley and maiko.
Unpack the medley loadups file
1. Choose a directory _parent_ where you want to install medley and maiko.
2. Unpack the medley loadups file
* `cd ` ~parent~
* `tar xvzf medley-`YYMMDD`-loadups.tgz`
* `cd ` _parent_
* `tar xvzf medley-`_YYMMDD-XXXXX_`-loadups.tgz`
2. Unpack the medley runtime OR clone the Medley repo
3. Unpack the medley runtime OR clone the Medley repo
(the "medley runtime" is just a subset of the whole repo)
* `tar xvzf medley-`YYMMDD`-runtime.tgz`
@@ -49,25 +47,27 @@ Unpack the medley loadups file
git clone https://github.com/Interlisp/medley
```
3. Unpack the maiko file for your operating system and CPU type, e.g.,
4. Unpack the maiko file for your operating system and CPU type, e.g.,
```
tar xvzf maiko-210823.linux.x86_64.tgz
```
3. This should leave you with two directories, `medley` and `maiko`.
5. This should leave you with two directories, `medley` and `maiko`.
### Setting up X
Medley Interlisp currently needs an X-Server to manage its display. Most Linux desktops have one. Windows 11 with WSL includes an X-Server. For Windows 10 with WSL2, there are a number of open-source X servers; for example vcxsrv.
In many configurations, Medley uses an X-Server to manage its display. Most Linux desktops have one. Windows 11 with WSL includes an X-Server. For Windows 10 with WSL2, there are a number of open-source X servers; for example vcxsrv.
Mac users should get [XQuartz from XQuartz.org](https://xquartz.org/releases).
Medley manages the display entirely, doesn't use X fonts and manages it's own window system.
If you have a high-resolution display, note that much of the graphics was designed for a low-resolution display, so an X-server that does "pixel doublilng" is best. (E.g., Raspberry Pi does pixel doubling on 4K displays.) It also presumes you have a 3-button mouse; the scroll-wheel on some mice act as one with some difficulty.) XQuartz Preferences/Input has "Emulate three button mouse" option.
If you have a high-resolution display, note that much of the graphics was designed for a low-resolution display, so an X-server that does "pixel doubling" is best. (E.g., Raspberry Pi does pixel doubling on 4K displays.)
### Running Medley Interlisp
Medley presumes you have a 3-button mouse; the scroll-wheel on some mice acts as one, with some difficulty. Go into XQuartz Preferences/Input and check "Emulate three button mouse" option.
### Running Medley Interlisp (obsolete)
The `run-medley` script in this repo sets up some convenient defaults. Running Medley can be done by typing:
```
@@ -112,7 +112,8 @@ you can continue right where you left off.
File Names and Extensions: Most Interlisp source file names are
UPPERCASE and Interlisp didn't use file extensions for its source
files. A .TEDIT or .TXT file is probably documentation
for the package of same name, at least in the library, lispusers.
for the package of the same name, at least in the library and lispusers
directories.
The current repo has both Lisp sources and compiled .LCOM and .DFASL
files.
@@ -121,9 +122,8 @@ Each directory should have a README.md, but briefly
* BUILDING.md -- instructions on how to make your own loadups
* clos -- early implementation of Common Lisp Object System
* CLTL2 -- files submitted to bring Medley up to the conformance to "Common Lisp, the Language" 2nd edition. Not enough to conform to the ANSII standard lisp.
* Dockerfile -- used when building Docker containers with Medley
* docs -- Documentation files (in TEdit format PDFs or online help; look [here](https://github.com/Interlisp/medley/Documentation)
* CLTL2 -- files submitted to bring Medley up to the conformance to "Common Lisp, the Language" 2nd edition. Not enough to conform to the ANSI standard lisp.
* docs -- Documentation files (in TEdit format, PDFs, or online help; look [here](https://github.com/Interlisp/medley/Documentation))
* fonts -- raster fonts (or font widths) in various resolutions for display, postscript, interpress, press formats
* greetfiles -- various configuration setups
* internal -- These _were_ internal to Venue
@@ -133,11 +133,6 @@ Each directory should have a README.md, but briefly
* obsolete -- files we should remove from the repo
* rooms -- implementation of ROOMS window/desktop manager
* run-medley -- script to enhance the options of running medley
* scripts -- some scripts for fixing up things
* scripts -- some scripts for fixing up things, building and running medley
* sources -- sources for Interlisp and Common Lisp implementations
* unicode -- data files for support of XCCS to and from Unicode mappings
plus
Dockerfile, and scripts for building and running medley
tmp directory for use during build processes

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -1,12 +1,11 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "19-Jan-2023 12:44:20" {DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;9 21022
(FILECREATED "16-Jun-2023 17:20:09" {DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;11 21130
:CHANGES-TO (VARS APPS-INITCOMS)
(FNS Apps.DoInit)
:CHANGES-TO (FNS Apps.DoInit)
:PREVIOUS-DATE "19-Jan-2023 11:57:40" {DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;8
)
:PREVIOUS-DATE "19-Jan-2023 12:44:20"
{DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;10)
(PRETTYCOMPRINT APPS-INITCOMS)
@@ -170,7 +169,11 @@
(* ;; " create the Documentation and ROOMS, Notecards Activation Buttons, if needed")
(Apps.CreateButtons T])
(Apps.CreateButtons T)
(* ;; " Make sure Notecards doesn't try to load its HASH file in NC.PostGreet")
(SETTOPVAL '\NC.SourceAccessFlg NIL])
(Apps.CreateButtons
[LAMBDA (DoDocsToo) (* ; "Edited 13-Dec-2022 12:51 by frank")
@@ -373,8 +376,8 @@
(BKSYSBUF " ")
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1146 20888 (Apps.InitNotecards 1156 . 5018) (Apps.DoInit 5020 . 8119) (
Apps.CreateButtons 8121 . 16945) (Apps.CreateLabel 16947 . 17757) (Apps.ActivateCLOS 17759 . 19108) (
Apps.ActivateRooms 19110 . 19961) (Apps.ShowDoc 19963 . 20112) (XCL-USER::EXEC_INTERLISP 20114 . 20886
(FILEMAP (NIL (1109 20996 (Apps.InitNotecards 1119 . 4981) (Apps.DoInit 4983 . 8227) (
Apps.CreateButtons 8229 . 17053) (Apps.CreateLabel 17055 . 17865) (Apps.ActivateCLOS 17867 . 19216) (
Apps.ActivateRooms 19218 . 20069) (Apps.ShowDoc 20071 . 20220) (XCL-USER::EXEC_INTERLISP 20222 . 20994
)))))
STOP

Binary file not shown.

6
installers/cygwin/.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
medley*.exe
medley*.tgz
maiko*.tgz
setup-x86_64.exe
medley.bat

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View File

@@ -0,0 +1,165 @@
; Copyright (C) 2021-2023 by Bill Stewart (bstewart at iname.com)
;
; This program is free software; you can redistribute it and/or modify it under
; the terms of the GNU Lesser General Public License as published by the Free
; Software Foundation; either version 3 of the License, or (at your option) any
; later version.
;
; This program is distributed in the hope that it will be useful, but WITHOUT
; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
; FOR A PARTICULAR PURPOSE. See the GNU General Lesser Public License for more
; details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see https://www.gnu.org/licenses/.
; Sample Inno Setup (https://www.jrsoftware.org/isinfo.php) script
; demonstrating use of PathMgr.dll.
;
; This script uses PathMgr.dll in the following ways:
; * Copies PathMgr.dll to the target machine (required for uninstall)
; * Defines a task in [Tasks] that should modify the Path
; * Imports the AddDirToPath() DLL function at setup time
; * Imports the RemoveDirFromPath() DLL function at uninstall time
; * Stores task state as custom setting using RegisterPreviousData()
; * Retrieves task state custom setting during setup and uninstall initialize
; * At post install, adds app dir to Path if task selected
; * At uninstall, removes dir from Path if custom setting present
; * Unloads and deletes DLL and removes app dir at uninstall deinitialize
#if Ver < EncodeVer(6,0,0,0)
#error This script requires Inno Setup 6 or later
#endif
[Setup]
AppId={{A17D2D05-C729-4F2A-9CC7-E04906C5A842}
AppName=EditPath
AppVersion=4.0.4.0
UsePreviousAppDir=false
DefaultDirName={autopf}\EditPath
Uninstallable=true
OutputDir=.
OutputBaseFilename=EditPath_Setup
ArchitecturesInstallIn64BitMode=x64
PrivilegesRequired=none
PrivilegesRequiredOverridesAllowed=dialog
[Files]
; Install PathMgr.dll for use with both setup and uninstall; use
; uninsneveruninstall flag because DeinitializeSetup() will delete after
; unloading the DLL; install the 32-bit version of PathMgr.dll because both
; setup and uninstall executables are 32-bit
Source: "i386\PathMgr.dll"; DestDir: "{app}"; Flags: uninsneveruninstall
; Other files to install on target system
Source: "i386\EditPath.exe"; DestDir: "{app}"; Check: not Is64BitInstallMode()
Source: "x86_64\EditPath.exe"; DestDir: "{app}"; Check: Is64BitInstallMode()
Source: "EditPath.md"; DestDir: "{app}"
[Tasks]
Name: modifypath; Description: "&Add to Path"
[Code]
const
MODIFY_PATH_TASK_NAME = 'modifypath'; // Specify name of task
var
PathIsModified: Boolean; // Cache task selection from previous installs
ApplicationUninstalled: Boolean; // Has application been uninstalled?
// Import AddDirToPath() at setup time ('files:' prefix)
function DLLAddDirToPath(DirName: string; PathType, AddType: DWORD): DWORD;
external 'AddDirToPath@files:PathMgr.dll stdcall setuponly';
// Import RemoveDirFromPath() at uninstall time ('{app}\' prefix)
function DLLRemoveDirFromPath(DirName: string; PathType: DWORD): DWORD;
external 'RemoveDirFromPath@{app}\PathMgr.dll stdcall uninstallonly';
// Wrapper for AddDirToPath() DLL function
function AddDirToPath(const DirName: string): DWORD;
var
PathType, AddType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
// AddType = 0 - add to end of Path
// AddType = 1 - add to beginning of Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
AddType := 0;
result := DLLAddDirToPath(DirName, PathType, AddType);
end;
// Wrapper for RemoveDirFromPath() DLL function
function RemoveDirFromPath(const DirName: string): DWORD;
var
PathType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
result := DLLRemoveDirFromPath(DirName, PathType);
end;
procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
// Store previous or current task selection as custom user setting
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
SetPreviousData(PreviousDataKey, MODIFY_PATH_TASK_NAME, 'true');
end;
function InitializeSetup(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
end;
function InitializeUninstall(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
ApplicationUninstalled := false;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
// Add app directory to Path at post-install step if task selected
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
AddDirToPath(ExpandConstant('{app}'));
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
// Remove app directory from path during uninstall if task was selected;
// use variable because we can't use WizardIsTaskSelected() at uninstall
if PathIsModified then
RemoveDirFromPath(ExpandConstant('{app}'));
end
else if CurUninstallStep = usPostUninstall then
begin
ApplicationUninstalled := true;
end;
end;
procedure DeinitializeUninstall();
begin
if ApplicationUninstalled then
begin
// Unload and delete PathMgr.dll and remove app dir when uninstalling
UnloadDLL(ExpandConstant('{app}\PathMgr.dll'));
DeleteFile(ExpandConstant('{app}\PathMgr.dll'));
RemoveDir(ExpandConstant('{app}'));
end;
end;

View File

@@ -0,0 +1,118 @@
# EditPath
EditPath is a Windows console (text-based, command-line) program for managing the system Path and user Path.
# Author
Bill Stewart - bstewart at iname dot com
# License
EditPath.exe is covered by the GNU Lesser Public License (LPGL). See the file `LICENSE` for details.
# Download
https://github.com/Bill-Stewart/PathMgr/releases/
# Background
The system Path is found in the following location in the Windows registry:
Root: `HKEY_LOCAL_MACHINE`
Subkey: `SYSTEM\CurrentControlSet\Control\Session Manager\Environment`
Value name: `Path`
The current user Path is found in the following location in the registry:
Root: `HKEY_CURRENT_USER`
Subkey: `Environment`
Value name: `Path`
In both cases, the `Path` value is (or should be) the registry type `REG_EXPAND_SZ`, which means that it is a string that can contain values surrounded by `%` characters that Windows will automatically expand to environment variable values. (For example, `%SystemRoot%` will be expanded to `C:\Windows` on most systems.)
The `Path` value contains a `;`-delimited list of directory names that the system should search for executables, library files, scripts, etc. Windows appends the content of the current user Path to the system Path and expands the environment variable references. The resulting string is set as the `Path` environment variable for processes.
EditPath provides a command-line interface for managing the `Path` value in the system location (in `HKEY_LOCAL_MACHINE`) and the current user location (in `HKEY_CURRENT_USER`).
# Usage
The following describes the command-line usage for the program. Parameters are case-sensitive.
**EditPath** [_options_] _type_ _action_
You must specify only one of the following _type_ parameters:
| _type_ | Abbreviation | Description
| ------- | ------------ | -----------
| **--system** | **-s** | Specifies the system Path
| **--user** | **-u** | Specifies the user Path
You must specify only one of the following _action_ parameters:
| _action_ | Abbreviation | Description
| -------- | ------------ | -----------
| **--list** | **-l** | Lists directories in Path
| **--test "**_dirname_**"** | **-t "**_dirname_**"** | Tests if directory exists in Path
| **--add "**_dirname_**"** | **-a "**_dirname_**"** | Adds directory to Path
| **--remove "**_dirname_**"** | **-r "**_dirname_**"** | Removes directory from Path
The following parameters are optional:
| _options_ | Abbreviation | Description
| --------- | ------------ | -----------
| **--quiet** | **-q** | Suppresses result messages
| **--expand** | **-x** | Expands environment variables (**--list** only)
| **--beginning** | **-b** | Adds to beginning of Path (**--add** only)
# Exit Codes
The following table lists typical exit codes when not using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 0 | No errors
| 2 | The Path value is not present in the registry
| 3 | The specified directory does not exist in the Path
| 5 | Access is denied
| 87 | Incorrect parameter(s)
| 183 | The specified directory already exists in the Path
The following table lists typical exit codes when using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 1 | The specified directory exists in the unexpanded Path
| 2 | The specified directory exists in the expanded Path
| 3 | The specified directory does not exist in the Path
# Remarks
* Anything on the command line after **--test**, **--add**, or **--remove** is considered to be the argument for the parameter. To avoid ambiguity, specify the _action_ parameter last on the command line.
* Uexpanded vs. expanded refers to whether the environment variable references (i.e., names between `%` characters) are expanded after retrieving the Path value from the registry. For example, `%SystemRoot%` is unexpanded but `C:\Windows` is expanded.
* The **--add** (**-a**) parameter checks whether the specified directory exists in both the unexpanded and expanded copies of the Path before adding the directory. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--add C:\TestApp` will return exit code 183 (i.e., the directory already exists in the Path) because `%TESTAPP%` expands to `C:\TestApp`.
* The **--remove** (**-r**) parameter does not expand environment variable references. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--remove "C:\TestApp"` will return exit code 3 (i.e., the directory does not exist in the Path) because **--remove** does not expand `%TESTAPP%` to `C:\TestApp`. For the command to succeed, you would have to specify `--remove "%TESTAPP%"` instead.
* The program will exit with error code 87 if a parameter (or an argument to a parameter) is missing or not valid, if mutually exclusive parameters are specified, etc.
* The program will exit with error code 5 if the current user does not have permission to update the Path value in the registry (for example, if you try to update the system Path using a standard user account or an unelevated administrator account).
# Examples
1. `EditPath --expand --system --list`
This command outputs the directories in the system Path, with environment variables expanded. You can also write this command as `EditPath -x -s -l`.
2. `EditPath --user --add "%LOCALAPPDATA%\Programs\MyApp"`
Adds the specified directory name to the user Path.
3. `EditPath -s -r "C:\Program Files\MyApp\bin"`
Removes the specified directory from the system Path.
4. `EditPath -s --test "C:\Program Files (x86)\MyApp\bin"`
Returns an exit code of 3 if the specified directory is not in the system Path, 1 if the specified directory is in the unexpanded copy of the system Path, or 2 if the specified directory is in the expanded copy of the system Path.

View File

@@ -0,0 +1,3 @@
Editpath installed here is extracted from Release 1.04 from https://github.com/Bill-Stewart/PathMgr.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,128 @@
; -- makeflix.iss --
; fgh 2016-08-19
#define x86_or_x64 "x86"
#define version "1.0.1"
#if x86_or_x64 == "x86"
#define exe_dir "Win32"
#else
#define exe_dir "x64"
#endif
[Setup]
ArchitecturesAllowed={#x86_or_x64}
AppName=Makeflix
AppVersion={#version}
AppPublisher=Lellan, Inc.
AppPublisherURL=http://www.lellan.com/
AppCopyright=Copyright (C) 2012-2017 Lellan, Inc.
DefaultDirName={pf}\Lellan\Makeflix
DefaultGroupName=Lellan
UninstallDisplayIcon={app}\makeflix.exe
Compression=lzma2
SolidCompression=yes
; "ArchitecturesInstallIn64BitMode=x64" requests that the install be
; done in "64-bit mode" on x64, meaning it should use the native
; 64-bit Program Files directory and the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64
; Source Dir is lellan/toolchain/makeflix/windows
SourceDir="..\"
OutputDir="deploy"
OutputBaseFilename="makeflix_v{#version}_{#x86_or_x64}"
SetupIconFile="..\images\Lellan_Logo_20130221.ico"
LicenseFile="..\deploy\EULA.rtf"
DisableWelcomePage=no
[Files]
Source: "makeflix\{#exe_dir}\Release\makeflix.exe"; DestDir: "{app}"; DestName: "makeflix.exe"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Gui.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Widgets.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Network.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\platforms\qwindows.dll"; DestDir: "{app}\platforms"; Flags: ignoreversion
Source: "deploy\gstreamer\{#x86_or_x64}\*"; DestDir: "{app}\gstreamer"; Flags: recursesubdirs ignoreversion
Source: "deploy\vc_redist\vc_redist.{#x86_or_x64}.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
Source: "deploy\bonjour\Bonjour.{#x86_or_x64}.msi"; DestDir: "{tmp}" ; Flags: deleteafterinstall
Source: "..\deploy\Makeflix_Open_Source_Libraries.pdf"; DestDir: "{app}"
[Icons]
Name: "{group}\Makeflix"; Filename: "{app}\makeflix.exe"
Name: "{group}\Uninstall Makeflix"; Filename: "{uninstallexe}"
[Run]
#define VCmsg "Installing Microsoft Visual C++ Redistributable ..."
Filename: "{tmp}\vc_redist{#x86_or_x64}.exe"; StatusMsg: "{#VCmsg}"; Check: not VCinstalled
#define BonjourMsg "Installing Apple Bonjour support ..."
Filename: "msiexec"; Parameters: "/i {tmp}\Bonjour.{#x86_or_x64}.msi"; StatusMsg: "{#BonjourMsg}"; Check: not BonjourInstalled
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\makeflix.exe"; ValueType: string; ValueName: "(Default)"; ValueData: "{app}\makeflix.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\makeflix.exe"; ValueType: string; ValueName: "Path"; ValueData: "{app}\gstreamer\bin"; Flags: uninsdeletekey
[Code]
function VCinstalled: Boolean;
// By Michael Weiner <mailto:spam@cogit.net>
// Function for Inno Setup Compiler
// 13 November 2015
// Modified by Frank G Halasz to handle WOW case
// 23 August 2016
// Returns True if Microsoft Visual C++ Redistributable is installed, otherwise False.
// The programmer may set the year of redistributable to find; see below.
var
names: TArrayOfString;
i: Integer;
dName, key, year, platfm: String;
begin
// Year of redistributable to find; leave null to find installation for any year.
year := '2015';
Result := False;
if Is64BitInstallMode then
begin
platfm := 'x64';
key := 'Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall';
end
else if not IsWin64 then
begin
platfm := 'x86';
key := 'Software\Microsoft\Windows\CurrentVersion\Uninstall';
end
else
begin
platfm := 'x86';
key := 'Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall';
end;
// Get an array of all of the uninstall subkey names.
if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, key, names) then
// Uninstall subkey names were found.
begin
i := 0
while ((i < GetArrayLength(names)) and (Result = False)) do
// The loop will end as soon as one instance of a Visual C++ redistributable is found.
begin
// For each uninstall subkey, look for a DisplayName value.
// If not found, then the subkey name will be used instead.
if not RegQueryStringValue(HKEY_LOCAL_MACHINE, key + '\' + names[i], 'DisplayName', dName) then
dName := names[i];
// See if the value contains both of the strings below.
Result := (Pos(Trim('Visual C++ ' + year),dName) * Pos('Redistributable',dName) * Pos(platfm, dName) <> 0)
i := i + 1;
end;
end;
end;
function BonjourInstalled: Boolean;
// Returns True if Apple Bonjour is installed, otherwise False.
// Ignores date/version of Bonjour.
begin
Result := False;
// If this key exists, then
// bonjour services must already be installed
if RegKeyExists(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\Bonjour Service') then
// Uninstall subkey names were found.
begin
Result := True;
end;
end;

View File

@@ -0,0 +1,85 @@
;###############################################################################
;#
;# medley.iss - Inno Setup compiler script for creating a Windows
;# installer for cygwin and Medley on cygwin
;#
;# 2023-06-03 Frank Halasz
;#
;# Copyright 2023 Interlisp.org
;#
;###############################################################################
#define x86_or_x64 "x64"
#if GetEnv('COMBINED_RELEASE_TAG') != ""
#define VERSION=GetEnv('COMBINED_RELEASE_TAG')
#else
#define VERSION="local"
#endif
#if GetEnv('CYGWIN_INSTALLER_BASE') != ""
#define OUTFILE=GetEnv('CYGWIN_INSTALLER_BASE')
#else
#define OUTFILE="medley-full-cygwin-x86_64-local"
#endif
[Setup]
PrivilegesRequired=lowest
ArchitecturesAllowed={#x86_or_x64}
AppName=Medley
AppVersion={#version}
AppPublisher=Interlisp.org
AppPublisherURL=https://interlisp.org/
AppCopyright=Copyright (C) 2023 Interlisp.org
DefaultDirName={%USERPROFILE}\il
DefaultGroupName=Medley
Compression=lzma2
SolidCompression=yes
; "ArchitecturesInstallIn64BitMode=x64" requests that the install be
; done in "64-bit mode" on x64, meaning it should use the native
; 64-bit Program Files directory and the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64
OutputDir="."
OutputBaseFilename={#OUTFILE}
SetupIconFile="Medley.ico"
DisableWelcomePage=no
MissingRunOnceIdsWarning=no
DisableProgramGroupPage=yes
WizardImageFile=medley_logo.bmp
WizardSmallImageFile=medley_logo_small.bmp
WizardImageStretch=no
UninstallDisplayIcon="{app}\Medley.ico"
UninstallFilesDir={app}\uninstall
UsePreviousAppDir=no
[Dirs]
Name: "{app}\install"; Permissions: everyone-full
Name: "{app}\uninstall"; Permissions: everyone-full
Name: "{app}\cygwin"; Permissions: everyone-full
[Files]
Source: "setup-x86_64.exe"; DestDir: "{app}\cygwin"; DestName: "setup-x86_64.exe"; Flags: ignoreversion
Source: "maiko-cygwin.x86_64.tgz"; DestDir: "{app}\install"; DestName: "maiko-cygwin.x86_64.tgz"; Flags: ignoreversion
Source: "medley.tgz"; DestDir: "{app}\install"; DestName: "medley.tgz"; Flags: ignoreversion
Source: "..\win\editpath\x86_64\EditPath.exe"; DestDir: "{app}\uninstall"; DestName: "EditPath.exe"; Flags: ignoreversion
Source: "Medley.ico"; DestDir: "{app}"; DestName: "Medley.ico"; Flags: ignoreversion
[Icons]
Name: "{group}\Medley\Uninstall_Medley"; Filename: "{uninstallexe}"
; Name: "{group}\Medley\Medley"; Filename: "powershell"; Parameters: "-NoExit -File {app}\medley.ps1 --help"; IconFilename: "{app}\Medley.ico"
[Run]
Filename: "{app}\cygwin\setup-x86_64.exe"; Parameters: "--quiet-mode --no-admin --wait --no-shortcuts --no-write-registry --verbose --root {app} --site http://www.gtlib.gatech.edu/pub/cygwin/ --only-site --local-package-dir {app}\cygwin --packages nano,xdg-utils"; StatusMsg: "Installing Cygwin ..."
Filename: "{app}\bin\bash"; Parameters: "-login -c 'sed -i -e s/^none/#none/ /etc/fstab && echo none / cygdrive binary,posix=0,user 0 0 >>/etc/fstab'"; Flags: runhidden
Filename: "tar"; Parameters: "-x -z -C {app} -f {app}\install\medley.tgz"; Flags: runhidden; StatusMsg: "Installing Medley ..."
Filename: "powershell"; Parameters: "remove-item -force -recurse {app}\maiko"; Flags: runhidden; StatusMsg: "Installing Maiko ..."
Filename: "tar"; Parameters: "-x -z -C {app} -f {app}\install\maiko-cygwin.x86_64.tgz"; Flags: runhidden; StatusMsg: "Installing Maiko ..."
; Recreate medley symbolic links (lost in tars)
Filename: "{app}\bin\bash"; Parameters: "-login -c 'cd /medley/scripts/medley && ln -s medley.command medley.sh && cd ../.. && ln -s /medley/scripts/medley/medley.sh medley'"; Flags: runhidden
; Create medley.bat
Filename: "powershell"; Parameters: "write-output \""{app}\bin\bash -login -c '/medley/scripts/medley/medley.sh %*'\"" | out-file medley.bat -Encoding ascii"; WorkingDir: "{app}"; Flags: runhidden; StatusMsg: "Creating medley.bat ..."
Filename: "{app}\uninstall\EditPath.exe"; Parameters: "--user --add {app}"; Flags: runhidden; StatusMsg: "Adding to PATH ..."
Filename: "powershell"; Parameters: "remove-item -recurse -force {app}\install"; Flags: runhidden; StatusMsg: "Cleaning up ..."
[UninstallRun]
Filename: "{app}\uninstall\EditPath.exe"; Parameters: "--user --remove {app}"; Flags: runhidden

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -11,15 +11,6 @@
###############################################################################
# set -x
# mess with file desscriptors so we get only one line on stdout
# so we can communicate only what we want back to any githib runner
# stash fd 1 in fd 3
exec 3>&1
# make fd 1 (stdout) be the same as stdout
# so none of the std output from this file will be captured by
# $() but it will still be written out to the tty (via stderr)
exec 1>&2
tarball_dir=tmp/tarballs
# Make sure we are in the right directory
@@ -32,6 +23,13 @@ then
exit 1
fi
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
# If running as a github action or -t arg, then skip downloading the tarballs
if ! [[ -n "${GITHUB_WORKSPACE}" || "$1" = "-t" ]];
@@ -69,7 +67,6 @@ fi
pushd ${tarball_dir} >/dev/null 2>/dev/null
medley_release=$(echo medley-*-loadups.tgz | sed "s/medley-\(.*\)-loadups.tgz/\1/")
maiko_release=$(echo maiko-*-linux.x86_64.tgz | sed "s/maiko-\(.*\)-linux.x86_64.tgz/\1/")
debs_filename_base="medley-full-${medley_release}_${maiko_release}"
popd >/dev/null 2>/dev/null
@@ -136,7 +133,7 @@ do
#
# Create tar file for this arch
#
filename="${debs_filename_base}-${wslp}-${arch}"
filename="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e "s#@@PLATFORM@@#${wslp}#" -e "s#@@ARCH@@#${arch}#" -e "s#@@MEDLEY.RELEASE@@#${medley_release}#" -e "s#@@MAIKO.RELEASE@@#${maiko_release}#" )"
mkdir -p tars
echo "Creating tar file tars/${filename}.tgz"
tar -C ${il_dir} -czf tars/${filename}.tgz .
@@ -151,8 +148,5 @@ do
done
done
# send just one line back to github $() construct
# do this by restoring fd 1 to what it was orginally
exec 1>&3
echo "${debs_filename_base}"
################################################################################################################
################################################################################################################

View File

@@ -10,36 +10,46 @@
<ul>
<li><h4>Standard Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86_64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-x86_64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<li><h4>Windows System for Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86_64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86.64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-x86_64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86.64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
</ul></li>
<li><h3>Local Installations (for any Linux distro)</h3>
<ul>
<li><h4>Standard Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86_64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-x86_64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<li><h4>Windows System for Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86_64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-x86_64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
</ul></li>
</ul></li>
<li><h2>WINDOWS 10/11 (Medley runs in a Docker container)</h2>
<li><h2>WINDOWS 10/11 (Single install based on cygwin - Docker install deprecated)</h2>
<p><a href="@@@DOWNLOAD_URL@@@/@@@WINDOWS.INSTALLER.FILENAME@@@">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines</a></p></li>
<p><a href="@@@DOWNLOAD_URL@@@/@@@CYGWIN.INSTALLER@@@">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines</a></p></li>
<li><h2>macOS 11 (Big Sur) and later - for both Intel and Apple Silicon</h2>
<ul>
<li><h3>DMG Installer</h3>
<p>Not available</p></li>
<li><h3>ZIP Installer</h3>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-macos-universal-@@@COMBINED.RELEASE.TAG@@@.zip">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@</a></p></li>
</ul></li>
</ul></li>
</ul>

View File

@@ -6,40 +6,44 @@
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86\_64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.deb)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\.64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86\_64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\.64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
* ### Local Installations (for any Linux distro)
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86\_64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.tgz)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86\_64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
* ## WINDOWS 10/11 (Medley runs in a Docker container)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines](@@@DOWNLOAD_URL@@@/@@@WINDOWS.INSTALLER.FILENAME@@@)
* ## WINDOWS 10/11 (Single install based on cygwin - Docker install deprecated)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines](@@@DOWNLOAD_URL@@@/@@@CYGWIN.INSTALLER@@@)
* ## macOS 11 (Big Sur) and later - for both Intel and Apple Silicon
* ### DMG Installer
Not available
* ### ZIP Installer
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@](@@@DOWNLOAD_URL@@@/medley-full-macos-universal-@@@COMBINED.RELEASE.TAG@@@.zip)

7
installers/macos/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
tmp
devtmp
pkg/*.pkg
artifacts

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>medley/medley</string>
<key>CFBundleGetInfoString</key>
<string>Medley Interlisp, Copyright 2023 Interlisp.org</string>
<key>CFBundleIconFile</key>
<string>Medley.icns</string>
<key>CFBundleIdentifier</key>
<string>org.interlisp.Medley</string>
<key>CFBundleDocumentTypes</key>
<array>
</array>
<key>CFBundleInfoDictionaryVersion</key>
<string>3.51</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>--VERSION_TAG--</string>
<key>CFBundleSignature</key>
<string>Medley</string>
<key>CFBundleVersion</key>
<string>--VERSION_TAG--</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2023 Interlisp.org</string>
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
</dict>
</plist>

View File

@@ -0,0 +1 @@
APPLMedley

170
installers/macos/build_app.sh Executable file
View File

@@ -0,0 +1,170 @@
#!/bin/bash
###############################################################################
#
# build_app.sh: build app bundle for installing Medley Interlisp on MacOS
#
# 2023-02-23 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
###############################################################################
APPNAME=Medley
# 2023-07-19 Temorary selector to allow us to create .zip asset before app/dmg work is finished
INCLUDE_APP="no" # "yes" or "no"
# Make sure we are in the right directory
if [ ! -f ./app/Info.plist ];
then
echo "Can't find ./app/Info.plist file."
echo "Incorrect cwd?"
echo "Should be in medley/installers/macos"
echo "Exiting"
exit 1
fi
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
#
# Setup directories
#
CWD=$(pwd)
RESULTS_DIR=${CWD}/artifacts
APPBUNDLE=${RESULTS_DIR}/${APPNAME}.app
APPBUNDLECONTENTS=${APPBUNDLE}/Contents
APPBUNDLEEXE=${APPBUNDLECONTENTS}/MacOS
APPBUNDLERESOURCES=${APPBUNDLECONTENTS}/Resources
APPBUNDLEICON=${APPBUNDLECONTENTS}/Resources
tmp_dir=${CWD}/tmp
tarball_dir=${tmp_dir}/tarballs
# If running as a github action or -t arg, then skip downloading the tarballs
if ! [[ -n "${GITHUB_WORKSPACE}" || "$1" = "-t" ]];
then
# First, make sure gh is available and we are logged in to github
if [ -z "$(which gh)" ];
then
echo "Can't find gh"
echo "Exiting."
exit 2
fi
gh auth status 2>&1 | grep --quiet --no-messages "Logged in to github.com"
if [ $? -ne 0 ];
then
echo "Not logged into github."
echo "Exiting."
exit 3
fi
# then clear out the ./tmp directory
rm -rf ${tmp_dir}
mkdir -p ${tmp_dir}
# then download the maiko and medley tarballs
mkdir -p ${tarball_dir}
echo "Fetching maiko and medley release tarballs"
TAG=$(gh release list --repo interlisp/maiko | head -n 1 | awk "{print \$1 }")
gh release download ${TAG} \
--repo interlisp/maiko \
--dir ${tarball_dir} \
--pattern "*darwin*.tgz"
TAG=$(gh release list --repo interlisp/medley | head -n 1 | awk "{print \$1 }")
gh release download ${TAG} \
--repo interlisp/medley \
--dir ${tarball_dir} \
--pattern "*-loadups.tgz" \
--pattern "*-runtime.tgz"
gh repo clone interlisp/notecards notecards -- --depth 1
(cd notecards; git archive --format=tgz --output=../notecards.tgz --prefix=notecards/ main)
mv notecards.tgz ${tarball_dir}
rm -rf notecards
fi
# Figure out release tags from tarball names
pushd ${tarball_dir} >/dev/null 2>/dev/null
medley_release=$(echo medley-*-loadups.tgz | sed "s/medley-\(.*\)-loadups.tgz/\1/")
maiko_release=$(echo maiko-*-darwin.x86_64.tgz | sed "s/maiko-\(.*\)-darwin.x86_64.tgz/\1/")
popd >/dev/null 2>/dev/null
if [ "${INCLUDE_APP}" = "yes" ]; then
#
# Create bundle dirs
#
rm -rf ${RESULTS_DIR}
mkdir -p ${RESULTS_DIR}
rm -rf ${APPBUNDLE}
mkdir -p ${APPBUNDLE}
mkdir ${APPBUNDLE}/Contents
mkdir ${APPBUNDLE}/Contents/MacOS
mkdir ${APPBUNDLE}/Contents/Resources
#
# Create icons and put in bundle
#
iconset_dir=${tmp_dir}/${APPNAME}.iconset
rm -rf ${iconset_dir}
mkdir -p ${iconset_dir}
image_dir=${CWD}/images
sips -z 16 16 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_16x16.png >/dev/null 2>&1
sips -z 32 32 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_16x16@2x.png >/dev/null 2>&1
sips -z 32 32 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_32x32.png >/dev/null 2>&1
sips -z 64 64 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_32x32@2x.png >/dev/null 2>&1
sips -z 128 128 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_128x128.png >/dev/null 2>&1
sips -z 256 256 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_128x128@2x.png >/dev/null 2>&1
sips -z 256 256 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_256x256.png >/dev/null 2>&1
sips -z 512 512 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_256x256@2x.png >/dev/null 2>&1
sips -z 512 512 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_512x512.png >/dev/null 2>&1
cp ${image_dir}/App_icon1024.png ${iconset_dir}/icon_512x512@2x.png
iconutil -c icns -o ${tmp_dir}/${APPNAME}.icns ${iconset_dir}
cp ${tmp_dir}/${APPNAME}.icns ${APPBUNDLEICON}/
rm -r ${iconset_dir}
rm ${tmp_dir}/${APPNAME}.icns
#
# Update and copy in "control" files
#
sed -e "s/--VERSION_TAG--/${medley_release}.${maiko_release}.0/g" \
< app/Info.plist \
> ${APPBUNDLECONTENTS}/Info.plist
cp app/PkgInfo ${APPBUNDLECONTENTS}/
fi #INCLUDE_APP
#
# Untar the maiko and medley releases into the bundle
#
il_dir=${APPBUNDLE}/Contents/MacOS
mkdir -p ${il_dir}
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/maiko-${maiko_release}-darwin.universal.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-runtime.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-loadups.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/notecards.tgz"
#
# Handle run_medley needing separate directories for each arch
#
pushd ${il_dir}/maiko >/dev/null 2>&1
ln -s darwin.universal darwin.aarch64
ln -s darwin.universal darwin.x86_64
popd >/dev/null 2>&1
#
# Add file icon to medley.command
#
if [ -z "$(which fileicon)" ];
then
brew install fileicon
fi
fileicon set ${il_dir}/medley/scripts/medley/medley.command ${image_dir}/Command_icon128.png
#
# Also create the zip file of il_dir for distribution
#
pushd ${il_dir} >/dev/null 2>&1
filename="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e "s#@@PLATFORM@@#macos#" -e "s#@@ARCH@@#universal#" -e "s#@@MEDLEY.RELEASE@@#${medley_release}#" -e "s#@@MAIKO.RELEASE@@#${maiko_release}#" )"
zip -r -6 -y -q ${RESULTS_DIR}/${filename}.zip .
popd >/dev/null 2>&1
######################################################################################################
######################################################################################################

View File

@@ -0,0 +1,66 @@
#!/bin/bash
###############################################################################
#
# build_artifacts.sh: build the artifacts for installing Medley Interlisp on
# MacOS. Basically just calls build_app.sh and build_dmg.sh.
# based on Medley.app built by build_app.sh
#
# 2023-03-03 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
###############################################################################
#
# Figure out what directory this script is being executed from
#
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
#
# cd to the dir we are executing from and call
# build_app.sh and the build_dmg.sh
#
cd ${SCRIPTDIR}
t=""
c=""
if [[ "$1" = "-t" || "$2" = "-t" ]]; then t="-t"; fi
if [[ "$1" = "-c" || "$2" = "-c" ]]; then c="-c"; fi
./build_app.sh "${t}" 2>&1
# 2023-07-20 Not building dmg as yet, just using this to build zip file
# while we finish work around dmg
# ./build_dmg.sh "${c}"
###############################################################################

185
installers/macos/build_dmg.sh Executable file
View File

@@ -0,0 +1,185 @@
#!/bin/bash
###############################################################################
#
# build_dmg.sh: build dmg for installing Medley Interlisp on MacOS
# based on Medley.app built by build_app.sh
#
# 2023-03-03 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
# Based on code found at:
# http://stackoverflow.com/questions/96882/how-do-i-create-a-nice-looking-dmg-for-mac-os-x-using-command-line-tools
#
###############################################################################
#set -o verbose #echo onset +o verbose #echo off
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
#
# Set Parameters
#
APP_NAME="Medley.app"
VOL_NAME="Medley_Install"
BG_NAME=Install_Message.png
WIN_WIDTH=700
WIN_HEIGHT=850
#
# Set pathnames
#
CWD=$(pwd)
TMP_DIR=${CWD}/tmp
RESULTS_DIR=${CWD}/artifacts
APP_PATH=${RESULTS_DIR}/${APP_NAME}
DMG_PATH=${RESULTS_DIR}/${VOL_NAME}
SRC_DIR=${TMP_DIR}/dmg_src
IMAGES_DIR=${CWD}/images
SCRIPTS_DIR=${CWD}/scripts
#
# Make sure we are in the right directory
#
if [ ! -e ${APP_PATH} ];
then
echo "Can't find the app: ${APP_NAME}."
echo "Incorrect cwd? Should be in medley/installers/macos."
echo "Or build_app.sh not yet run?"
echo "Exiting"
exit 1
fi
#
# Copy over files from build app etc to dmg proto-directory
#
if [ ! "$1" = "-c" ]
then
#
# Cleanup anything leftover from last run
#
rm -rf ${SRC_DIR}
mkdir -p ${SRC_DIR}
#
# Assemble source directory for DMG
#
#ditto ${APP_PATH} ${SRC_DIR}/${APP_NAME}
mv ${APP_PATH} ${SRC_DIR}/${APP_NAME}
SetFile -a B ${SRC_DIR}/${APP_NAME}
ditto ${SCRIPTS_DIR}/medley_add2path ${SRC_DIR}/medley_add2path
ditto ${IMAGES_DIR}/${BG_NAME} ${SRC_DIR}/.background/${BG_NAME}
fi
#
# Create initial dmg image
#
if [ -e "/Volumes/${VOL_NAME}" ];
then
hdiutil detach /Volumes/${VOL_NAME}
fi
rm -f ${DMG_PATH}.temp.dmg
hdiutil create -srcfolder ${SRC_DIR} -volname ${VOL_NAME} -fs HFS+ \
-fsargs "-c c=64,a=16,e=16" -format UDRW ${DMG_PATH}.temp.dmg
device=$(\
hdiutil attach -readwrite -noverify -noautoopen "${DMG_PATH}".temp.dmg \
| egrep '^/dev/' | sed 1q | awk '{print $1}' \
)
#
# cd to the new dmg
#
pushd /Volumes/${VOL_NAME} >/dev/null 2>&1
#
# Add symbolic link for medley script and icon for addpath
#
ln -s Medley.app/Contents/MacOS/medley/scripts/medley/medley.command medley
if [ -z "$(which fileicon)" ];
then
brew install fileicon
fi
fileicon set medley_add2path ${IMAGES_DIR}/A2P_icon128.png
#
# Dress up the appearance using Applescript
#
ROW1=375
ROW2=650
COL1=139
COL2=350
COL3=561
osascript <<EOT
tell application "Finder"
tell disk "${VOL_NAME}"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set old_bounds to bounds of container window
set l to item 1 of old_bounds
set t to item 2 of old_bounds
set r to l + ${WIN_WIDTH}
set b to t + ${WIN_HEIGHT}
set the bounds of container window to {l, t, r, b}
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to snap to grid
set icon size of theViewOptions to 128
set background picture of theViewOptions to file ".background:${BG_NAME}"
set appHome to path to applications folder from system domain
make new alias file at container window to appHome with properties {name:"Applications"}
set appHome to path to applications folder from user domain
make new alias file at container window to appHome with properties {name:"My Applications"}
set appHome to path to home folder from user domain
make new alias file at container window to appHome with properties {name:"My Home Folder"}
delay 1
set position of item "${APP_NAME}" of container window to {${COL1}, ${ROW1}}
set position of item "medley" of container window to {${COL2}, ${ROW1}}
set position of item "medley_add2path" of container window to {${COL3}, ${ROW1}}
set position of item "Applications" of container window to {${COL1}, ${ROW2}}
set position of item "My Applications" of container window to {${COL2}, ${ROW2}}
set position of item "My Home Folder" of container window to {${COL3}, ${ROW2}}
close
end tell
end tell
EOT
#
# Add icon to dmg
#
fileicon set /Volumes/${VOL_NAME} ${IMAGES_DIR}/Install_icon128.png
#
# return to original dir
#
popd >/dev/null 2>&1
#
# Detach the tmp dmg and convert it to final (compressed, ro) dmg
#
hdiutil detach ${device}
sync
rm -f ${DMG_PATH}.dmg
hdiutil convert "${DMG_PATH}".temp.dmg -format UDZO -imagekey zlib-level=6 -o ${DMG_PATH}.dmg
rm -rf "${DMG_PATH}".temp.dmg
#
# Extract version info from app Info.plist & rename dmg using version
#
sed_script='{/CFBundleVersion/!d;N;s/^.*<string>\(.*\)<\/string>/\1/;s/.0$//;s/\./_/;p;}'
version=$(sed -ne "${sed_script}" ${SRC_DIR}/${APP_NAME}/Contents/Info.plist)
DMG_NAME="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e 's#@@PLATFORM@@#macos#' -e 's#@@ARCH@@#$universal#' -e 's#@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@#${version}#' )"
mv ${DMG_PATH}.dmg ${RESULTS_DIR}/${DMG_NAME}.dmg
#
# Done
#
echo "DMG build completed."
###############################################################################
###############################################################################

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="A2P_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="A2P_icon128.png"
inkscape:export-xdpi="6.1440001"
inkscape:export-ydpi="6.1440001"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="946.01031"
y="1500.8351"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">add2path</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5e6c4"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="864.81227"
inkscape:cy="918.92566"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="1508"
inkscape:window-y="107"
inkscape:window-maximized="0"
inkscape:current-layer="svg2704"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="App_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="App_icon512.png"
inkscape:export-xdpi="24.576"
inkscape:export-ydpi="24.576"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="1263.5646"
y="1466.0958"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">app</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5eddc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="760.59387"
inkscape:cy="1017.1315"
inkscape:window-width="2286"
inkscape:window-height="1205"
inkscape:window-x="45"
inkscape:window-y="53"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="Command_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="Command_icon256.png"
inkscape:export-xdpi="12.288"
inkscape:export-ydpi="12.288"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="936.01031"
y="1500.8351"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">command</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5ebd3"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="1195.5053"
inkscape:cy="916.92146"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="1099"
inkscape:window-y="119"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 144 KiB

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="Install_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="Install_icon256.png"
inkscape:export-xdpi="6.1440001"
inkscape:export-ydpi="6.1440001"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="970.08179"
y="1540.9191"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:366.667px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:366.667px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">install</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5ebd3"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="1199.5137"
inkscape:cy="920.92986"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="1099"
inkscape:window-y="63"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="MedleyIcon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="C:\Users\Frank\Dev\il\logos\MedleyIcon256.png"
inkscape:export-xdpi="12.287999"
inkscape:export-ydpi="12.287999"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="1302.7299"
inkscape:cy="918.92566"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="172"
inkscape:window-y="96"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588)"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<pkg-ref id="org.interlisp.Medley"/>
<options customize="always" require-scripts="false" hostArchitectures="x86_64,arm64" />
<domains enable_anywhere="false" enable_currentUserHome="true" enable_localSystem="false" />
<choices-outline>
<line choice="default">
<line choice="org.interlisp.Medley" />
</line>
<line choice="Location" />
</choices-outline>
<choice id="default" visible="false" />
<choice id="org.interlisp.Medley"
description="D Install for all Users?"
title="T Install for all users?"
customLocation="tests"
>
<pkg-ref id="org.interlisp.Medley"/>
</choice>
<choice id="Location"
description="D Install for all Users?"
title="T Install for all users?"
customLocation="tests"
>
<pkg-ref id="org.interlisp.Medley"/>
</choice>
<pkg-ref id="org.interlisp.Medley" version="01.01.01" onConclusion="none">Medley-base.pkg</pkg-ref>
</installer-gui-script>

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# functions to discover what directory this script is being executed from
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
touch ~/.profile
cat >> ~/.profile <<EOF
PATH=\${PATH}:${SCRIPTDIR}
EOF
rm ${SCRIPTDIR}/medley_add2path.command

View File

@@ -1,165 +1,165 @@
; Copyright (C) 2021-2023 by Bill Stewart (bstewart at iname.com)
;
; This program is free software; you can redistribute it and/or modify it under
; the terms of the GNU Lesser General Public License as published by the Free
; Software Foundation; either version 3 of the License, or (at your option) any
; later version.
;
; This program is distributed in the hope that it will be useful, but WITHOUT
; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
; FOR A PARTICULAR PURPOSE. See the GNU General Lesser Public License for more
; details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see https://www.gnu.org/licenses/.
; Sample Inno Setup (https://www.jrsoftware.org/isinfo.php) script
; demonstrating use of PathMgr.dll.
;
; This script uses PathMgr.dll in the following ways:
; * Copies PathMgr.dll to the target machine (required for uninstall)
; * Defines a task in [Tasks] that should modify the Path
; * Imports the AddDirToPath() DLL function at setup time
; * Imports the RemoveDirFromPath() DLL function at uninstall time
; * Stores task state as custom setting using RegisterPreviousData()
; * Retrieves task state custom setting during setup and uninstall initialize
; * At post install, adds app dir to Path if task selected
; * At uninstall, removes dir from Path if custom setting present
; * Unloads and deletes DLL and removes app dir at uninstall deinitialize
#if Ver < EncodeVer(6,0,0,0)
#error This script requires Inno Setup 6 or later
#endif
[Setup]
AppId={{A17D2D05-C729-4F2A-9CC7-E04906C5A842}
AppName=EditPath
AppVersion=4.0.4.0
UsePreviousAppDir=false
DefaultDirName={autopf}\EditPath
Uninstallable=true
OutputDir=.
OutputBaseFilename=EditPath_Setup
ArchitecturesInstallIn64BitMode=x64
PrivilegesRequired=none
PrivilegesRequiredOverridesAllowed=dialog
[Files]
; Install PathMgr.dll for use with both setup and uninstall; use
; uninsneveruninstall flag because DeinitializeSetup() will delete after
; unloading the DLL; install the 32-bit version of PathMgr.dll because both
; setup and uninstall executables are 32-bit
Source: "i386\PathMgr.dll"; DestDir: "{app}"; Flags: uninsneveruninstall
; Other files to install on target system
Source: "i386\EditPath.exe"; DestDir: "{app}"; Check: not Is64BitInstallMode()
Source: "x86_64\EditPath.exe"; DestDir: "{app}"; Check: Is64BitInstallMode()
Source: "EditPath.md"; DestDir: "{app}"
[Tasks]
Name: modifypath; Description: "&Add to Path"
[Code]
const
MODIFY_PATH_TASK_NAME = 'modifypath'; // Specify name of task
var
PathIsModified: Boolean; // Cache task selection from previous installs
ApplicationUninstalled: Boolean; // Has application been uninstalled?
// Import AddDirToPath() at setup time ('files:' prefix)
function DLLAddDirToPath(DirName: string; PathType, AddType: DWORD): DWORD;
external 'AddDirToPath@files:PathMgr.dll stdcall setuponly';
// Import RemoveDirFromPath() at uninstall time ('{app}\' prefix)
function DLLRemoveDirFromPath(DirName: string; PathType: DWORD): DWORD;
external 'RemoveDirFromPath@{app}\PathMgr.dll stdcall uninstallonly';
// Wrapper for AddDirToPath() DLL function
function AddDirToPath(const DirName: string): DWORD;
var
PathType, AddType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
// AddType = 0 - add to end of Path
// AddType = 1 - add to beginning of Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
AddType := 0;
result := DLLAddDirToPath(DirName, PathType, AddType);
end;
// Wrapper for RemoveDirFromPath() DLL function
function RemoveDirFromPath(const DirName: string): DWORD;
var
PathType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
result := DLLRemoveDirFromPath(DirName, PathType);
end;
procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
// Store previous or current task selection as custom user setting
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
SetPreviousData(PreviousDataKey, MODIFY_PATH_TASK_NAME, 'true');
end;
function InitializeSetup(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
end;
function InitializeUninstall(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
ApplicationUninstalled := false;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
// Add app directory to Path at post-install step if task selected
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
AddDirToPath(ExpandConstant('{app}'));
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
// Remove app directory from path during uninstall if task was selected;
// use variable because we can't use WizardIsTaskSelected() at uninstall
if PathIsModified then
RemoveDirFromPath(ExpandConstant('{app}'));
end
else if CurUninstallStep = usPostUninstall then
begin
ApplicationUninstalled := true;
end;
end;
procedure DeinitializeUninstall();
begin
if ApplicationUninstalled then
begin
// Unload and delete PathMgr.dll and remove app dir when uninstalling
UnloadDLL(ExpandConstant('{app}\PathMgr.dll'));
DeleteFile(ExpandConstant('{app}\PathMgr.dll'));
RemoveDir(ExpandConstant('{app}'));
end;
end;
; Copyright (C) 2021-2023 by Bill Stewart (bstewart at iname.com)
;
; This program is free software; you can redistribute it and/or modify it under
; the terms of the GNU Lesser General Public License as published by the Free
; Software Foundation; either version 3 of the License, or (at your option) any
; later version.
;
; This program is distributed in the hope that it will be useful, but WITHOUT
; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
; FOR A PARTICULAR PURPOSE. See the GNU General Lesser Public License for more
; details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see https://www.gnu.org/licenses/.
; Sample Inno Setup (https://www.jrsoftware.org/isinfo.php) script
; demonstrating use of PathMgr.dll.
;
; This script uses PathMgr.dll in the following ways:
; * Copies PathMgr.dll to the target machine (required for uninstall)
; * Defines a task in [Tasks] that should modify the Path
; * Imports the AddDirToPath() DLL function at setup time
; * Imports the RemoveDirFromPath() DLL function at uninstall time
; * Stores task state as custom setting using RegisterPreviousData()
; * Retrieves task state custom setting during setup and uninstall initialize
; * At post install, adds app dir to Path if task selected
; * At uninstall, removes dir from Path if custom setting present
; * Unloads and deletes DLL and removes app dir at uninstall deinitialize
#if Ver < EncodeVer(6,0,0,0)
#error This script requires Inno Setup 6 or later
#endif
[Setup]
AppId={{A17D2D05-C729-4F2A-9CC7-E04906C5A842}
AppName=EditPath
AppVersion=4.0.4.0
UsePreviousAppDir=false
DefaultDirName={autopf}\EditPath
Uninstallable=true
OutputDir=.
OutputBaseFilename=EditPath_Setup
ArchitecturesInstallIn64BitMode=x64
PrivilegesRequired=none
PrivilegesRequiredOverridesAllowed=dialog
[Files]
; Install PathMgr.dll for use with both setup and uninstall; use
; uninsneveruninstall flag because DeinitializeSetup() will delete after
; unloading the DLL; install the 32-bit version of PathMgr.dll because both
; setup and uninstall executables are 32-bit
Source: "i386\PathMgr.dll"; DestDir: "{app}"; Flags: uninsneveruninstall
; Other files to install on target system
Source: "i386\EditPath.exe"; DestDir: "{app}"; Check: not Is64BitInstallMode()
Source: "x86_64\EditPath.exe"; DestDir: "{app}"; Check: Is64BitInstallMode()
Source: "EditPath.md"; DestDir: "{app}"
[Tasks]
Name: modifypath; Description: "&Add to Path"
[Code]
const
MODIFY_PATH_TASK_NAME = 'modifypath'; // Specify name of task
var
PathIsModified: Boolean; // Cache task selection from previous installs
ApplicationUninstalled: Boolean; // Has application been uninstalled?
// Import AddDirToPath() at setup time ('files:' prefix)
function DLLAddDirToPath(DirName: string; PathType, AddType: DWORD): DWORD;
external 'AddDirToPath@files:PathMgr.dll stdcall setuponly';
// Import RemoveDirFromPath() at uninstall time ('{app}\' prefix)
function DLLRemoveDirFromPath(DirName: string; PathType: DWORD): DWORD;
external 'RemoveDirFromPath@{app}\PathMgr.dll stdcall uninstallonly';
// Wrapper for AddDirToPath() DLL function
function AddDirToPath(const DirName: string): DWORD;
var
PathType, AddType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
// AddType = 0 - add to end of Path
// AddType = 1 - add to beginning of Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
AddType := 0;
result := DLLAddDirToPath(DirName, PathType, AddType);
end;
// Wrapper for RemoveDirFromPath() DLL function
function RemoveDirFromPath(const DirName: string): DWORD;
var
PathType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
result := DLLRemoveDirFromPath(DirName, PathType);
end;
procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
// Store previous or current task selection as custom user setting
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
SetPreviousData(PreviousDataKey, MODIFY_PATH_TASK_NAME, 'true');
end;
function InitializeSetup(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
end;
function InitializeUninstall(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
ApplicationUninstalled := false;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
// Add app directory to Path at post-install step if task selected
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
AddDirToPath(ExpandConstant('{app}'));
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
// Remove app directory from path during uninstall if task was selected;
// use variable because we can't use WizardIsTaskSelected() at uninstall
if PathIsModified then
RemoveDirFromPath(ExpandConstant('{app}'));
end
else if CurUninstallStep = usPostUninstall then
begin
ApplicationUninstalled := true;
end;
end;
procedure DeinitializeUninstall();
begin
if ApplicationUninstalled then
begin
// Unload and delete PathMgr.dll and remove app dir when uninstalling
UnloadDLL(ExpandConstant('{app}\PathMgr.dll'));
DeleteFile(ExpandConstant('{app}\PathMgr.dll'));
RemoveDir(ExpandConstant('{app}'));
end;
end;

View File

@@ -1,118 +1,118 @@
# EditPath
EditPath is a Windows console (text-based, command-line) program for managing the system Path and user Path.
# Author
Bill Stewart - bstewart at iname dot com
# License
EditPath.exe is covered by the GNU Lesser Public License (LPGL). See the file `LICENSE` for details.
# Download
https://github.com/Bill-Stewart/PathMgr/releases/
# Background
The system Path is found in the following location in the Windows registry:
Root: `HKEY_LOCAL_MACHINE`
Subkey: `SYSTEM\CurrentControlSet\Control\Session Manager\Environment`
Value name: `Path`
The current user Path is found in the following location in the registry:
Root: `HKEY_CURRENT_USER`
Subkey: `Environment`
Value name: `Path`
In both cases, the `Path` value is (or should be) the registry type `REG_EXPAND_SZ`, which means that it is a string that can contain values surrounded by `%` characters that Windows will automatically expand to environment variable values. (For example, `%SystemRoot%` will be expanded to `C:\Windows` on most systems.)
The `Path` value contains a `;`-delimited list of directory names that the system should search for executables, library files, scripts, etc. Windows appends the content of the current user Path to the system Path and expands the environment variable references. The resulting string is set as the `Path` environment variable for processes.
EditPath provides a command-line interface for managing the `Path` value in the system location (in `HKEY_LOCAL_MACHINE`) and the current user location (in `HKEY_CURRENT_USER`).
# Usage
The following describes the command-line usage for the program. Parameters are case-sensitive.
**EditPath** [_options_] _type_ _action_
You must specify only one of the following _type_ parameters:
| _type_ | Abbreviation | Description
| ------- | ------------ | -----------
| **--system** | **-s** | Specifies the system Path
| **--user** | **-u** | Specifies the user Path
You must specify only one of the following _action_ parameters:
| _action_ | Abbreviation | Description
| -------- | ------------ | -----------
| **--list** | **-l** | Lists directories in Path
| **--test "**_dirname_**"** | **-t "**_dirname_**"** | Tests if directory exists in Path
| **--add "**_dirname_**"** | **-a "**_dirname_**"** | Adds directory to Path
| **--remove "**_dirname_**"** | **-r "**_dirname_**"** | Removes directory from Path
The following parameters are optional:
| _options_ | Abbreviation | Description
| --------- | ------------ | -----------
| **--quiet** | **-q** | Suppresses result messages
| **--expand** | **-x** | Expands environment variables (**--list** only)
| **--beginning** | **-b** | Adds to beginning of Path (**--add** only)
# Exit Codes
The following table lists typical exit codes when not using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 0 | No errors
| 2 | The Path value is not present in the registry
| 3 | The specified directory does not exist in the Path
| 5 | Access is denied
| 87 | Incorrect parameter(s)
| 183 | The specified directory already exists in the Path
The following table lists typical exit codes when using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 1 | The specified directory exists in the unexpanded Path
| 2 | The specified directory exists in the expanded Path
| 3 | The specified directory does not exist in the Path
# Remarks
* Anything on the command line after **--test**, **--add**, or **--remove** is considered to be the argument for the parameter. To avoid ambiguity, specify the _action_ parameter last on the command line.
* Uexpanded vs. expanded refers to whether the environment variable references (i.e., names between `%` characters) are expanded after retrieving the Path value from the registry. For example, `%SystemRoot%` is unexpanded but `C:\Windows` is expanded.
* The **--add** (**-a**) parameter checks whether the specified directory exists in both the unexpanded and expanded copies of the Path before adding the directory. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--add C:\TestApp` will return exit code 183 (i.e., the directory already exists in the Path) because `%TESTAPP%` expands to `C:\TestApp`.
* The **--remove** (**-r**) parameter does not expand environment variable references. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--remove "C:\TestApp"` will return exit code 3 (i.e., the directory does not exist in the Path) because **--remove** does not expand `%TESTAPP%` to `C:\TestApp`. For the command to succeed, you would have to specify `--remove "%TESTAPP%"` instead.
* The program will exit with error code 87 if a parameter (or an argument to a parameter) is missing or not valid, if mutually exclusive parameters are specified, etc.
* The program will exit with error code 5 if the current user does not have permission to update the Path value in the registry (for example, if you try to update the system Path using a standard user account or an unelevated administrator account).
# Examples
1. `EditPath --expand --system --list`
This command outputs the directories in the system Path, with environment variables expanded. You can also write this command as `EditPath -x -s -l`.
2. `EditPath --user --add "%LOCALAPPDATA%\Programs\MyApp"`
Adds the specified directory name to the user Path.
3. `EditPath -s -r "C:\Program Files\MyApp\bin"`
Removes the specified directory from the system Path.
4. `EditPath -s --test "C:\Program Files (x86)\MyApp\bin"`
Returns an exit code of 3 if the specified directory is not in the system Path, 1 if the specified directory is in the unexpanded copy of the system Path, or 2 if the specified directory is in the expanded copy of the system Path.
# EditPath
EditPath is a Windows console (text-based, command-line) program for managing the system Path and user Path.
# Author
Bill Stewart - bstewart at iname dot com
# License
EditPath.exe is covered by the GNU Lesser Public License (LPGL). See the file `LICENSE` for details.
# Download
https://github.com/Bill-Stewart/PathMgr/releases/
# Background
The system Path is found in the following location in the Windows registry:
Root: `HKEY_LOCAL_MACHINE`
Subkey: `SYSTEM\CurrentControlSet\Control\Session Manager\Environment`
Value name: `Path`
The current user Path is found in the following location in the registry:
Root: `HKEY_CURRENT_USER`
Subkey: `Environment`
Value name: `Path`
In both cases, the `Path` value is (or should be) the registry type `REG_EXPAND_SZ`, which means that it is a string that can contain values surrounded by `%` characters that Windows will automatically expand to environment variable values. (For example, `%SystemRoot%` will be expanded to `C:\Windows` on most systems.)
The `Path` value contains a `;`-delimited list of directory names that the system should search for executables, library files, scripts, etc. Windows appends the content of the current user Path to the system Path and expands the environment variable references. The resulting string is set as the `Path` environment variable for processes.
EditPath provides a command-line interface for managing the `Path` value in the system location (in `HKEY_LOCAL_MACHINE`) and the current user location (in `HKEY_CURRENT_USER`).
# Usage
The following describes the command-line usage for the program. Parameters are case-sensitive.
**EditPath** [_options_] _type_ _action_
You must specify only one of the following _type_ parameters:
| _type_ | Abbreviation | Description
| ------- | ------------ | -----------
| **--system** | **-s** | Specifies the system Path
| **--user** | **-u** | Specifies the user Path
You must specify only one of the following _action_ parameters:
| _action_ | Abbreviation | Description
| -------- | ------------ | -----------
| **--list** | **-l** | Lists directories in Path
| **--test "**_dirname_**"** | **-t "**_dirname_**"** | Tests if directory exists in Path
| **--add "**_dirname_**"** | **-a "**_dirname_**"** | Adds directory to Path
| **--remove "**_dirname_**"** | **-r "**_dirname_**"** | Removes directory from Path
The following parameters are optional:
| _options_ | Abbreviation | Description
| --------- | ------------ | -----------
| **--quiet** | **-q** | Suppresses result messages
| **--expand** | **-x** | Expands environment variables (**--list** only)
| **--beginning** | **-b** | Adds to beginning of Path (**--add** only)
# Exit Codes
The following table lists typical exit codes when not using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 0 | No errors
| 2 | The Path value is not present in the registry
| 3 | The specified directory does not exist in the Path
| 5 | Access is denied
| 87 | Incorrect parameter(s)
| 183 | The specified directory already exists in the Path
The following table lists typical exit codes when using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 1 | The specified directory exists in the unexpanded Path
| 2 | The specified directory exists in the expanded Path
| 3 | The specified directory does not exist in the Path
# Remarks
* Anything on the command line after **--test**, **--add**, or **--remove** is considered to be the argument for the parameter. To avoid ambiguity, specify the _action_ parameter last on the command line.
* Uexpanded vs. expanded refers to whether the environment variable references (i.e., names between `%` characters) are expanded after retrieving the Path value from the registry. For example, `%SystemRoot%` is unexpanded but `C:\Windows` is expanded.
* The **--add** (**-a**) parameter checks whether the specified directory exists in both the unexpanded and expanded copies of the Path before adding the directory. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--add C:\TestApp` will return exit code 183 (i.e., the directory already exists in the Path) because `%TESTAPP%` expands to `C:\TestApp`.
* The **--remove** (**-r**) parameter does not expand environment variable references. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--remove "C:\TestApp"` will return exit code 3 (i.e., the directory does not exist in the Path) because **--remove** does not expand `%TESTAPP%` to `C:\TestApp`. For the command to succeed, you would have to specify `--remove "%TESTAPP%"` instead.
* The program will exit with error code 87 if a parameter (or an argument to a parameter) is missing or not valid, if mutually exclusive parameters are specified, etc.
* The program will exit with error code 5 if the current user does not have permission to update the Path value in the registry (for example, if you try to update the system Path using a standard user account or an unelevated administrator account).
# Examples
1. `EditPath --expand --system --list`
This command outputs the directories in the system Path, with environment variables expanded. You can also write this command as `EditPath -x -s -l`.
2. `EditPath --user --add "%LOCALAPPDATA%\Programs\MyApp"`
Adds the specified directory name to the user Path.
3. `EditPath -s -r "C:\Program Files\MyApp\bin"`
Removes the specified directory from the system Path.
4. `EditPath -s --test "C:\Program Files (x86)\MyApp\bin"`
Returns an exit code of 3 if the specified directory is not in the system Path, 1 if the specified directory is in the unexpanded copy of the system Path, or 2 if the specified directory is in the expanded copy of the system Path.

View File

@@ -34,7 +34,7 @@ SolidCompression=yes
; 64-bit Program Files directory and the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64
OutputDir="."
OutputBaseFilename="medley-install_{#version}_{#x86_or_x64}"
OutputBaseFilename="medley-full-{#version}-windows-{#x86_or_x64}"
SetupIconFile="Medley.ico"
DisableWelcomePage=no
MissingRunOnceIdsWarning=no

View File

@@ -1,20 +1,22 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED " 3-Aug-2023 18:40:12" |{DSK}<home>frank>il>medley>gmedley>internal>MEDLEY-UTILS.;6| 10695
(FILECREATED "16-Nov-2023 21:59:19" |{DSK}<home>larry>il>medley>internal>MEDLEY-UTILS.;2| 18962
:EDIT-BY "frank"
:EDIT-BY "lmm"
:CHANGES-TO (FNS MAKE-FULLER-DB MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH)
:CHANGES-TO (VARS OKLIBRARY OKLISPUSERS)
:PREVIOUS-DATE " 1-Aug-2023 22:43:13"
|{DSK}<home>frank>il>medley>gmedley>internal>MEDLEY-UTILS.;5|)
:PREVIOUS-DATE " 4-Nov-2023 15:23:16" |{DSK}<home>larry>il>medley>internal>MEDLEY-UTILS.;1|)
(PRETTYCOMPRINT MEDLEY-UTILSCOMS)
(RPAQQ MEDLEY-UTILSCOMS ((FNS GATHER-INFO MAKE-FULLER-DB MEDLEY-FIX-LINKS MEDLEY-FIX-DATES)
(VARS MEDLEY-FIX-DIRS OKSOURCES OKLIBRARY OKLISPUSERS OKINTERNAL)
(FNS MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH)))
(FNS MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH)
(FNS BADFILE HCFILES PRETTYFILES)
(INITVARS (HCFILES)
(BADFILES))))
(DEFINEQ
(GATHER-INFO
@@ -137,12 +139,15 @@
(POSTSCRIPTSTREAM CHATTERMINAL DMCHAT CHAT PRESS READNUMBER EDITBITMAP IMAGEOBJ TEDIT HRULE
TABLEBROWSER FILEBROWSER GRAPHER SPY WHERE-IS COPYFILES MSANALYZE MSPARSE MSCOMMON
MASTERSCOPE UNIXCOMM UNIXPRINT UNICODE HASH CLIPBOARD UNIXCHAT VT100KP VTCHAT SKETCH
SKETCHBMELT SCALEBITMAP SKETCHOBJ SKETCHEDIT SKETCHELEMENTS SKETCHOPS MATMULT SAMEDIR))
SKETCHBMELT SCALEBITMAP SKETCHOBJ SKETCHEDIT SKETCHELEMENTS SKETCHOPS MATMULT SAMEDIR
REMOTEVMEM ETHERRECORDS UNIXUTILS CHATDECLS BROWSER))
(RPAQQ OKLISPUSERS (THINFILES ISO8859IO DINFO HELPSYS MODERNIZE WHEELSCROLL PRETTYFILEINDEX WHO-LINE
BACKGROUND-YIELD OBJECTWINDOW REGIONMANAGER COMPARETEXT EXAMINEDEFS
COMPARESOURCES COMPAREDIRECTORIES PSEUDOHOSTS DATEFORMAT-EDITOR DOC-OBJECTS
EQUATIONS BICLOCK FILEWATCH LIFE IDLEHAX GITFNS TMAX IMTOOLS))
(RPAQQ OKLISPUSERS
(THINFILES ISO8859IO DINFO HELPSYS MODERNIZE WHEELSCROLL PRETTYFILEINDEX WHO-LINE
BACKGROUND-YIELD OBJECTWINDOW REGIONMANAGER COMPARETEXT EXAMINEDEFS COMPARESOURCES
COMPAREDIRECTORIES PSEUDOHOSTS DATEFORMAT-EDITOR DOC-OBJECTS EQUATIONS BICLOCK
FILEWATCH LIFE IDLEHAX GITFNS TMAX IMTOOLS EQUATIONFORMS UNBOXEDOPS TILED-SEDIT
IDLEDEMO WDWHACKS BUTTONS PICK PAGEHOLD UNIXYCD))
(RPAQQ OKINTERNAL (MEDLEY-UTILS))
(DEFINEQ
@@ -176,8 +181,167 @@
(RENAMEFILE HASHFILE (OR WHEREISFILE "whereis.hash"))
(DRIBBLE))))
)
(DEFINEQ
(BADFILE
(LAMBDA NIL (* \; "Edited 20-Oct-2022 15:40 by lmm")
(* \; "Edited 22-Jun-2022 09:40 by larry")
(|pushnew| BADFILES *FILE*)
(LET ((STR (OPENSTREAM "BADFILES.TXT" 'APPEND)))
(SETFILEPTR STR -1)
(PRINT *FILE* STR)
(CLOSEF STR))
(RETFROM (OR (STKPOS 'PRETTYFILES)
'HCFILES))))
(HCFILES
(LAMBDA (*FILE* DEST REDOFLG TOPDIRLEN)
(DECLARE (SPECVARS *FILE*)
(GLOBALVARS BADFILE)) (* \; "Edited 4-Nov-2023 11:14 by lmm")
(* \; "Edited 20-Oct-2022 16:11 by lmm")
(* \; "Edited 9-Aug-2022 20:44 by lmm")
(|if| (NULL *FILE*)
|then| (SETQ *FILE* MEDLEYDIR))
(COND
((LISTP *FILE*)
(FOR X IN *FILE* DO (HCFILES X DEST REDOFLG TOPDIRLEN)))
((DIRECTORYNAMEP *FILE*)
(* |;;| "canonicalize")
(SETQ *FILE* (DIRECTORYNAME *FILE*))
(OR TOPDIRLEN (SETQ TOPDIRLEN (CL:LENGTH (FILENAMEFIELD.STRING *FILE* 'DIRECTORY))))
(CL:UNLESS DEST
(|ShellCommand| (CONCAT "mkdir -p " (UNIX-GETENV "MEDLEYDIR")
"/tmp/psfiles/"))
(SETQ DEST (MEDLEYDIR "tmp/psfiles" NIL T T)))
(* |;;| "first deal with files in this directory")
(|for| EXT |in| '("TED*" "SKETCH")
|do| (|for| X |in| (DIRECTORY (CONCAT *FILE* "*." EXT ";*"))
|do| (HCFILES X DEST REDOFLG TOPDIRLEN)))
(* |;;| " then deal with subdirs ")
(|for| X |in| (DIRECTORY (CONCAT *FILE* "*"))
|when| (|for| SKIP |in| '(">." ">dinfo>") |always| (NOT (STRPOS SKIP (L-CASE X))))
|when| (DIRECTORYNAMEP X) |do| (HCFILES X DEST REDOFLG TOPDIRLEN)))
((SETQ *FILE* (INFILEP *FILE*))
(LET* ((TF (UNPACKFILENAME.STRING *FILE*))
(NAME (LISTGET TF 'NAME))
(DIR (LISTGET TF 'DIRECTORY))
(PSFILE (PACKFILENAME.STRING
'EXTENSION
(|if| (EQ REDOFLG 'IP)
|then| "IP"
|else| "PS")
'NAME
(|if| (EQ DEST T)
|then| (* \; "with the tedit file")
NAME
|else| (CONCAT (PACK (SUBST '- '> (UNPACK (SUBSTRING DIR (IPLUS 2 TOPDIRLEN
)
-1))))
"-" NAME))
'HOST
(LISTGET TF 'HOST)
'DIRECTORY
(|if| (EQ DEST T)
|then| DIR
|else| DEST)))
(TEXTSTREAM))
(|if| (AND (NOT REDOFLG)
(INFILEP PSFILE))
|then| (* \; " do nothing")
(PRINTOUT T PSFILE " already there" T)
|elseif| (EQ REDOFLG 'TEST)
|then| (PRINTOUT T *FILE* "-> " PSFILE T)
(CLOSEF (OPENTEXTSTREAM *FILE*))
|elseif| (MEMBER *FILE* BADFILES)
|then| (PRINTOUT T "Skipping " *FILE* " on BADFILES")
|else| (PRINTOUT T "Converting " *FILE* " to " PSFILE "...")
(TEDIT.FORMAT.HARDCOPY (SETQ TEXTSTREAM (OPENTEXTSTREAM *FILE*))
PSFILE T NIL NIL NIL (|if| (EQ REDOFLG 'IP)
|then| 'INTERPRESS
|else| 'POSTSCRIPT))
(|printout| T " DONE" T)
(CLOSEF? TEXTSTREAM))))
(T (PRINTOUT T "no such file " T)))))
(PRETTYFILES
(LAMBDA (*FILE* DEST REDOFLG TOPDIRLEN)
(DECLARE (SPECVARS *FILE*)
(GLOBALVARS BADFILES)) (* \; "Edited 20-Oct-2022 16:12 by lmm")
(* \; "Edited 9-Aug-2022 20:44 by lmm")
(|if| (NULL *FILE*)
|then| (SETQ *FILE* MEDLEYDIR))
(COND
((DIRECTORYNAMEP *FILE*)
(* |;;| "canonicalize")
(SETQ *FILE* (DIRECTORYNAME *FILE*))
(OR TOPDIRLEN (SETQ TOPDIRLEN (CL:LENGTH (FILENAMEFIELD.STRING *FILE* 'DIRECTORY))))
(CL:UNLESS DEST
(|ShellCommand| (CONCAT "mkdir -p " (UNIX-GETENV "MEDLEYDIR")
"/tmp/psfiles/"))
(SETQ DEST (MEDLEYDIR "tmp/psfiles" NIL T T)))
(* |;;| "first deal with files in this directory; ignore files with extensions for now\"*.LISP\" \"*.ILISP\"")
(|for| PAT |in| '("*.;") |do| (|for| X |in| (DIRECTORY (CONCAT *FILE* PAT))
WHEN (NOT (DIRECTORYNAMEP X)) WHEN (INFILEP X)
WHEN (CAR (OR (NLSETQ (LISPSOURCEFILEP X))
(PROGN (PRINTOUT T "LISPSOURCEFILEP error" X)
NIL)))
|do| (PRETTYFILES X DEST REDOFLG TOPDIRLEN)))
(* |;;| " then deal with subdirs ")
(|for| X |in| (DIRECTORY (CONCAT *FILE* "*"))
|when| (|for| SKIP IN '("clos" "cltl2" "rooms>" ".>")
|always| (NOT (STRPOS SKIP (L-CASE X)))) |when| (DIRECTORYNAMEP X)
|do| (PRETTYFILES X DEST REDOFLG TOPDIRLEN)))
((AND (SETQ *FILE* (INFILEP *FILE*))
(LISPSOURCEFILEP *FILE*))
(LET* ((TF (UNPACKFILENAME.STRING *FILE*))
(NAME (LISTGET TF 'NAME))
(DIR (LISTGET TF 'DIRECTORY))
(PSFILE (PACKFILENAME.STRING
'EXTENSION "ps" 'NAME
(|if| (EQ DEST T)
|then| (* \; "with the source file")
(CONCAT NAME ".pfi")
|else| (CONCAT (PACK (SUBST '- '> (UNPACK (SUBSTRING DIR (IPLUS 2 TOPDIRLEN
)
-1))))
"-" NAME))
'HOST
(LISTGET TF 'HOST)
'DIRECTORY
(|if| (EQ DEST T)
|then| DIR
|else| DEST))))
(|if| (AND (NOT REDOFLG)
(INFILEP PSFILE))
|then| (* \; " do nothing")
(PRINTOUT T PSFILE " already there" T)
|elseif| (MEMBER *FILE* BADFILES)
|then| (PRINTOUT T "Skipping " *FILE* " on BADFILES")
|else| (PRINTOUT T "Converting " *FILE* " to " PSFILE "...")
(CL:WITH-OPEN-STREAM (STR (OPENPOSTSCRIPTSTREAM PSFILE))
(PRETTYFILEINDEX *FILE* NIL STR))
(|printout| T " DONE" T))))
(T (PRINTOUT T "no such file " T)))))
)
(RPAQ? HCFILES )
(RPAQ? BADFILES )
(DECLARE\: DONTCOPY
(FILEMAP (NIL (679 7642 (GATHER-INFO 689 . 6217) (MAKE-FULLER-DB 6219 . 6997) (MEDLEY-FIX-LINKS 6999
. 7396) (MEDLEY-FIX-DATES 7398 . 7640)) (8681 10672 (MAKE-EXPORTS-ALL 8691 . 9752) (MAKE-WHEREIS-HASH
9754 . 10670)))))
(FILEMAP (NIL (781 7744 (GATHER-INFO 791 . 6319) (MAKE-FULLER-DB 6321 . 7099) (MEDLEY-FIX-LINKS 7101
. 7498) (MEDLEY-FIX-DATES 7500 . 7742)) (8923 10914 (MAKE-EXPORTS-ALL 8933 . 9994) (MAKE-WHEREIS-HASH
9996 . 10912)) (10915 18894 (BADFILE 10925 . 11393) (HCFILES 11395 . 15280) (PRETTYFILES 15282 .
18892)))))
STOP

Binary file not shown.

View File

@@ -1,15 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED " 9-Jul-2022 09:41:26" 
|{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>BIGBITMAPS.;12| 108851
(FILECREATED "31-Jul-2023 13:39:50" |{WMEDLEY}<library>BIGBITMAPS.;13| 109376
:EDIT-BY |rmk|
:CHANGES-TO (VARS BIGBITMAPSCOMS)
(FNS \\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM \\GENERIC.DSPCREATE.BIGBM
\\DSPCREATE.BIGBM)
(MACROS |\\SFInvert|)
(FNS BIGBITMAPEQUAL)
:PREVIOUS-DATE "26-Oct-2021 14:51:38"
|{DSK}<users>kaplan>local>medley3.5>working-medley>library>BIGBITMAPS.;6|)
:PREVIOUS-DATE " 9-Jul-2022 09:41:26" |{WMEDLEY}<library>BIGBITMAPS.;12|)
; Copyright (c) 1991, 1993-1994 by Venue.
@@ -24,8 +22,8 @@
(MACROS |GetNewFragment|)
(MACROS |\\SFInvert|))
(INITRECORDS BIGBM)
(FNS BIGBITMAPP BITBLT.BIGBM BITMAPCREATE.BIGBM BITMAPCREATE BITMAPCOPY BLTSHADE.BIGBM BITBLT
\\ORG.BITBLT \\BLTSHADE.DISPLAY \\RESHOWBORDER1)
(FNS BIGBITMAPP BITBLT.BIGBM BITMAPCREATE.BIGBM BITMAPCREATE BITMAPCOPY BIGBITMAPEQUAL
BLTSHADE.BIGBM BITBLT \\ORG.BITBLT \\BLTSHADE.DISPLAY \\RESHOWBORDER1)
(FNS \\DRAWCIRCLE.BIGBM \\FILLCIRCLE.BIGBM \\DRAWELLIPSE.BIGBM \\DRAWCURVE.BIGBM
\\DRAWLINE.BIGBM.DASH \\DRAWLINE.BIGBM.NODASH)
(FNS \\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM)
@@ -353,6 +351,20 @@
0 0 NIL NIL 'INPUT 'REPLACE 0)
(RETURN NEWBITMAP))))
(BIGBITMAPEQUAL
(LAMBDA (BM1 BM2) (* \; "Edited 31-Jul-2023 13:08 by rmk")
(* |;;| "Fields may not be SMALLP")
(AND (|type?| BIGBM |of| BM1)
(|type?| BIGBM |of| BM2)
(IEQP (|ffetch| (BIGBM BIGBMWIDTH) |of| BM1)
(|ffetch| (BIGBM BIGBMWIDTH) |of| BM2))
(IEQP (|ffetch| (BIGBM BIGBMHEIGHT) |of| BM1)
(|ffetch| (BIGBM BIGBMHEIGHT) |of| BM2))
(|for| B1 |in| (|ffetch| (BIGBM BIGBMLIST) |of| BM1) |as| B2
|in| (|ffetch| (BIGBM BIGBMLIST) |of| BM2) |always| (EQUALBITMAPP B1 B2)))))
(BLTSHADE.BIGBM
(LAMBDA (TEXTURE DESTINATION DESTLEFT DESTBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION)
(* \; "Edited 17-Oct-89 19:01 by takeshi")
@@ -1699,15 +1711,15 @@
)
(PUTPROPS BIGBITMAPS COPYRIGHT ("Venue" 1991 1993 1994))
(DECLARE\: DONTCOPY
(FILEMAP (NIL (3546 48244 (BIGBITMAPP 3556 . 3702) (BITBLT.BIGBM 3704 . 14527) (BITMAPCREATE.BIGBM
14529 . 15871) (BITMAPCREATE 15873 . 17475) (BITMAPCOPY 17477 . 18012) (BLTSHADE.BIGBM 18014 . 21150)
(BITBLT 21152 . 22800) (\\ORG.BITBLT 22802 . 34371) (\\BLTSHADE.DISPLAY 34373 . 43611) (
\\RESHOWBORDER1 43613 . 48242)) (48245 71523 (\\DRAWCIRCLE.BIGBM 48255 . 51618) (\\FILLCIRCLE.BIGBM
51620 . 55666) (\\DRAWELLIPSE.BIGBM 55668 . 60188) (\\DRAWCURVE.BIGBM 60190 . 64040) (
\\DRAWLINE.BIGBM.DASH 64042 . 68401) (\\DRAWLINE.BIGBM.NODASH 68403 . 71521)) (71524 71893 (
\\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM 71534 . 71891)) (72025 85168 (DSPDESTINATION 72035 .
75933) (|\\SFFixY| 75935 . 81657) (|\\SFFixDestination| 81659 . 82842) (|\\SFFixClippingRegion| 82844
. 85166)) (85169 93255 (\\SW2BM 85179 . 90203) (BITMAPHEIGHT 90205 . 90703) (BITMAPWIDTH 90705 .
91197) (|\\SFFixFont| 91199 . 92171) (BITSPERPIXEL 92173 . 93253)) (93256 108609 (COLORIZEBITMAP 93266
. 96076) (\\BWTOCOLORBLT 96078 . 102671) (UNCOLORIZEBITMAP 102673 . 108607)))))
(FILEMAP (NIL (3364 48769 (BIGBITMAPP 3374 . 3520) (BITBLT.BIGBM 3522 . 14345) (BITMAPCREATE.BIGBM
14347 . 15689) (BITMAPCREATE 15691 . 17293) (BITMAPCOPY 17295 . 17830) (BIGBITMAPEQUAL 17832 . 18537)
(BLTSHADE.BIGBM 18539 . 21675) (BITBLT 21677 . 23325) (\\ORG.BITBLT 23327 . 34896) (\\BLTSHADE.DISPLAY
34898 . 44136) (\\RESHOWBORDER1 44138 . 48767)) (48770 72048 (\\DRAWCIRCLE.BIGBM 48780 . 52143) (
\\FILLCIRCLE.BIGBM 52145 . 56191) (\\DRAWELLIPSE.BIGBM 56193 . 60713) (\\DRAWCURVE.BIGBM 60715 . 64565
) (\\DRAWLINE.BIGBM.DASH 64567 . 68926) (\\DRAWLINE.BIGBM.NODASH 68928 . 72046)) (72049 72418 (
\\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM 72059 . 72416)) (72550 85693 (DSPDESTINATION 72560 .
76458) (|\\SFFixY| 76460 . 82182) (|\\SFFixDestination| 82184 . 83367) (|\\SFFixClippingRegion| 83369
. 85691)) (85694 93780 (\\SW2BM 85704 . 90728) (BITMAPHEIGHT 90730 . 91228) (BITMAPWIDTH 91230 .
91722) (|\\SFFixFont| 91724 . 92696) (BITSPERPIXEL 92698 . 93778)) (93781 109134 (COLORIZEBITMAP 93791
. 96601) (\\BWTOCOLORBLT 96603 . 103196) (UNCOLORIZEBITMAP 103198 . 109132)))))
STOP

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
library/Cash-File.tedit Normal file

Binary file not shown.

View File

@@ -1,171 +0,0 @@
((EUROPEAN ((100 (53 197 NOLOCKSHIFT)) (101 (52 196 NOLOCKSHIFT)) (102 (54 198 NOLOCKSHIFT)) (103 (
61887 61759 LOCKSHIFT)) (104 (55 199 NOLOCKSHIFT)) (105 (61888 61760 LOCKSHIFT)) (106 (61872 61744
LOCKSHIFT)) (107 (61860 61732 LOCKSHIFT)) (108 (48 126 NOLOCKSHIFT)) (109 (61892 61764 LOCKSHIFT)) (
110 (203 207 NOLOCKSHIFT)) (111 (61919 61791 LOCKSHIFT)) (112 (47 191 NOLOCKSHIFT)) (115 (8 8
NOLOCKSHIFT) . IGNORE) (116 (51 195 NOLOCKSHIFT)) (117 (50 194 NOLOCKSHIFT)) (118 (61873 61745
LOCKSHIFT)) (119 (61858 61730 LOCKSHIFT)) (120 (61874 61746 LOCKSHIFT)) (121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT)) (123 (61886 61758 LOCKSHIFT)) (124 (61864 61736 LOCKSHIFT)) (125 (61903
61775 LOCKSHIFT)) (126 (61908 61780 LOCKSHIFT)) (127 (241 225 LOCKSHIFT)) (128 (187 170 LOCKSHIFT)) (
129 (249 233 LOCKSHIFT)) (132 (49 193 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61905 61777 LOCKSHIFT)) (137 (61869 61741 LOCKSHIFT)) (138 (61877 61749
LOCKSHIFT)) (139 (61906 61778 LOCKSHIFT)) (140 (251 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (
250 234 LOCKSHIFT)) (143 (59 58 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (171 186 LOCKSHIFT
)) (148 (61904 61776 LOCKSHIFT)) (149 (61920 61792 LOCKSHIFT)) (150 (61921 61793 LOCKSHIFT)) (151 (
61857 61729 LOCKSHIFT)) (152 (61863 61735 LOCKSHIFT)) (153 (56 200 NOLOCKSHIFT)) (154 (61900 61772
LOCKSHIFT)) (155 (239 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
246 230 LOCKSHIFT)) (159 (207 176 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (logic ((100 (
53 37 NOLOCKSHIFT)) (101 (52 164 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61258 61260
NOLOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (61292 61293 NOLOCKSHIFT)) (106 (61271 61270 NOLOCKSHIFT)
) (107 (61284 61285 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61307 61306 NOLOCKSHIFT)) (110 (45
177 NOLOCKSHIFT)) (111 (61269 61268 LOCKSHIFT)) (112 (172 174 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61240 61241 NOLOCKSHIFT)) (119 (
61234 61235 NOLOCKSHIFT)) (120 (61266 61262 NOLOCKSHIFT)) (121 (61365 61365 NOLOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (61275 61274 NOLOCKSHIFT)) (124 (61300 61299 NOLOCKSHIFT)) (125 (61273 61272
NOLOCKSHIFT)) (126 (61282 61283 NOLOCKSHIFT)) (127 (61256 61257 NOLOCKSHIFT)) (128 (61356 61356
NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (61250 61251 NOLOCKSHIFT)) (137 (61298 61297 NOLOCKSHIFT)) (138
(61305 61303 NOLOCKSHIFT)) (139 (61265 61264 NOLOCKSHIFT)) (140 (61364 61364 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (61281 233 NOLOCKSHIFT)) (143 (61351 61351 NOLOCKSHIFT)) (144 (13 13
NOLOCKSHIFT) . IGNORE) (145 (61357 61357 NOLOCKSHIFT)) (148 (61279 61278 NOLOCKSHIFT)) (149 (61239
61238 NOLOCKSHIFT)) (150 (61290 61290 NOLOCKSHIFT)) (151 (61263 61261 NOLOCKSHIFT)) (152 (61295 61295
NOLOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61252 61253 NOLOCKSHIFT)) (155 (61254 61255 NOLOCKSHIFT)
) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (MATH ((100 (53 37 NOLOCKSHIFT)) (101 (52 36
NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61284 61285 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105
(100 68 LOCKSHIFT)) (106 (174 61245 NOLOCKSHIFT)) (107 (61369 61363 NOLOCKSHIFT)) (108 (48 41
NOLOCKSHIFT)) (109 (61254 61255 NOLOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (173 61246 LOCKSHIFT)) (
112 (47 61300 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64
NOLOCKSHIFT)) (118 (61282 61283 LOCKSHIFT)) (119 (61287 61286 NOLOCKSHIFT)) (120 (61301 61302
NOLOCKSHIFT)) (121 (61351 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (175 61247 LOCKSHIFT)) (124 (
180 184 LOCKSHIFT)) (125 (172 61244 LOCKSHIFT)) (126 (61256 61257 LOCKSHIFT)) (127 (44 61250
NOLOCKSHIFT)) (128 (61298 61253 NOLOCKSHIFT)) (129 (93 61265 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (
133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (
61356 61362 LOCKSHIFT)) (138 (61254 61291 NOLOCKSHIFT)) (139 (98 61360 NOLOCKSHIFT)) (140 (61309 177
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 61251 NOLOCKSHIFT)) (143 (61299 61252 NOLOCKSHIFT)) (
144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (61358 82 LOCKSHIFT)) (149 (61296
61266 NOLOCKSHIFT)) (150 (61305 61303 NOLOCKSHIFT)) (151 (61308 61267 LOCKSHIFT)) (152 (61288 72
LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61357 61361 NOLOCKSHIFT)) (155 (61292 61293 LOCKSHIFT)) (
156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 61264 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (OFFICE ((100 (61397 61381 NOLOCKSHIFT)) (101 (
61396 61380 NOLOCKSHIFT)) (102 (61398 61382 NOLOCKSHIFT)) (103 (8557 8554 NOLOCKSHIFT)) (104 (61399
61383 NOLOCKSHIFT)) (105 (61232 8743 NOLOCKSHIFT)) (106 (61346 8571 NOLOCKSHIFT)) (107 (188 86
NOLOCKSHIFT)) (108 (61402 61386 NOLOCKSHIFT)) (109 (210 8738 NOLOCKSHIFT)) (110 (61437 61438
NOLOCKSHIFT)) (111 (163 8558 NOLOCKSHIFT)) (112 (61248 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (61395 61379 NOLOCKSHIFT)) (117 (61394 61378 NOLOCKSHIFT)) (118 (185 8553 NOLOCKSHIFT)) (
119 (176 8546 NOLOCKSHIFT)) (120 (167 8744 NOLOCKSHIFT)) (121 (97 8745 NOLOCKSHIFT)) (122 (61401 61385
NOLOCKSHIFT)) (123 (162 8570 NOLOCKSHIFT)) (124 (61437 88 NOLOCKSHIFT)) (125 (111 8569 NOLOCKSHIFT))
(126 (61289 8737 NOLOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (128 (39 34 NOLOCKSHIFT)) (129 (93 125
NOLOCKSHIFT)) (132 (61393 61377 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61233 8742 NOLOCKSHIFT)) (137 (61438 67 NOLOCKSHIFT)) (138 (8739 74
NOLOCKSHIFT)) (139 (190 61436 NOLOCKSHIFT)) (140 (189 90 NOLOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (61249 62 NOLOCKSHIFT)) (143 (61352 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95
61280 NOLOCKSHIFT)) (148 (212 8574 NOLOCKSHIFT)) (149 (61354 8573 NOLOCKSHIFT)) (150 (61286 8741
NOLOCKSHIFT)) (151 (165 8572 NOLOCKSHIFT)) (152 (61368 8740 NOLOCKSHIFT)) (153 (61400 61384
NOLOCKSHIFT)) (154 (173 175 NOLOCKSHIFT)) (155 (172 174 NOLOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32
32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61406 61368 NOLOCKSHIFT)) (160 2SHIFTDOWN
. 2SHIFTUP)) DANDELION) (DVORAK ((100 (49 42 NOLOCKSHIFT)) (101 (51 41 NOLOCKSHIFT)) (102 (57 37
NOLOCKSHIFT)) (103 (46 62 NOLOCKSHIFT)) (104 (48 38 NOLOCKSHIFT)) (105 (101 69 LOCKSHIFT)) (106 (103
71 LOCKSHIFT)) (107 (107 75 LOCKSHIFT)) (108 (54 45 NOLOCKSHIFT)) (109 (116 84 LOCKSHIFT)) (110 (56 95
NOLOCKSHIFT)) (111 (108 76 LOCKSHIFT)) (112 (122 90 LOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116
(53 40 NOLOCKSHIFT)) (117 (55 35 NOLOCKSHIFT)) (118 (44 60 NOLOCKSHIFT)) (119 (63 47 NOLOCKSHIFT)) (
120 (111 79 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (52 164 NOLOCKSHIFT)) (123 (99 67 LOCKSHIFT)) (
124 (113 81 LOCKSHIFT)) (125 (114 82 LOCKSHIFT)) (126 (110 78 LOCKSHIFT)) (127 (119 87 LOCKSHIFT)) (
128 (44 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (33 64 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (117 85 LOCKSHIFT)) (137 (106 74
LOCKSHIFT)) (138 (104 72 LOCKSHIFT)) (139 (120 88 LOCKSHIFT)) (140 (59 58 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (118 86 LOCKSHIFT)) (143 (115 83 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (169 170 NOLOCKSHIFT)) (148 (112 80 LOCKSHIFT)) (149 (121 89 LOCKSHIFT)) (150 (105 73
LOCKSHIFT)) (151 (102 70 LOCKSHIFT)) (152 (100 68 LOCKSHIFT)) (153 (50 162 NOLOCKSHIFT)) (154 (98 66
LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (GREEK ((100 (
53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (9830 69 LOCKSHIFT)) (
104 (55 38 NOLOCKSHIFT)) (105 (9829 9797 LOCKSHIFT)) (106 (9849 9817 LOCKSHIFT)) (107 (115 9814
LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (9837 9805 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (9843
9811 LOCKSHIFT)) (112 (47 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT)) (118 (9853 9821 LOCKSHIFT)) (119 (9835 9803 LOCKSHIFT)) (120 (9846 9814
LOCKSHIFT)) (121 (9825 9793 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (9836 9804 LOCKSHIFT)) (124 (
9851 9819 LOCKSHIFT)) (125 (9842 9810 LOCKSHIFT)) (126 (9838 9806 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)
) (128 (39 34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (9850 9818 LOCKSHIFT)) (137 (9841 9809
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (9826 66 LOCKSHIFT)) (140 (9833 9801 LOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (9845 9813 LOCKSHIFT)) (149 (9848 9816 LOCKSHIFT)) (150 (9828
9796 LOCKSHIFT)) (151 (9852 9820 LOCKSHIFT)) (152 (9834 9802 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (
154 (9840 9808 LOCKSHIFT)) (155 (9839 9807 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT
) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP))
DANDELION) (ITALIAN ((100 (53 61903 NOLOCKSHIFT)) (101 (52 61886 NOLOCKSHIFT)) (102 (54 61919
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (
116 (51 61872 NOLOCKSHIFT)) (117 (50 61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81
LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73
LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171
NOLOCKSHIFT)) (128 (39 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92
124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN
. 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (
145 (95 170 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (
151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (
155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123
NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (SPANISH ((100 (53
61904 NOLOCKSHIFT)) (101 (52 61887 NOLOCKSHIFT)) (102 (54 61920 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 61873 NOLOCKSHIFT)) (117 (50
61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (
97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (
111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (59 58 NOLOCKSHIFT)) (129
(203 187 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139
(98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (
143 (61900 61772 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (161 191 NOLOCKSHIFT)) (148 (114
82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72
LOCKSHIFT)) (153 (56 61925 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156
LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (44 171 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (FRENCH ((100 (53 61905 NOLOCKSHIFT)) (101 (52
61888 NOLOCKSHIFT)) (102 (54 61921 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (
105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (
109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 61874 NOLOCKSHIFT)) (117 (50 61859 NOLOCKSHIFT)) (118 (119
87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76
LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (39 61857 NOLOCKSHIFT)) (129 (61872 61892 LOCKSHIFT)) (132
(49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102
70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13
13 NOLOCKSHIFT) . IGNORE) (145 (61869 61741 LOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84
LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61919
NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (61873 61877 LOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DANDELION) (GERMAN ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (251 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (
116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (
120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (
124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (
128 (39 34 NOLOCKSHIFT)) (129 (61863 61735 LOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT
)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145
(95 94 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (
121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (
109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (61908 61780
LOCKSHIFT)) (159 (61925 61797 LOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (STANDARD-RUSSIAN ((
100 (34 52 NOLOCKSHIFT)) (101 (47 51 NOLOCKSHIFT)) (102 (58 53 NOLOCKSHIFT)) (103 (10085 10037
LOCKSHIFT)) (104 (44 54 NOLOCKSHIFT)) (105 (10067 10019 LOCKSHIFT)) (106 (10068 10020 LOCKSHIFT)) (107
(10078 10030 LOCKSHIFT)) (108 (63 57 NOLOCKSHIFT)) (109 (10077 10029 LOCKSHIFT)) (110 (37 48
NOLOCKSHIFT)) (111 (10073 10025 LOCKSHIFT)) (112 (10071 10023 LOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (45 50 NOLOCKSHIFT)) (117 (61352 49 NOLOCKSHIFT)) (118 (10088 10040 LOCKSHIFT)) (119 (
10075 10027 LOCKSHIFT)) (120 (10093 10045 LOCKSHIFT)) (121 (10086 10038 LOCKSHIFT)) (122 (95 56
NOLOCKSHIFT)) (123 (10090 10042 LOCKSHIFT)) (124 (10089 10041 LOCKSHIFT)) (125 (10091 10043 LOCKSHIFT)
) (126 (10069 10021 LOCKSHIFT)) (127 (10066 10018 LOCKSHIFT)) (128 (10095 10047 LOCKSHIFT)) (129 (
10092 10044 LOCKSHIFT)) (132 (167 43 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (10065 10017 LOCKSHIFT)) (137 (10083 10035 LOCKSHIFT)) (138 (10080 10032
LOCKSHIFT)) (139 (10074 10026 LOCKSHIFT)) (140 (10097 10049 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (10096 10048 LOCKSHIFT)) (143 (10072 10024 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (41
40 NOLOCKSHIFT)) (148 (10076 10028 LOCKSHIFT)) (149 (10070 10022 LOCKSHIFT)) (150 (10081 10033
LOCKSHIFT)) (151 (10079 10031 LOCKSHIFT)) (152 (10082 10034 LOCKSHIFT)) (153 (46 55 NOLOCKSHIFT)) (154
(10084 10036 LOCKSHIFT)) (155 (10094 10046 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (10087 10039 LOCKSHIFT)) (159 (33 61 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DANDELION))

View File

@@ -1,171 +0,0 @@
((EUROPEAN ((100 (53 197 NOLOCKSHIFT)) (101 (52 196 NOLOCKSHIFT)) (102 (54 198 NOLOCKSHIFT)) (103 (
61887 61759 LOCKSHIFT)) (104 (55 199 NOLOCKSHIFT)) (105 (61888 61760 LOCKSHIFT)) (106 (61872 61744
LOCKSHIFT)) (107 (61860 61732 LOCKSHIFT)) (108 (48 126 NOLOCKSHIFT)) (109 (61892 61764 LOCKSHIFT)) (
110 (203 207 NOLOCKSHIFT)) (111 (61919 61791 LOCKSHIFT)) (112 (47 191 NOLOCKSHIFT)) (115 (1 1
NOLOCKSHIFT) . IGNORE) (116 (51 195 NOLOCKSHIFT)) (117 (50 194 NOLOCKSHIFT)) (118 (61873 61745
LOCKSHIFT)) (119 (61858 61730 LOCKSHIFT)) (120 (61874 61746 LOCKSHIFT)) (121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT)) (123 (61886 61758 LOCKSHIFT)) (124 (61864 61736 LOCKSHIFT)) (125 (61903
61775 LOCKSHIFT)) (126 (61908 61780 LOCKSHIFT)) (127 (241 225 LOCKSHIFT)) (128 (187 170 LOCKSHIFT)) (
129 (249 233 LOCKSHIFT)) (132 (49 193 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61905 61777 LOCKSHIFT)) (137 (61869 61741 LOCKSHIFT)) (138 (61877 61749
LOCKSHIFT)) (139 (61906 61778 LOCKSHIFT)) (140 (251 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (
250 234 LOCKSHIFT)) (143 (59 58 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (171 186 LOCKSHIFT
)) (148 (61904 61776 LOCKSHIFT)) (149 (61920 61792 LOCKSHIFT)) (150 (61921 61793 LOCKSHIFT)) (151 (
61857 61729 LOCKSHIFT)) (152 (61863 61735 LOCKSHIFT)) (153 (56 200 NOLOCKSHIFT)) (154 (61900 61772
LOCKSHIFT)) (155 (239 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
246 230 LOCKSHIFT)) (159 (207 176 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (logic ((100 (
53 37 NOLOCKSHIFT)) (101 (52 164 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61258 61260
NOLOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (61292 61293 NOLOCKSHIFT)) (106 (61271 61270 NOLOCKSHIFT)
) (107 (61284 61285 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61307 61306 NOLOCKSHIFT)) (110 (45
177 NOLOCKSHIFT)) (111 (61269 61268 LOCKSHIFT)) (112 (172 174 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) .
IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61240 61241 NOLOCKSHIFT)) (119 (
61234 61235 NOLOCKSHIFT)) (120 (61266 61262 NOLOCKSHIFT)) (121 (61365 61365 NOLOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (61275 61274 NOLOCKSHIFT)) (124 (61300 61299 NOLOCKSHIFT)) (125 (61273 61272
NOLOCKSHIFT)) (126 (61282 61283 NOLOCKSHIFT)) (127 (61256 61257 NOLOCKSHIFT)) (128 (61356 61356
NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (61250 61251 NOLOCKSHIFT)) (137 (61298 61297 NOLOCKSHIFT)) (138
(61305 61303 NOLOCKSHIFT)) (139 (61265 61264 NOLOCKSHIFT)) (140 (61364 61364 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (61281 233 NOLOCKSHIFT)) (143 (61351 61351 NOLOCKSHIFT)) (144 (13 13
NOLOCKSHIFT) . IGNORE) (145 (61357 61357 NOLOCKSHIFT)) (148 (61279 61278 NOLOCKSHIFT)) (149 (61239
61238 NOLOCKSHIFT)) (150 (61290 61290 NOLOCKSHIFT)) (151 (61263 61261 NOLOCKSHIFT)) (152 (61295 61295
NOLOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61252 61253 NOLOCKSHIFT)) (155 (61254 61255 NOLOCKSHIFT)
) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (MATH ((100 (53 37 NOLOCKSHIFT)) (101 (52 36
NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61284 61285 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105
(100 68 LOCKSHIFT)) (106 (174 61245 NOLOCKSHIFT)) (107 (61369 61363 NOLOCKSHIFT)) (108 (48 41
NOLOCKSHIFT)) (109 (61254 61255 NOLOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (173 61246 LOCKSHIFT)) (
112 (47 61300 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64
NOLOCKSHIFT)) (118 (61282 61283 LOCKSHIFT)) (119 (61287 61286 NOLOCKSHIFT)) (120 (61301 61302
NOLOCKSHIFT)) (121 (61351 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (175 61247 LOCKSHIFT)) (124 (
180 184 LOCKSHIFT)) (125 (172 61244 LOCKSHIFT)) (126 (61256 61257 LOCKSHIFT)) (127 (44 61250
NOLOCKSHIFT)) (128 (61298 61253 NOLOCKSHIFT)) (129 (93 61265 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (
133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (
61356 61362 LOCKSHIFT)) (138 (61254 61291 NOLOCKSHIFT)) (139 (98 61360 NOLOCKSHIFT)) (140 (61309 177
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 61251 NOLOCKSHIFT)) (143 (61299 61252 NOLOCKSHIFT)) (
144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (61358 82 LOCKSHIFT)) (149 (61296
61266 NOLOCKSHIFT)) (150 (61305 61303 NOLOCKSHIFT)) (151 (61308 61267 LOCKSHIFT)) (152 (61288 72
LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61357 61361 NOLOCKSHIFT)) (155 (61292 61293 LOCKSHIFT)) (
156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 61264 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (OFFICE ((100 (61397 61381 NOLOCKSHIFT)) (101 (
61396 61380 NOLOCKSHIFT)) (102 (61398 61382 NOLOCKSHIFT)) (103 (8557 8554 NOLOCKSHIFT)) (104 (61399
61383 NOLOCKSHIFT)) (105 (61232 8743 NOLOCKSHIFT)) (106 (61346 8571 NOLOCKSHIFT)) (107 (188 86
NOLOCKSHIFT)) (108 (61402 61386 NOLOCKSHIFT)) (109 (210 8738 NOLOCKSHIFT)) (110 (61437 61438
NOLOCKSHIFT)) (111 (163 8558 NOLOCKSHIFT)) (112 (61248 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) .
IGNORE) (116 (61395 61379 NOLOCKSHIFT)) (117 (61394 61378 NOLOCKSHIFT)) (118 (185 8553 NOLOCKSHIFT)) (
119 (176 8546 NOLOCKSHIFT)) (120 (167 8744 NOLOCKSHIFT)) (121 (97 8745 NOLOCKSHIFT)) (122 (61401 61385
NOLOCKSHIFT)) (123 (162 8570 NOLOCKSHIFT)) (124 (61437 88 NOLOCKSHIFT)) (125 (111 8569 NOLOCKSHIFT))
(126 (61289 8737 NOLOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (128 (39 34 NOLOCKSHIFT)) (129 (93 125
NOLOCKSHIFT)) (132 (61393 61377 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61233 8742 NOLOCKSHIFT)) (137 (61438 67 NOLOCKSHIFT)) (138 (8739 74
NOLOCKSHIFT)) (139 (190 61436 NOLOCKSHIFT)) (140 (189 90 NOLOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (61249 62 NOLOCKSHIFT)) (143 (61352 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95
61280 NOLOCKSHIFT)) (148 (212 8574 NOLOCKSHIFT)) (149 (61354 8573 NOLOCKSHIFT)) (150 (61286 8741
NOLOCKSHIFT)) (151 (165 8572 NOLOCKSHIFT)) (152 (61368 8740 NOLOCKSHIFT)) (153 (61400 61384
NOLOCKSHIFT)) (154 (173 175 NOLOCKSHIFT)) (155 (172 174 NOLOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32
32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61406 61368 NOLOCKSHIFT)) (160 2SHIFTDOWN
. 2SHIFTUP)) DORADO) (DVORAK ((100 (49 42 NOLOCKSHIFT)) (101 (51 41 NOLOCKSHIFT)) (102 (57 37
NOLOCKSHIFT)) (103 (46 62 NOLOCKSHIFT)) (104 (48 38 NOLOCKSHIFT)) (105 (101 69 LOCKSHIFT)) (106 (103
71 LOCKSHIFT)) (107 (107 75 LOCKSHIFT)) (108 (54 45 NOLOCKSHIFT)) (109 (116 84 LOCKSHIFT)) (110 (56 95
NOLOCKSHIFT)) (111 (108 76 LOCKSHIFT)) (112 (122 90 LOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116
(53 40 NOLOCKSHIFT)) (117 (55 35 NOLOCKSHIFT)) (118 (44 60 NOLOCKSHIFT)) (119 (63 47 NOLOCKSHIFT)) (
120 (111 79 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (52 164 NOLOCKSHIFT)) (123 (99 67 LOCKSHIFT)) (
124 (113 81 LOCKSHIFT)) (125 (114 82 LOCKSHIFT)) (126 (110 78 LOCKSHIFT)) (127 (119 87 LOCKSHIFT)) (
128 (44 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (33 64 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (117 85 LOCKSHIFT)) (137 (106 74
LOCKSHIFT)) (138 (104 72 LOCKSHIFT)) (139 (120 88 LOCKSHIFT)) (140 (59 58 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (118 86 LOCKSHIFT)) (143 (115 83 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (169 170 NOLOCKSHIFT)) (148 (112 80 LOCKSHIFT)) (149 (121 89 LOCKSHIFT)) (150 (105 73
LOCKSHIFT)) (151 (102 70 LOCKSHIFT)) (152 (100 68 LOCKSHIFT)) (153 (50 162 NOLOCKSHIFT)) (154 (98 66
LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (GREEK ((100 (
53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (9830 69 LOCKSHIFT)) (
104 (55 38 NOLOCKSHIFT)) (105 (9829 9797 LOCKSHIFT)) (106 (9849 9817 LOCKSHIFT)) (107 (115 9814
LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (9837 9805 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (9843
9811 LOCKSHIFT)) (112 (47 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT)) (118 (9853 9821 LOCKSHIFT)) (119 (9835 9803 LOCKSHIFT)) (120 (9846 9814
LOCKSHIFT)) (121 (9825 9793 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (9836 9804 LOCKSHIFT)) (124 (
9851 9819 LOCKSHIFT)) (125 (9842 9810 LOCKSHIFT)) (126 (9838 9806 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)
) (128 (39 34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (9850 9818 LOCKSHIFT)) (137 (9841 9809
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (9826 66 LOCKSHIFT)) (140 (9833 9801 LOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (9845 9813 LOCKSHIFT)) (149 (9848 9816 LOCKSHIFT)) (150 (9828
9796 LOCKSHIFT)) (151 (9852 9820 LOCKSHIFT)) (152 (9834 9802 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (
154 (9840 9808 LOCKSHIFT)) (155 (9839 9807 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT
) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP))
DORADO) (ITALIAN ((100 (53 61903 NOLOCKSHIFT)) (101 (52 61886 NOLOCKSHIFT)) (102 (54 61919
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (
116 (51 61872 NOLOCKSHIFT)) (117 (50 61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81
LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73
LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171
NOLOCKSHIFT)) (128 (39 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92
124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN
. 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (
145 (95 170 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (
151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (
155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123
NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (SPANISH ((100 (53
61904 NOLOCKSHIFT)) (101 (52 61887 NOLOCKSHIFT)) (102 (54 61920 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 61873 NOLOCKSHIFT)) (117 (50
61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (
97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (
111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (59 58 NOLOCKSHIFT)) (129
(203 187 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139
(98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (
143 (61900 61772 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (161 191 NOLOCKSHIFT)) (148 (114
82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72
LOCKSHIFT)) (153 (56 61925 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156
LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (44 171 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (FRENCH ((100 (53 61905 NOLOCKSHIFT)) (101 (52
61888 NOLOCKSHIFT)) (102 (54 61921 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (
105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (
109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 61874 NOLOCKSHIFT)) (117 (50 61859 NOLOCKSHIFT)) (118 (119
87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76
LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (39 61857 NOLOCKSHIFT)) (129 (61872 61892 LOCKSHIFT)) (132
(49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102
70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13
13 NOLOCKSHIFT) . IGNORE) (145 (61869 61741 LOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84
LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61919
NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (61873 61877 LOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DORADO) (GERMAN ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (251 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (
116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (
120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (
124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (
128 (39 34 NOLOCKSHIFT)) (129 (61863 61735 LOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT
)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145
(95 94 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (
121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (
109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (61908 61780
LOCKSHIFT)) (159 (61925 61797 LOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (STANDARD-RUSSIAN ((
100 (34 52 NOLOCKSHIFT)) (101 (47 51 NOLOCKSHIFT)) (102 (58 53 NOLOCKSHIFT)) (103 (10085 10037
LOCKSHIFT)) (104 (44 54 NOLOCKSHIFT)) (105 (10067 10019 LOCKSHIFT)) (106 (10068 10020 LOCKSHIFT)) (107
(10078 10030 LOCKSHIFT)) (108 (63 57 NOLOCKSHIFT)) (109 (10077 10029 LOCKSHIFT)) (110 (37 48
NOLOCKSHIFT)) (111 (10073 10025 LOCKSHIFT)) (112 (10071 10023 LOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) .
IGNORE) (116 (45 50 NOLOCKSHIFT)) (117 (61352 49 NOLOCKSHIFT)) (118 (10088 10040 LOCKSHIFT)) (119 (
10075 10027 LOCKSHIFT)) (120 (10093 10045 LOCKSHIFT)) (121 (10086 10038 LOCKSHIFT)) (122 (95 56
NOLOCKSHIFT)) (123 (10090 10042 LOCKSHIFT)) (124 (10089 10041 LOCKSHIFT)) (125 (10091 10043 LOCKSHIFT)
) (126 (10069 10021 LOCKSHIFT)) (127 (10066 10018 LOCKSHIFT)) (128 (10095 10047 LOCKSHIFT)) (129 (
10092 10044 LOCKSHIFT)) (132 (167 43 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (10065 10017 LOCKSHIFT)) (137 (10083 10035 LOCKSHIFT)) (138 (10080 10032
LOCKSHIFT)) (139 (10074 10026 LOCKSHIFT)) (140 (10097 10049 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (10096 10048 LOCKSHIFT)) (143 (10072 10024 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (41
40 NOLOCKSHIFT)) (148 (10076 10028 LOCKSHIFT)) (149 (10070 10022 LOCKSHIFT)) (150 (10081 10033
LOCKSHIFT)) (151 (10079 10031 LOCKSHIFT)) (152 (10082 10034 LOCKSHIFT)) (153 (46 55 NOLOCKSHIFT)) (154
(10084 10036 LOCKSHIFT)) (155 (10094 10046 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (10087 10039 LOCKSHIFT)) (159 (33 61 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DORADO))

View File

@@ -1,171 +0,0 @@
((EUROPEAN ((100 (53 197 NOLOCKSHIFT)) (101 (52 196 NOLOCKSHIFT)) (102 (54 198 NOLOCKSHIFT)) (103 (
61887 61759 LOCKSHIFT)) (104 (55 199 NOLOCKSHIFT)) (105 (61888 61760 LOCKSHIFT)) (106 (61872 61744
LOCKSHIFT)) (107 (61860 61732 LOCKSHIFT)) (108 (48 126 NOLOCKSHIFT)) (109 (61892 61764 LOCKSHIFT)) (
110 (203 207 NOLOCKSHIFT)) (111 (61919 61791 LOCKSHIFT)) (112 (47 191 NOLOCKSHIFT)) (115 (8 8
NOLOCKSHIFT) . IGNORE) (116 (51 195 NOLOCKSHIFT)) (117 (50 194 NOLOCKSHIFT)) (118 (61873 61745
LOCKSHIFT)) (119 (61858 61730 LOCKSHIFT)) (120 (61874 61746 LOCKSHIFT)) (121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT)) (123 (61886 61758 LOCKSHIFT)) (124 (61864 61736 LOCKSHIFT)) (125 (61903
61775 LOCKSHIFT)) (126 (61908 61780 LOCKSHIFT)) (127 (241 225 LOCKSHIFT)) (171 (187 170 LOCKSHIFT)) (
129 (249 233 LOCKSHIFT)) (132 (49 193 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61905 61777 LOCKSHIFT)) (137 (61869 61741 LOCKSHIFT)) (138 (61877 61749
LOCKSHIFT)) (139 (61906 61778 LOCKSHIFT)) (140 (251 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (
250 234 LOCKSHIFT)) (143 (59 58 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (171 186 LOCKSHIFT
)) (148 (61904 61776 LOCKSHIFT)) (149 (61920 61792 LOCKSHIFT)) (150 (61921 61793 LOCKSHIFT)) (151 (
61857 61729 LOCKSHIFT)) (152 (61863 61735 LOCKSHIFT)) (153 (56 200 NOLOCKSHIFT)) (154 (61900 61772
LOCKSHIFT)) (155 (239 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
246 230 LOCKSHIFT)) (159 (207 176 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (logic ((100 (53 37
NOLOCKSHIFT)) (101 (52 164 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61258 61260 NOLOCKSHIFT)) (
104 (55 38 NOLOCKSHIFT)) (105 (61292 61293 NOLOCKSHIFT)) (106 (61271 61270 NOLOCKSHIFT)) (107 (61284
61285 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61307 61306 NOLOCKSHIFT)) (110 (45 177 NOLOCKSHIFT
)) (111 (61269 61268 LOCKSHIFT)) (112 (172 174 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51
35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61240 61241 NOLOCKSHIFT)) (119 (61234 61235
NOLOCKSHIFT)) (120 (61266 61262 NOLOCKSHIFT)) (121 (61365 61365 NOLOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)
) (123 (61275 61274 NOLOCKSHIFT)) (124 (61300 61299 NOLOCKSHIFT)) (125 (61273 61272 NOLOCKSHIFT)) (126
(61282 61283 NOLOCKSHIFT)) (127 (61256 61257 NOLOCKSHIFT)) (171 (61356 61356 NOLOCKSHIFT)) (129 (93
125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT)
. IGNORE) (135 (61250 61251 NOLOCKSHIFT)) (137 (61298 61297 NOLOCKSHIFT)) (138 (61305 61303
NOLOCKSHIFT)) (139 (61265 61264 NOLOCKSHIFT)) (140 (61364 61364 NOLOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (61281 233 NOLOCKSHIFT)) (143 (61351 61351 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (208 (61357 61357 NOLOCKSHIFT)) (148 (61279 61278 NOLOCKSHIFT)) (149 (61239 61238 NOLOCKSHIFT)
) (150 (61290 61290 NOLOCKSHIFT)) (151 (61263 61261 NOLOCKSHIFT)) (152 (61295 61295 NOLOCKSHIFT)) (153
(56 42 NOLOCKSHIFT)) (154 (61252 61253 NOLOCKSHIFT)) (155 (61254 61255 NOLOCKSHIFT)) (156 LOCKDOWN .
LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160
2SHIFTDOWN . 2SHIFTUP)) DOVE) (MATH ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126
NOLOCKSHIFT)) (103 (61284 61285 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (
174 61245 NOLOCKSHIFT)) (107 (61369 61363 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61254 61255
NOLOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (173 61246 LOCKSHIFT)) (112 (47 61300 NOLOCKSHIFT)) (115
(8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61282 61283
LOCKSHIFT)) (119 (61287 61286 NOLOCKSHIFT)) (120 (61301 61302 NOLOCKSHIFT)) (121 (61351 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT)) (123 (175 61247 LOCKSHIFT)) (124 (180 184 LOCKSHIFT)) (125 (172 61244
LOCKSHIFT)) (126 (61256 61257 LOCKSHIFT)) (127 (44 61250 NOLOCKSHIFT)) (171 (61298 61253 NOLOCKSHIFT))
(129 (93 61265 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (61356 61362 LOCKSHIFT)) (138 (61254 61291
NOLOCKSHIFT)) (139 (98 61360 NOLOCKSHIFT)) (140 (61309 177 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (46 61251 NOLOCKSHIFT)) (143 (61299 61252 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (
95 94 NOLOCKSHIFT)) (148 (61358 82 LOCKSHIFT)) (149 (61296 61266 NOLOCKSHIFT)) (150 (61305 61303
NOLOCKSHIFT)) (151 (61308 61267 LOCKSHIFT)) (152 (61288 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154
(61357 61361 NOLOCKSHIFT)) (155 (61292 61293 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (91 61264 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DOVE) (OFFICE ((100 (61397 61381 NOLOCKSHIFT)) (101 (61396 61380 NOLOCKSHIFT)) (102 (61398
61382 NOLOCKSHIFT)) (103 (8557 8554 NOLOCKSHIFT)) (104 (61399 61383 NOLOCKSHIFT)) (105 (61232 8743
NOLOCKSHIFT)) (106 (61346 8571 NOLOCKSHIFT)) (107 (188 86 NOLOCKSHIFT)) (108 (61402 61386 NOLOCKSHIFT)
) (109 (210 8738 NOLOCKSHIFT)) (110 (61437 61438 NOLOCKSHIFT)) (111 (163 8558 NOLOCKSHIFT)) (112 (
61248 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (61395 61379 NOLOCKSHIFT)) (117 (61394
61378 NOLOCKSHIFT)) (118 (185 8553 NOLOCKSHIFT)) (119 (176 8546 NOLOCKSHIFT)) (120 (167 8744
NOLOCKSHIFT)) (121 (97 8745 NOLOCKSHIFT)) (122 (61401 61385 NOLOCKSHIFT)) (123 (162 8570 NOLOCKSHIFT))
(124 (61437 88 NOLOCKSHIFT)) (125 (111 8569 NOLOCKSHIFT)) (126 (61289 8737 NOLOCKSHIFT)) (127 (44 60
NOLOCKSHIFT)) (171 (39 34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (61393 61377 NOLOCKSHIFT)) (
165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (61233 8742 NOLOCKSHIFT)) (137
(61438 67 NOLOCKSHIFT)) (138 (8739 74 NOLOCKSHIFT)) (139 (190 61436 NOLOCKSHIFT)) (140 (189 90
NOLOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (61249 62 NOLOCKSHIFT)) (143 (61352 58 NOLOCKSHIFT)) (
144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (95 61280 NOLOCKSHIFT)) (148 (212 8574 NOLOCKSHIFT)) (149 (
61354 8573 NOLOCKSHIFT)) (150 (61286 8741 NOLOCKSHIFT)) (151 (165 8572 NOLOCKSHIFT)) (152 (61368 8740
NOLOCKSHIFT)) (153 (61400 61384 NOLOCKSHIFT)) (154 (173 175 NOLOCKSHIFT)) (155 (172 174 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61406
61368 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (DVORAK ((100 (49 42 NOLOCKSHIFT)) (101 (51 41
NOLOCKSHIFT)) (102 (57 37 NOLOCKSHIFT)) (103 (46 62 NOLOCKSHIFT)) (104 (48 38 NOLOCKSHIFT)) (105 (101
69 LOCKSHIFT)) (106 (103 71 LOCKSHIFT)) (107 (107 75 LOCKSHIFT)) (108 (54 45 NOLOCKSHIFT)) (109 (116
84 LOCKSHIFT)) (110 (56 95 NOLOCKSHIFT)) (111 (108 76 LOCKSHIFT)) (112 (122 90 LOCKSHIFT)) (115 (8 8
NOLOCKSHIFT) . IGNORE) (116 (53 40 NOLOCKSHIFT)) (117 (55 35 NOLOCKSHIFT)) (118 (44 60 NOLOCKSHIFT)) (
119 (63 47 NOLOCKSHIFT)) (120 (111 79 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (52 164 NOLOCKSHIFT)) (
123 (99 67 LOCKSHIFT)) (124 (113 81 LOCKSHIFT)) (125 (114 82 LOCKSHIFT)) (126 (110 78 LOCKSHIFT)) (127
(119 87 LOCKSHIFT)) (171 (44 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (33 64 NOLOCKSHIFT)) (
165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (117 85 LOCKSHIFT)) (137 (106
74 LOCKSHIFT)) (138 (104 72 LOCKSHIFT)) (139 (120 88 LOCKSHIFT)) (140 (59 58 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (118 86 LOCKSHIFT)) (143 (115 83 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (208 (169 170 NOLOCKSHIFT)) (148 (112 80 LOCKSHIFT)) (149 (121 89 LOCKSHIFT)) (150 (105 73
LOCKSHIFT)) (151 (102 70 LOCKSHIFT)) (152 (100 68 LOCKSHIFT)) (153 (50 162 NOLOCKSHIFT)) (154 (98 66
LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (GREEK ((100 (53 37
NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (9830 69 LOCKSHIFT)) (104 (55
38 NOLOCKSHIFT)) (105 (9829 9797 LOCKSHIFT)) (106 (9849 9817 LOCKSHIFT)) (107 (115 9814 LOCKSHIFT)) (
108 (48 41 NOLOCKSHIFT)) (109 (9837 9805 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (9843 9811
LOCKSHIFT)) (112 (47 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117
(50 64 NOLOCKSHIFT)) (118 (9853 9821 LOCKSHIFT)) (119 (9835 9803 LOCKSHIFT)) (120 (9846 9814 LOCKSHIFT
)) (121 (9825 9793 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (9836 9804 LOCKSHIFT)) (124 (9851 9819
LOCKSHIFT)) (125 (9842 9810 LOCKSHIFT)) (126 (9838 9806 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (171 (39
34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) .
IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (9850 9818 LOCKSHIFT)) (137 (9841 9809 LOCKSHIFT)) (138
(106 74 LOCKSHIFT)) (139 (9826 66 LOCKSHIFT)) (140 (9833 9801 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (95 94
NOLOCKSHIFT)) (148 (9845 9813 LOCKSHIFT)) (149 (9848 9816 LOCKSHIFT)) (150 (9828 9796 LOCKSHIFT)) (151
(9852 9820 LOCKSHIFT)) (152 (9834 9802 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (9840 9808
LOCKSHIFT)) (155 (9839 9807 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (
158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (ITALIAN ((171
(39 34 NOLOCKSHIFT)) (100 (53 61903 NOLOCKSHIFT)) (101 (52 61886 NOLOCKSHIFT)) (102 (54 61919
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (95 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116
(51 61872 NOLOCKSHIFT)) (117 (50 61857 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)
) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT))
(171 (39 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT
)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208
(95 170 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151
(121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155
(109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123
NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (SPANISH ((208 (161 191
NOLOCKSHIFT)) (171 (59 58 NOLOCKSHIFT)) (100 (53 61904 NOLOCKSHIFT)) (101 (52 61887 NOLOCKSHIFT)) (102
(54 61920 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (
106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (
110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (95 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (51 61873 NOLOCKSHIFT)) (117 (50 61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113
81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73
LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171
NOLOCKSHIFT)) (171 (59 58 NOLOCKSHIFT)) (129 (185 186 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27
27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN
. 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (61900 61772 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (208 (161 191 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71
LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61925 NOLOCKSHIFT)) (154 (110
78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (
158 (169 170 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (FRENCH ((208
(61869 61741 NOLOCKSHIFT)) (171 (39 61857 NOLOCKSHIFT)) (100 (53 61905 NOLOCKSHIFT)) (101 (52 61888
NOLOCKSHIFT)) (102 (54 61921 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (
100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (
107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (95 63 NOLOCKSHIFT)) (115 (
1 1 NOLOCKSHIFT) . IGNORE) (116 (51 61874 NOLOCKSHIFT)) (117 (50 61859 NOLOCKSHIFT)) (118 (119 87
LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76
LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (171 (39 61857 NOLOCKSHIFT)) (129 (61872 61892 LOCKSHIFT)) (132
(49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70
LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13
13 NOLOCKSHIFT) . IGNORE) (208 (61869 61741 LOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84
LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61919
NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (61873 61877 LOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DOVE) (GERMAN ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT
)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)
) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)
) (111 (112 80 LOCKSHIFT)) (112 (251 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35
NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83
LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88
LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (171 (39 34
NOLOCKSHIFT)) (129 (61863 61735 LOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) .
IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74
LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 62
NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (95 94 NOLOCKSHIFT)) (
148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (
152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (
156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (61908 61780 LOCKSHIFT)) (159 (61925
61797 LOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (STANDARD-RUSSIAN ((208 (41 40 NOLOCKSHIFT)) (171
(10073 10025 NOLOCKSHIFT)) (100 (34 52 NOLOCKSHIFT)) (101 (47 51 NOLOCKSHIFT)) (102 (58 53
NOLOCKSHIFT)) (103 (10085 10037 LOCKSHIFT)) (104 (44 54 NOLOCKSHIFT)) (105 (10067 10019 LOCKSHIFT)) (
106 (10068 10020 LOCKSHIFT)) (107 (10078 10030 LOCKSHIFT)) (108 (63 57 NOLOCKSHIFT)) (109 (10077 10029
LOCKSHIFT)) (110 (37 48 NOLOCKSHIFT)) (111 (10073 10025 LOCKSHIFT)) (112 (10071 10023 LOCKSHIFT)) (
115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (45 50 NOLOCKSHIFT)) (117 (61352 49 NOLOCKSHIFT)) (118 (10088
10040 LOCKSHIFT)) (119 (10075 10027 LOCKSHIFT)) (120 (10093 10045 LOCKSHIFT)) (121 (10086 10038
LOCKSHIFT)) (122 (95 56 NOLOCKSHIFT)) (123 (10090 10042 LOCKSHIFT)) (124 (10089 10041 LOCKSHIFT)) (125
(10091 10043 LOCKSHIFT)) (126 (10069 10021 LOCKSHIFT)) (127 (10066 10018 LOCKSHIFT)) (171 (10095
10047 LOCKSHIFT)) (129 (10092 10044 LOCKSHIFT)) (132 (167 43 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) .
IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (10065 10017 LOCKSHIFT)) (137 (10083 10035 LOCKSHIFT)) (
138 (10080 10032 LOCKSHIFT)) (139 (10074 10026 LOCKSHIFT)) (140 (10097 10049 LOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (10096 10048 LOCKSHIFT)) (143 (10072 10024 LOCKSHIFT)) (144 (13 13
NOLOCKSHIFT) . IGNORE) (208 (41 40 NOLOCKSHIFT)) (148 (10076 10028 LOCKSHIFT)) (149 (10070 10022
LOCKSHIFT)) (150 (10081 10033 LOCKSHIFT)) (151 (10079 10031 LOCKSHIFT)) (152 (10082 10034 LOCKSHIFT))
(153 (46 55 NOLOCKSHIFT)) (154 (10084 10036 LOCKSHIFT)) (155 (10094 10046 LOCKSHIFT)) (156 LOCKDOWN .
LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (10087 10039 LOCKSHIFT)) (159 (33 61 NOLOCKSHIFT)) (
160 2SHIFTDOWN . 2SHIFTUP)) DOVE))

View File

@@ -1,12 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED "19-Jul-2023 09:30:47" |{WMEDLEY}<library>FILEBROWSER.;25| 265978
(FILECREATED " 4-Nov-2023 23:55:27" |{WMEDLEY}<library>FILEBROWSER.;27| 266102
:EDIT-BY |rmk|
:CHANGES-TO (VARS FILEBROWSERCOMS)
(FNS FB.EDITCOMMAND.ONEFILE)
:PREVIOUS-DATE "18-Jul-2023 22:19:30" |{WMEDLEY}<library>FILEBROWSER.;24|)
:PREVIOUS-DATE " 4-Nov-2023 23:50:29" |{WMEDLEY}<library>FILEBROWSER.;26|)
(PRETTYCOMPRINT FILEBROWSERCOMS)
@@ -41,7 +42,8 @@
(FB.OVERFLOW.MAXABSOLUTE 30)
(FB.OVERFLOW.MAXFRAC 0.06)
(FB.DEFAULT.EDITOR 'TEDIT)
(FB.DEFAULT.INFO '(SIZE CREATIONDATE AUTHOR)))
(FB.DEFAULT.INFO '(SIZE CREATIONDATE AUTHOR))
(FB.SEE.METHODS))
(APPENDVARS (FONTVARS (FB.ICONFONT LITTLEFONT)
(FB.BROWSERFONT DEFAULTFONT)
(FB.PROMPTFONT LITTLEFONT)
@@ -295,6 +297,8 @@ DOCOPY
(RPAQ? FB.DEFAULT.INFO '(SIZE CREATIONDATE AUTHOR))
(RPAQ? FB.SEE.METHODS )
(APPENDTOVAR FONTVARS (FB.ICONFONT LITTLEFONT)
(FB.BROWSERFONT DEFAULTFONT)
(FB.PROMPTFONT LITTLEFONT)
@@ -1697,10 +1701,9 @@ Your deletions are thus ignored.")))
ELSE (FB.FASTSEECOMMAND BROWSER KEY ITEM MENU)))))
(FB.EDITCOMMAND.ONEFILE
(LAMBDA (BROWSER FILE OPTION ITEM MENU) (* \;
 "Edited 19-Sep-2021 18:07 by rmk:")
(* \;
 "Edited 27-Feb-2021 20:07 by rmk:")
(LAMBDA (BROWSER FILE OPTION ITEM MENU) (* \; "Edited 4-Nov-2023 23:55 by rmk")
(* \; "Edited 19-Sep-2021 18:07 by rmk:")
(* \; "Edited 27-Feb-2021 20:07 by rmk:")
(* \; "Edited 1-Feb-88 19:00 by bvm:")
(* |;;| "Called when we know that FILE is a file, not a directory, and that TEDIT exists. If OPTION is READONLY, we don't want to edit, just view. .")
@@ -1717,25 +1720,26 @@ Your deletions are thus ignored.")))
(* |;;| "The particular item may be a subitem of the EDIT or SEE menu item, in which case we want to unshade that too. Seems a little bruteforce")
(CL:UNLESS (MEMBER ITEM (FETCH (MENU ITEMS) OF MENU))
(FOR I IN (FETCH (MENU ITEMS) OF MENU)
WHEN (MEMBER ITEM (CDR (SASSOC 'SUBITEMS I))) DO (SHADEITEM I MENU
FB.ITEMUNSELECTEDSHADE)
(PUTMENUPROP MENU 'ITEMSHADE
(CONS I
FB.ITEMUNSELECTEDSHADE
))))
(FOR I IN (FETCH (MENU ITEMS) OF MENU) WHEN (MEMBER ITEM (CDR (SASSOC 'SUBITEMS I)))
DO (SHADEITEM I MENU FB.ITEMUNSELECTEDSHADE)
(PUTMENUPROP MENU 'ITEMSHADE (CONS I FB.ITEMUNSELECTEDSHADE))))
(CL:MULTIPLE-VALUE-BIND (IGNORE CONDITION)
(IGNORE-ERRORS (SELECTQ OPTION
(READONLY (TEDIT-SEE FILE))
(READONLY (|for| SM |in| FB.SEE.METHODS
|when| (APPLY* (CAR SM)
FILE)
|do| (RETURN (APPLY* (CADR SM)
FILE))
|finally| (RETURN (TEDIT-SEE FILE))))
(LISP (* \;
"Original code allowed OPTION=NIL in thie branch, but NIL should have been coerced to TEDIT above.")
 "Original code allowed OPTION=NIL in thie branch, but NIL should have been coerced to TEDIT above.")
(* |;;| "Asks to load prop and edits the coms, presumably with SEDIT. We really don't want to use a text editor on a source file.")
(IF (LISPSOURCEFILEP FILE)
THEN (FB.EDITLISPFILE FILE BROWSER)
ELSE (FB.PROMPTW.FORMAT BROWSER
"Failed because not a Lisp source file")))
"Failed because not a Lisp source file")))
(PROGN
(* |;;| "Might just be a call to TEDIT (if OPTION = TEDIT)")
@@ -4246,51 +4250,51 @@ then click Recompute"))))
(ADDTOVAR LAMA FB.PROMPTW.FORMAT FB.PROMPTWPRINT)
)
(DECLARE\: DONTCOPY
(FILEMAP (NIL (31814 54695 (FB 31824 . 32959) (FB.COPYBINARYCOMMAND 32961 . 33307) (FB.COPYTEXTCOMMAND
33309 . 33651) (FILEBROWSER 33653 . 46759) (FB.TABLEBROWSER 46761 . 46978) (FB.SELECTEDFILES 46980 .
47617) (FB.FETCHFILENAME 47619 . 48011) (FB.DIRECTORYP 48013 . 48407) (FB.PROMPTWPRINT 48409 . 49455)
(FB.PROMPTW.FORMAT 49457 . 50194) (FB.PROMPTFORINPUT 50196 . 52448) (FB.YES-OR-NO-P 52450 . 53484) (
FB.ALLOW.ABORT 53486 . 54340) (\\FB.HARDCOPY.TOFILE.EXTENSION 54342 . 54693)) (54719 55672 (FB.STARTUP
54729 . 55244) (FB.MAKERIGIDWINDOW 55246 . 55670)) (55673 61156 (FB.PRINTFN 55683 . 60836) (FB.COPYFN
60838 . 61154)) (61206 67546 (FB.MENU.WHENSELECTEDFN 61216 . 61574) (FB.COMMANDSELECTEDFN 61576 .
63115) (FB.SUBITEMP 63117 . 63718) (FB.MAKE.BROWSER.BUSY 63720 . 64524) (FB.FINISH.COMMAND 64526 .
66557) (FB.HANDLE.ABORT.BUTTON 66559 . 67544)) (67547 73063 (FB.DELETECOMMAND 67557 . 67838) (
FB.DELVERCOMMAND 67840 . 71033) (FB.IS.NOT.SUBDIRECTORY.ITEM 71035 . 71216) (FB.DELVER.FILES 71218 .
72307) (FB.DELETE.FILE 72309 . 73061)) (73064 74389 (FB.UNDELETECOMMAND 73074 . 73359) (
FB.UNDELETEALLCOMMAND 73361 . 73640) (FB.UNDELETE.FILE 73642 . 74387)) (74390 98571 (FB.COPYCOMMAND
74400 . 74669) (FB.RENAMECOMMAND 74671 . 74946) (FB.COPY/RENAME.COMMAND 74948 . 75871) (
FB.COPY/RENAME.ONE 75873 . 78195) (FB.COPY/RENAME.MANY 78197 . 84417) (FB.MERGE.DIRECTORIES 84419 .
84837) (FB.GREATEST.PREFIX 84839 . 86195) (FB.MAYBE.INSERT.FILE 86197 . 93637) (FB.GET.NEW.FILE.SPEC
93639 . 97470) (FB.CANONICAL.DIRECTORY 97472 . 98569)) (98572 106356 (FB.HARDCOPYCOMMAND 98582 . 99712
) (FB.HARDCOPY.TOFILE 99714 . 106354)) (106357 116556 (FB.EDITCOMMAND 106367 . 107234) (
FB.EDITCOMMAND.ONEFILE 107236 . 110640) (FB.EDITLISPFILE 110642 . 111747) (FB.BROWSECOMMAND 111749 .
116554)) (116557 128478 (FB.FASTSEECOMMAND 116567 . 120017) (FB.FASTSEE.ONEFILE 120019 . 123176) (
FB.SEEFULLFN 123178 . 127309) (FB.SEEBUTTONFN 127311 . 128476)) (128479 130225 (FB.LOADCOMMAND 128489
. 128996) (FB.COMPILECOMMAND 128998 . 129536) (FB.OPERATE.ON.FILES 129538 . 130223)) (130226 178411 (
FB.UPDATECOMMAND 130236 . 130461) (FB.FIX-DIRECTORY-DATES 130463 . 131486) (FB.MAYBE.EXPUNGE 131488 .
132549) (FB.UPDATEBROWSERITEMS 132551 . 145766) (FB.DATE 145768 . 146409) (FB.ADJUST.DATE.WIDTH 146411
. 149379) (FB.SET.BROWSER.TITLE 149381 . 150383) (FB.MAYBE.WIDEN.NAMES 150385 . 152504) (
FB.SET.DEFAULT.NAME.WIDTH 152506 . 153870) (FB.CREATE.FILEBUCKET 153872 . 161092) (
FB.CHECK.NAME.LENGTH 161094 . 163515) (FB.ADD.FILEGROUP 163517 . 165044) (FB.INSERT.DIRECTORY 165046
. 165284) (FB.MAKE.SUBDIRECTORY.ITEM 165286 . 166695) (FB.ADD.FILE 166697 . 167310) (FB.INSERT.FILE
167312 . 170724) (FB.ANALYZE.PATTERN 170726 . 175990) (FB.CANONICALIZE.PATTERN 175992 . 177304) (
FB.GETALLFILEINFO 177306 . 178409)) (178412 186571 (FB.SORT.VERSIONS 178422 . 181193) (
FB.DECREASING.VERSION 181195 . 181864) (FB.INCREASING.VERSION 181866 . 182487) (
FB.NAMES.DECREASING.VERSION 182489 . 183524) (FB.NAMES.INCREASING.VERSION 183526 . 184523) (
FB.DECREASING.NUMERIC.ATTR 184525 . 185205) (FB.INCREASING.NUMERIC.ATTR 185207 . 185881) (
FB.ALPHABETIC.ATTR 185883 . 186569)) (186572 196414 (FB.SORTCOMMAND 186582 . 193412) (
FB.INSERT.SUBDIRECTORIES 193414 . 194211) (FB.GET.SORT.MENU 194213 . 196412)) (196415 212636 (
FB.EXPUNGECOMMAND 196425 . 199010) (FB.NEWPATTERNCOMMAND 199012 . 199410) (FB.NEWINFOCOMMAND 199412 .
202244) (FB.DEPTHCOMMAND 202246 . 204021) (FB.SHAPECOMMAND 204023 . 207365) (FB.REMOVE.FILE 207367 .
209188) (FB.COUNT.FILE.CHANGE 209190 . 210635) (FB.SETNEWPATTERN 210637 . 211807) (FB.GET.NEWPATTERN
211809 . 212393) (FB.OPTIONSCOMMAND 212395 . 212634)) (212671 213724 (FB.GETWINDOW 212681 . 213722)) (
213725 214737 (FB.INFOMENU.SHADEINITIALSELECTIONS 213735 . 214382) (FB.INFO.ITEM.NAMED 214384 . 214735
)) (214738 224270 (FB.MAKECOUNTERWINDOW 214748 . 216276) (FB.COUNTERW.REDISPLAYFN 216278 . 216865) (
FB.UPDATE.COUNTERS 216867 . 218939) (FB.DISPLAY.COUNTERS 218941 . 224001) (FB.COUNTER.STRING 224003 .
224268)) (224271 228980 (FB.MAKEHEADINGWINDOW 224281 . 225895) (FB.HEADINGW.REDISPLAYFN 225897 .
226163) (FB.HEADINGW.RESHAPEFN 226165 . 226541) (FB.HEADINGW.DISPLAY 226543 . 228978)) (228981 233164
(FB.ICONFN 228991 . 229338) (FB.INFOMENU.WHENSELECTEDFN 229340 . 230070) (FB.CLOSEFN 230072 . 231275)
(FB.EXPUNGE?.MENU 231277 . 231689) (FB.AFTERCLOSEFN 231691 . 232052) (FB.CLOSE&EXPUNGE 232054 . 233162
)) (233165 245223 (FB.HARDCOPY.DIRECTORY 233175 . 243532) (FB.HARDCOPY.PRINT.TITLE 243534 . 243860) (
FB.HARDCOPY.MAXWIDTH 243862 . 245221)))))
(FILEMAP (NIL (31928 54809 (FB 31938 . 33073) (FB.COPYBINARYCOMMAND 33075 . 33421) (FB.COPYTEXTCOMMAND
33423 . 33765) (FILEBROWSER 33767 . 46873) (FB.TABLEBROWSER 46875 . 47092) (FB.SELECTEDFILES 47094 .
47731) (FB.FETCHFILENAME 47733 . 48125) (FB.DIRECTORYP 48127 . 48521) (FB.PROMPTWPRINT 48523 . 49569)
(FB.PROMPTW.FORMAT 49571 . 50308) (FB.PROMPTFORINPUT 50310 . 52562) (FB.YES-OR-NO-P 52564 . 53598) (
FB.ALLOW.ABORT 53600 . 54454) (\\FB.HARDCOPY.TOFILE.EXTENSION 54456 . 54807)) (54833 55786 (FB.STARTUP
54843 . 55358) (FB.MAKERIGIDWINDOW 55360 . 55784)) (55787 61270 (FB.PRINTFN 55797 . 60950) (FB.COPYFN
60952 . 61268)) (61320 67660 (FB.MENU.WHENSELECTEDFN 61330 . 61688) (FB.COMMANDSELECTEDFN 61690 .
63229) (FB.SUBITEMP 63231 . 63832) (FB.MAKE.BROWSER.BUSY 63834 . 64638) (FB.FINISH.COMMAND 64640 .
66671) (FB.HANDLE.ABORT.BUTTON 66673 . 67658)) (67661 73177 (FB.DELETECOMMAND 67671 . 67952) (
FB.DELVERCOMMAND 67954 . 71147) (FB.IS.NOT.SUBDIRECTORY.ITEM 71149 . 71330) (FB.DELVER.FILES 71332 .
72421) (FB.DELETE.FILE 72423 . 73175)) (73178 74503 (FB.UNDELETECOMMAND 73188 . 73473) (
FB.UNDELETEALLCOMMAND 73475 . 73754) (FB.UNDELETE.FILE 73756 . 74501)) (74504 98685 (FB.COPYCOMMAND
74514 . 74783) (FB.RENAMECOMMAND 74785 . 75060) (FB.COPY/RENAME.COMMAND 75062 . 75985) (
FB.COPY/RENAME.ONE 75987 . 78309) (FB.COPY/RENAME.MANY 78311 . 84531) (FB.MERGE.DIRECTORIES 84533 .
84951) (FB.GREATEST.PREFIX 84953 . 86309) (FB.MAYBE.INSERT.FILE 86311 . 93751) (FB.GET.NEW.FILE.SPEC
93753 . 97584) (FB.CANONICAL.DIRECTORY 97586 . 98683)) (98686 106470 (FB.HARDCOPYCOMMAND 98696 . 99826
) (FB.HARDCOPY.TOFILE 99828 . 106468)) (106471 116680 (FB.EDITCOMMAND 106481 . 107348) (
FB.EDITCOMMAND.ONEFILE 107350 . 110764) (FB.EDITLISPFILE 110766 . 111871) (FB.BROWSECOMMAND 111873 .
116678)) (116681 128602 (FB.FASTSEECOMMAND 116691 . 120141) (FB.FASTSEE.ONEFILE 120143 . 123300) (
FB.SEEFULLFN 123302 . 127433) (FB.SEEBUTTONFN 127435 . 128600)) (128603 130349 (FB.LOADCOMMAND 128613
. 129120) (FB.COMPILECOMMAND 129122 . 129660) (FB.OPERATE.ON.FILES 129662 . 130347)) (130350 178535 (
FB.UPDATECOMMAND 130360 . 130585) (FB.FIX-DIRECTORY-DATES 130587 . 131610) (FB.MAYBE.EXPUNGE 131612 .
132673) (FB.UPDATEBROWSERITEMS 132675 . 145890) (FB.DATE 145892 . 146533) (FB.ADJUST.DATE.WIDTH 146535
. 149503) (FB.SET.BROWSER.TITLE 149505 . 150507) (FB.MAYBE.WIDEN.NAMES 150509 . 152628) (
FB.SET.DEFAULT.NAME.WIDTH 152630 . 153994) (FB.CREATE.FILEBUCKET 153996 . 161216) (
FB.CHECK.NAME.LENGTH 161218 . 163639) (FB.ADD.FILEGROUP 163641 . 165168) (FB.INSERT.DIRECTORY 165170
. 165408) (FB.MAKE.SUBDIRECTORY.ITEM 165410 . 166819) (FB.ADD.FILE 166821 . 167434) (FB.INSERT.FILE
167436 . 170848) (FB.ANALYZE.PATTERN 170850 . 176114) (FB.CANONICALIZE.PATTERN 176116 . 177428) (
FB.GETALLFILEINFO 177430 . 178533)) (178536 186695 (FB.SORT.VERSIONS 178546 . 181317) (
FB.DECREASING.VERSION 181319 . 181988) (FB.INCREASING.VERSION 181990 . 182611) (
FB.NAMES.DECREASING.VERSION 182613 . 183648) (FB.NAMES.INCREASING.VERSION 183650 . 184647) (
FB.DECREASING.NUMERIC.ATTR 184649 . 185329) (FB.INCREASING.NUMERIC.ATTR 185331 . 186005) (
FB.ALPHABETIC.ATTR 186007 . 186693)) (186696 196538 (FB.SORTCOMMAND 186706 . 193536) (
FB.INSERT.SUBDIRECTORIES 193538 . 194335) (FB.GET.SORT.MENU 194337 . 196536)) (196539 212760 (
FB.EXPUNGECOMMAND 196549 . 199134) (FB.NEWPATTERNCOMMAND 199136 . 199534) (FB.NEWINFOCOMMAND 199536 .
202368) (FB.DEPTHCOMMAND 202370 . 204145) (FB.SHAPECOMMAND 204147 . 207489) (FB.REMOVE.FILE 207491 .
209312) (FB.COUNT.FILE.CHANGE 209314 . 210759) (FB.SETNEWPATTERN 210761 . 211931) (FB.GET.NEWPATTERN
211933 . 212517) (FB.OPTIONSCOMMAND 212519 . 212758)) (212795 213848 (FB.GETWINDOW 212805 . 213846)) (
213849 214861 (FB.INFOMENU.SHADEINITIALSELECTIONS 213859 . 214506) (FB.INFO.ITEM.NAMED 214508 . 214859
)) (214862 224394 (FB.MAKECOUNTERWINDOW 214872 . 216400) (FB.COUNTERW.REDISPLAYFN 216402 . 216989) (
FB.UPDATE.COUNTERS 216991 . 219063) (FB.DISPLAY.COUNTERS 219065 . 224125) (FB.COUNTER.STRING 224127 .
224392)) (224395 229104 (FB.MAKEHEADINGWINDOW 224405 . 226019) (FB.HEADINGW.REDISPLAYFN 226021 .
226287) (FB.HEADINGW.RESHAPEFN 226289 . 226665) (FB.HEADINGW.DISPLAY 226667 . 229102)) (229105 233288
(FB.ICONFN 229115 . 229462) (FB.INFOMENU.WHENSELECTEDFN 229464 . 230194) (FB.CLOSEFN 230196 . 231399)
(FB.EXPUNGE?.MENU 231401 . 231813) (FB.AFTERCLOSEFN 231815 . 232176) (FB.CLOSE&EXPUNGE 232178 . 233286
)) (233289 245347 (FB.HARDCOPY.DIRECTORY 233299 . 243656) (FB.HARDCOPY.PRINT.TITLE 243658 . 243984) (
FB.HARDCOPY.MAXWIDTH 243986 . 245345)))))
STOP

Binary file not shown.

40
library/FX-80Driver.tedit Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "25-Jul-2022 15:09:26" {DSK}<Users>kaplan>Local>medley3.5>working-medley>library>HRULE.;4 23801
(FILECREATED "26-Nov-2023 09:46:44" {WMEDLEY}<library>HRULE.;5 23918
:CHANGES-TO (VARS HRULECOMS)
:EDIT-BY rmk
:PREVIOUS-DATE "25-Jul-2022 15:07:00"
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>HRULE.;3)
:CHANGES-TO (FNS HRULE.CREATE VRULE.CREATE CROPMARK.CREATE)
:PREVIOUS-DATE "25-Jul-2022 15:09:26" {WMEDLEY}<library>HRULE.;4)
(* ; "
Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT HRULECOMS)
@@ -90,30 +87,27 @@ Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
(DEFINEQ
(HRULE.CREATE
[LAMBDA (WIDTH) (* jds "11-Sep-85 16:36")
[LAMBDA (WIDTH) (* ; "Edited 26-Nov-2023 09:45 by rmk")
(* jds "11-Sep-85 16:36")
(* * Create a Horizontal-Rule image object.
 WIDTH may be NIL to default, a number, for a single rule with its width in
 points (and fractions thereof)%, or a list of alternating black and white
 widths. E.g., to get a hairline over 1pt white over 3pt rule, specify
 (0.5 1 3))
(* ;;; "Create a Horizontal-Rule image object. WIDTH may be NIL to default, a number, for a single rule with its width in points (and fractions thereof), or a list of alternating black and white widths. E.g., to get a hairline over 1pt white over 3pt rule, specify (0.5 1 3)")
(PROG ((HRULE (IMAGEOBJCREATE NIL HRULE.IMAGEFNS)))
(COND
((NOT WIDTH) (* USe the default width)
((NOT WIDTH) (* ; "USe the default width")
(IMAGEOBJPROP HRULE 'RULE.WIDTH HRULE.DEFAULT.WIDTH)
(RETURN HRULE))
((NUMBERP WIDTH)
(IMAGEOBJPROP HRULE 'RULE.WIDTH WIDTH)
(RETURN HRULE))
((AND (LISTP WIDTH)
(EVERY WIDTH (FUNCTION NUMBERP))) (* It's a list of numbers.
 Add (QUOTE em) up)
(EVERY WIDTH (FUNCTION NUMBERP))) (* ;
 "It's a list of numbers. Add (QUOTE em) up")
(IMAGEOBJPROP HRULE 'RULE.WIDTH WIDTH)
(RETURN HRULE))
(T (* Something was specified, and
 there was a non-number in it...)
(TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Non-numeric widths not desirable: " WIDTH)
(T (* ;
 "Something was specified, and there was a non-number in it...")
(TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "HRULE with non-numeric width: " WIDTH)
T])
(HRULE.DISPLAYFN
@@ -233,8 +227,9 @@ Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
(DEFINEQ
(VRULE.CREATE
[LAMBDA (WIDTH HEIGHT DASHING) (* ;
 "Edited 8-Oct-92 16:46 by sybalsky:mv:envos")
[LAMBDA (WIDTH HEIGHT DASHING) (* ; "Edited 26-Nov-2023 09:45 by rmk")
(* ;
 "Edited 8-Oct-92 16:46 by sybalsky:mv:envos")
(* ;; "Create a Vertical-Rule image object. HEIGHT may be NIL to default, a number, for a single rule with its width in points (and fractions thereof), or a list of alternating black and white widths. E.g., to get a hairline over 1pt white over 3pt rule, specify (0.5 1 3)")
@@ -246,7 +241,7 @@ Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
(IMAGEOBJPROP VRULE 'RULE.WIDTH WIDTH))
((AND (LISTP WIDTH)
(EVERY WIDTH (FUNCTION NUMBERP))) (* ;
 "It's a list of numbers. Add 'em up")
 "It's a list of numbers. Add 'em up")
(IMAGEOBJPROP VRULE 'RULE.WIDTH WIDTH)))
(COND
((NOT HEIGHT) (* ; "Use the default width")
@@ -257,12 +252,12 @@ Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
(RETURN VRULE))
((AND (LISTP HEIGHT)
(EVERY HEIGHT (FUNCTION NUMBERP))) (* ;
 "It's a list of numbers. Add 'em up")
 "It's a list of numbers. Add 'em up")
(IMAGEOBJPROP VRULE 'RULE.HEIGHT HEIGHT)
(RETURN VRULE))
(T (* ;
 "Something was specified, and there was a non-number in it...")
(TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Non-numeric widths not desirable: " HEIGHT)
 "Something was specified, and there was a non-number in it...")
(TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "VRULE with non-numeric height: " HEIGHT)
T)))
(IMAGEOBJPROP VRULE 'RULE.DASHING DASHING])
@@ -392,7 +387,8 @@ Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
(DEFINEQ
(CROPMARK.CREATE
[LAMBDA (WIDTH HEIGHT) (* ; "Edited 5-Jun-91 14:56 by jds")
[LAMBDA (WIDTH HEIGHT) (* ; "Edited 26-Nov-2023 09:46 by rmk")
(* ; "Edited 5-Jun-91 14:56 by jds")
(* ;; "Create a CROPMARK, that prints crop-marks for a page that is WIDTH points wide and HEIGHT points high.")
@@ -406,12 +402,12 @@ Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
(RETURN CROPMARK))
((AND (LISTP HEIGHT)
(EVERY HEIGHT (FUNCTION NUMBERP))) (* ;
 "It's a list of numbers. Add 'em up")
 "It's a list of numbers. Add 'em up")
(IMAGEOBJPROP CROPMARK 'PAGE.SIZE (LIST WIDTH HEIGHT))
(RETURN CROPMARK))
(T (* ;
 "Something was specified, and there was a non-number in it...")
(TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Non-numeric widths not desirable: " HEIGHT)
 "Something was specified, and there was a non-number in it...")
(TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "CROPMARK with non-numeric height: " HEIGHT)
T])
(CROPMARK.DISPLAYFN
@@ -508,14 +504,13 @@ Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation.
(FUNCTION NILL)
(FUNCTION CROPMARK.WHENOPERATEDONFN)
(FUNCTION NILL)))
(PUTPROPS HRULE COPYRIGHT ("Venue & Xerox Corporation" 1985 1990 1991 1992))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (4512 10691 (HRULE.CREATE 4522 . 5944) (HRULE.DISPLAYFN 5946 . 8515) (HRULE.GETFN 8517
. 8837) (HRULE.IMAGEBOXFN 8839 . 9641) (HRULE.PUTFN 9643 . 10021) (HRULE.COPYFN 10023 . 10487) (
HRULE.WHENOPERATEDONFN 10489 . 10689)) (11583 17788 (VRULE.CREATE 11593 . 13592) (VRULE.DISPLAYFN
13594 . 15788) (VRULE.GETFN 15790 . 16011) (VRULE.GETFN2 16013 . 16349) (VRULE.IMAGEBOXFN 16351 .
16779) (VRULE.PUTFN 16781 . 17179) (VRULE.COPYFN 17181 . 17584) (VRULE.WHENOPERATEDONFN 17586 . 17786)
) (18427 23077 (CROPMARK.CREATE 18437 . 19704) (CROPMARK.DISPLAYFN 19706 . 21206) (CROPMARK.GETFN
21208 . 21502) (CROPMARK.IMAGEBOXFN 21504 . 22205) (CROPMARK.PUTFN 22207 . 22485) (CROPMARK.COPYFN
22487 . 22870) (CROPMARK.WHENOPERATEDONFN 22872 . 23075)))))
(FILEMAP (NIL (4411 10637 (HRULE.CREATE 4421 . 5890) (HRULE.DISPLAYFN 5892 . 8461) (HRULE.GETFN 8463
. 8783) (HRULE.IMAGEBOXFN 8785 . 9587) (HRULE.PUTFN 9589 . 9967) (HRULE.COPYFN 9969 . 10433) (
HRULE.WHENOPERATEDONFN 10435 . 10635)) (11529 17865 (VRULE.CREATE 11539 . 13669) (VRULE.DISPLAYFN
13671 . 15865) (VRULE.GETFN 15867 . 16088) (VRULE.GETFN2 16090 . 16426) (VRULE.IMAGEBOXFN 16428 .
16856) (VRULE.PUTFN 16858 . 17256) (VRULE.COPYFN 17258 . 17661) (VRULE.WHENOPERATEDONFN 17663 . 17863)
) (18504 23271 (CROPMARK.CREATE 18514 . 19898) (CROPMARK.DISPLAYFN 19900 . 21400) (CROPMARK.GETFN
21402 . 21696) (CROPMARK.IMAGEBOXFN 21698 . 22399) (CROPMARK.PUTFN 22401 . 22679) (CROPMARK.COPYFN
22681 . 23064) (CROPMARK.WHENOPERATEDONFN 23066 . 23269)))))
STOP

Binary file not shown.

BIN
library/HRule.tedit Normal file

Binary file not shown.

Binary file not shown.

BIN
library/Kermit.tedit Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

45
library/Match.tedit Normal file

File diff suppressed because one or more lines are too long

BIN
library/MiniServe.tedit Normal file

Binary file not shown.

BIN
library/NSMaintain.tedit Normal file

Binary file not shown.

287
library/PDFSTREAM Normal file
View File

@@ -0,0 +1,287 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "11-Nov-2023 11:24:42" {WMEDLEY}<library>PDFSTREAM.;56 14033
:EDIT-BY rmk
:CHANGES-TO (VARS PDFSTREAMCOMS)
:PREVIOUS-DATE " 9-Oct-2023 00:42:25" {WMEDLEY}<library>PDFSTREAM.;55)
(PRETTYCOMPRINT PDFSTREAMCOMS)
(RPAQQ PDFSTREAMCOMS
((FILES (SYSLOAD)
POSTSCRIPTSTREAM)
[COMS (* ; "Hook into hardcopy interface")
[ADDVARS [PRINTERTYPES ((PDF)
(CANPRINT (PDF))
(STATUS TRUE)
(PROPERTIES NILL)
(SEND POSTSCRIPTSEND)
(BITMAPSCALE POSTSCRIPT.BITMAPSCALE)
(BITMAPFILE (PDF.HARDCOPYW FILE BITMAP SCALEFACTOR REGION
ROTATION TITLE]
[PRINTFILETYPES (PDF (TEST PDFFILEP)
(EXTENSION (PDF))
(CONVERSION (TEXT PDF.TEXT TEDIT PDF.TEDIT]
(IMAGESTREAMTYPES (PDF (OPENSTREAM OPEN-PDF-STREAM)
(FONTCREATE POSTSCRIPT.FONTCREATE)
(FONTSAVAILABLE POSTSCRIPT.FONTSAVAILABLE)
(CREATECHARSET \CREATECHARSET.PSC]
(VARS (DEFAULTPRINTERTYPE 'PDF))
(FNS PDFFILEP PDF.HARDCOPYW PDF.TEXT PDF.TEDIT)
(P (FONTPROFILE.ADDDEVICE 'PDF 'POSTSCRIPT]
(* ;; "")
(* ;; "Implementation of PDF streams")
(INITVARS (PDFCONVERTER NIL))
(* ; "Mac with ghostscript?")
(ALISTS (PDF-CONVERTER-TEMPLATES ps2pdf pstopdf))
(GLOBALVARS PDFCONVERTER PDF-CONVERTER-TEMPLATES)
(FNS OPEN-PDF-STREAM CLOSE-PDF-STREAM PS-TO-PDF)
(FNS SEE-PDF)
(ADDVARS (FB.SEE.METHODS (PDFFILEP SEE-PDF)))
(FNS PDFCONVERTER)))
(FILESLOAD (SYSLOAD)
POSTSCRIPTSTREAM)
(* ; "Hook into hardcopy interface")
(ADDTOVAR PRINTERTYPES ((PDF)
(CANPRINT (PDF))
(STATUS TRUE)
(PROPERTIES NILL)
(SEND POSTSCRIPTSEND)
(BITMAPSCALE POSTSCRIPT.BITMAPSCALE)
(BITMAPFILE (PDF.HARDCOPYW FILE BITMAP SCALEFACTOR REGION ROTATION TITLE))))
(ADDTOVAR PRINTFILETYPES (PDF (TEST PDFFILEP)
(EXTENSION (PDF))
(CONVERSION (TEXT PDF.TEXT TEDIT PDF.TEDIT))))
(ADDTOVAR IMAGESTREAMTYPES (PDF (OPENSTREAM OPEN-PDF-STREAM)
(FONTCREATE POSTSCRIPT.FONTCREATE)
(FONTSAVAILABLE POSTSCRIPT.FONTSAVAILABLE)
(CREATECHARSET \CREATECHARSET.PSC)))
(RPAQQ DEFAULTPRINTERTYPE PDF)
(DEFINEQ
(PDFFILEP
[LAMBDA (FILE) (* ; "Edited 23-Jun-2023 14:43 by rmk")
(* ; "Edited 5-Mar-93 21:40 by rmk:")
(* ; "Edited 14-Jan-93 10:56 by jds")
(OR (CL:MEMBER (UNPACKFILENAME.STRING FILE 'EXTENSION)
'("PDF")
:TEST
(FUNCTION STRING-EQUAL))
(CL:WHEN (STREAMP FILE)
(SETFILEPTR FILE 0)
(PROG1 (AND (EQ (BIN FILE)
(CHARCODE %%))
(EQ (BIN FILE)
(CHARCODE P))
(EQ (BIN FILE)
(CHARCODE D))
(EQ (BIN FILE)
(CHARCODE F)))
(SETFILEPTR FILE 0)))])
(PDF.HARDCOPYW
[LAMBDA (PDFFILE BITMAP SCALEFACTOR REGION Landscape? TITLE)
(* ; "Edited 24-Jul-2023 10:37 by rmk")
(* ; "Edited 23-Jun-2023 13:28 by rmk")
(* ; "Edited 6-Mar-2023 22:43 by rmk")
(LET ((PSTTMP (PACKFILENAME 'EXTENSION 'TMPPS 'BODY PDFFILE)))
(PS-TO-PDF (POSTSCRIPT.HARDCOPYW PSTTMP BITMAP SCALEFACTOR REGION Landscape? TITLE)
PDFFILE])
(PDF.TEXT
[LAMBDA (FILE PDFFILE FONTS HEADING TABS) (* ; "Edited 1-Oct-2023 15:24 by rmk")
(* ; "Edited 23-Jun-2023 13:23 by rmk")
(* ; "Edited 7-Mar-2023 08:39 by rmk")
(TEXTTOIMAGEFILE FILE PDFFILE 'PDF FONTS HEADING TABS `(REGION ,POSTSCRIPT.DEFAULT.PAGEREGION
ROTATION ,(NOT (NOT
POSTSCRIPT.TEXTFILE.LANDSCAPE
])
(PDF.TEDIT
[LAMBDA (FILE PDFFILE) (* ; "Edited 23-Jun-2023 13:22 by rmk")
(* ; "Edited 7-Mar-2023 08:39 by rmk")
(LET ((TSTREAM (OPENTEXTSTREAM FILE)))
(TEDIT.FORMAT.HARDCOPY FILE PDFFILE T NIL NIL NIL 'PDF)
(CLOSEF TSTREAM])
)
(FONTPROFILE.ADDDEVICE 'PDF 'POSTSCRIPT)
(* ;; "")
(* ;; "Implementation of PDF streams")
(RPAQ? PDFCONVERTER NIL)
(* ; "Mac with ghostscript?")
(ADDTOVAR PDF-CONVERTER-TEMPLATES (ps2pdf " " PSFILE " " PDFFILE " 2> " ERRORFILE)
(pstopdf " " PSFILE " -o " PDFFILE " 2> " ERRORFILE))
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS PDFCONVERTER PDF-CONVERTER-TEMPLATES)
)
(DEFINEQ
(OPEN-PDF-STREAM
[LAMBDA (FILE OPTIONS) (* ; "Edited 23-Sep-2023 15:38 by rmk")
(* ; "Edited 22-Sep-2023 11:04 by rmk")
(* ; "Edited 24-Jun-2023 14:49 by rmk")
(* ;; "Open a temporary PS file, but set it up so that at closing it gets converted to PDF using an operating-system utility (if available), and then gets renamed to the original intended filename.")
(* ;; "We have to stash the original filename someplace. We could put it in the tmp filename and then parse it out, but then we would have to worry about how unix filenames might parse against our {, }, etc. ")
(* ;;
 "Simplest thing for now is to just add an extra field at the end of the \POSTSCRIPTDATA record.")
(* ;; "")
(if [AND NIL (EQ 'LPT (FILENAMEFIELD FILE 'HOST]
then
(* ;; "If FILE is on the LPT device, we could just ssume that it can be printed directly, no point in converting. But then we would alo have to lie and give it a PDF extension so it thinks that we are heading to a PDF printer.")
(OPENPOSTSCRIPTSTREAM FILE OPTIONS)
else (CL:UNLESS (ASSOC (PDFCONVERTER)
PDF-CONVERTER-TEMPLATES)
(ERROR "A specified POSTSCRIPT-to-PDF converter cannot be found"))
(SETQ FILE (OR (AND (NEQ FILE T)
(OUTFILEP FILE))
(ERROR "PDF target file not found" FILE)))
(LET ((PSSTREAM (OPENPOSTSCRIPTSTREAM (CONCAT "{UNIX}/tmp/medley-pdf-" (IDATE)
"-"
(RAND)
".ps")
OPTIONS)))
(STREAMPROP PSSTREAM 'AFTERCLOSE (CONS (FUNCTION CLOSE-PDF-STREAM)))
(STREAMPROP PSSTREAM 'PDFTARGETINFO FILE)
PSSTREAM])
(CLOSE-PDF-STREAM
[LAMBDA (PSSTREAM) (* ; "Edited 22-Sep-2023 11:18 by rmk")
(* ; "Edited 24-Jul-2023 10:37 by rmk")
(* ; "Edited 17-Jul-2023 22:32 by rmk")
(* ; "Edited 24-Jun-2023 13:57 by rmk")
(* ;; "PSSTREAM is a postscript (maybe in tmp) rendition of what is intended to end up as a pdf. If we are going directly to a printer, we can probably just pass it along without worrying about conversion. In fact, in that case we probably should not have bothered even setting up the PDF stream.")
(* ;; "But for a file we execute the PDFCONVERTER as a shell command to make a pdf, and then we rename it to the intended filename")
(STREAMPROP PSSTREAM 'AFTERCLOSE NIL) (* ;
 "Maybe just remove only CLOSE-PDF-STREAMfrom the list?")
(LET ((TARGETINFO (STREAMPROP PSSTREAM 'PDFTARGETINFO NIL)))
(CL:IF TARGETINFO
(RENAMEFILE (PS-TO-PDF PSSTREAM)
TARGETINFO)
PSSTREAM)])
(PS-TO-PDF
[LAMBDA (PSFILE PDFFILE DONTDELETE) (* ; "Edited 1-Oct-2023 15:18 by rmk")
(* ; "Edited 23-Sep-2023 22:54 by rmk")
(* ; "Edited 23-Jul-2023 22:30 by rmk")
(* ; "Edited 24-Jun-2023 15:01 by rmk")
(* ; "Edited 16-Jul-2022 13:06 by rmk")
(* ; "Edited 8-Jul-2022 10:20 by rmk")
(* ; "Edited 7-May-2022 22:40 by rmk")
(* ; "Edited 7-Oct-2021 11:15 by rmk:")
(* ;; "PSFILE is the name of a closed PS file on a DSK/UNIX device. This function uses the PDFCONVERTER utility to convert that to a parallel pdf file, which is then renamed to PDFFILE. ")
(* ;; "DONTDELETE is just for debugging, keeps the /tmp/ files")
(SETQ PSFILE (FULLNAME (TRUEFILENAME PSFILE)))
(CL:UNLESS (INFILEP PSFILE)
(ERROR "NO PS FILE TO CONVERT"))
(CL:UNLESS (ASSOC (PDFCONVERTER)
PDF-CONVERTER-TEMPLATES)
(ERROR "A specified POSTSCRIPT-to-PDF converter cannot be found"))
(SETQ PDFFILE (if PDFFILE
then (TRUEFILENAME PDFFILE)
else (PACKFILENAME 'EXTENSION 'pdf 'BODY PSFILE)))
(LET ((ERRORFILE (PACKFILENAME 'EXTENSION 'error 'BODY PSFILE))
COMPLETIONCODE)
(* ;; "PROCESS-COMMAND is currently from GITFNS. Not sure whether ShellCommand in UNIXUTILS is appropriate.")
(* ;;
 "We have to map the filenames down to Unix conventions: (not pseudohost or host, slashes, etc.")
[SETQ COMPLETIONCODE (PROCESS-COMMAND (CONCATLIST (SUBLIS
`((PSFILE \, (SLASHIT (TRUEFILENAME
PSFILE)
NIL T))
(PDFFILE \, (SLASHIT (TRUEFILENAME
PDFFILE)
NIL T))
(ERRORFILE \, (SLASHIT (TRUEFILENAME
ERRORFILE)
NIL T)))
(ASSOC (PDFCONVERTER)
PDF-CONVERTER-TEMPLATES]
(* ;; "Now use Medley names")
(CLOSEF? PSFILE)
(CL:UNLESS DONTDELETE (DELFILE PSFILE))
(CLOSEF? ERRORFILE)
(CL:WHEN (INFILEP ERRORFILE)
(CL:WHEN (IGREATERP (PROG1 (GETFILEINFO ERRORFILE 'LENGTH)
(CL:UNLESS DONTDELETE (DELFILE ERRORFILE)))
0)
(ERROR "Cannot create PDF file for " PDFFILE)))
(CL:WHEN (IGREATERP COMPLETIONCODE 0)
(ERROR "Cannot create PDF file for " PDFFILE))
PDFFILE])
)
(DEFINEQ
(SEE-PDF
[LAMBDA (PDFFILE) (* ; "Edited 1-Oct-2023 20:47 by rmk")
(* ; "Edited 26-Sep-2023 16:52 by rmk")
(* ;; "Use the ShellOpener for this machine to open the PDF file outside of Medley")
(ShellOpen (PACKFILENAME 'BODY PDFFILE 'EXTENSION 'PDF])
)
(ADDTOVAR FB.SEE.METHODS (PDFFILEP SEE-PDF))
(DEFINEQ
(PDFCONVERTER
[LAMBDA NIL
(SETQ PDFCONVERTER (OR PDFCONVERTER (MKATOM (UNIX-GETENV "MEDLEY-PDFCONVERTER"))
(CAR (for TEMPLATE in PDF-CONVERTER-TEMPLATES
thereis (ShellWhich (CAR TEMPLATE])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3162 5776 (PDFFILEP 3172 . 4086) (PDF.HARDCOPYW 4088 . 4686) (PDF.TEXT 4688 . 5405) (
PDF.TEDIT 5407 . 5774)) (6216 13276 (OPEN-PDF-STREAM 6226 . 8362) (CLOSE-PDF-STREAM 8364 . 9651) (
PS-TO-PDF 9653 . 13274)) (13277 13675 (SEE-PDF 13287 . 13673)) (13726 14010 (PDFCONVERTER 13736 .
14008)))))
STOP

BIN
library/PDFSTREAM.LCOM Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

BIN
library/Press.tedit Normal file

Binary file not shown.

141
library/RS232.tedit Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

BIN
library/SameDir.tedit Normal file

Binary file not shown.

BIN
library/Spy.tedit Normal file

Binary file not shown.

BIN
library/SysEdit.tedit Normal file

Binary file not shown.

BIN
library/TableBrowser.tedit Normal file

Binary file not shown.

View File

@@ -1,18 +1,20 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "19-Jul-2023 09:26:13" {WMEDLEY}<library>UNICODE.;199 65282
(FILECREATED "26-Jan-2024 14:19:50" {LIB}UNICODE.;4 72688
:EDIT-BY rmk
:EDIT-BY "mth"
:CHANGES-TO (VARS UNICODECOMS)
:CHANGES-TO (FNS MAKE-UNICODE-FORMATS MAKE-UNICODE-TRANSLATION-TABLES SHOWCHARS
READ-UNICODE-MAPPING-FILENAMES)
(VARS UNICODECOMS)
:PREVIOUS-DATE "19-Jul-2022 15:36:40" {WMEDLEY}<library>UNICODE.;198)
:PREVIOUS-DATE " 8-Jan-2024 10:58:06" {LIB}UNICODE.;1)
(PRETTYCOMPRINT UNICODECOMS)
(RPAQQ UNICODECOMS
[(COMS
((COMS
(* ;; "External formats")
(FNS UTF8.OUTCHARFN UTF8.INCCODEFN UTF8.PEEKCCODEFN \UTF8.BACKCCODEFN)
@@ -23,7 +25,7 @@
(ADDVARS (*DEFAULT-EXTERNALFORMATS* (UNIX :UTF-8)))
(FNS UNICODE.UNMAPPED)
(FNS XCCS-UTF8-AFTER-OPEN)
(DECLARE%: EVAL@COMPILE DONTCOPY (MACROS UNICODE.TRANSLATE))
(DECLARE%: EVAL@COMPILE DONTCOPY (MACROS UNICODE.TRANSLATE \UTF8.GETBASEBYTE))
(FNS XTOUCODE UTOXCODE))
(COMS
(* ;; "Unicode mapping files")
@@ -45,8 +47,10 @@
(* ;; "Set up translation tables for UTF8 and UTFBE external formats")
(FNS MAKE-UNICODE-TRANSLATION-TABLES)
[INITVARS (DEFAULT-XCCS-CHARSETS '(LATIN SYMBOLS1 SYMBOLS2 EXTENDED-LATIN FORMS
SYMBOLS3 SYMBOLS4 ACCENTED-LATIN GREEK]
[INITVARS (DEFAULT-XCCS-CHARSETS '(LATIN JAPANESE-SYMBOLS1 JAPANESE-SYMBOLS2
EXTENDED-LATIN FORMS SYMBOLS1 SYMBOLS2
ACCENTED-LATIN1 GREEK))
(DEFAULT-XCCS-JAPANESE-CHARSETS '(HIRAGANA KATAKANA JIS]
[DECLARE%: DONTEVAL@LOAD DOCOPY (P (MAKE-UNICODE-TRANSLATION-TABLES (
READ-UNICODE-MAPPING
@@ -55,9 +59,11 @@
'*XCCSTOUNICODE*
'*UNICODETOXCCS*]
(GLOBALVARS *XCCSTOUNICODE* *UNICODETOXCCS*))
(FNS HEXSTRING UTF8HEXSTRING NUTF8CODEBYTES NUTF8STRINGBYTES XTOUSTRING XCCSSTRING)
(FNS UTF-8.VALIDATE HEXSTRING UTF8HEXSTRING NUTF8CODEBYTES NUTF8STRINGBYTES XTOUSTRING
XCCSSTRING)
(FNS \UTF8.FETCHCODE)
(FNS SHOWCHARS)
(DECLARE%: EVAL@COMPILE DONTCOPY (FILES (FROM LOADUPS)
[DECLARE%: EVAL@COMPILE DONTCOPY (FILES (FROM LOADUPS)
EXPORTS.ALL)
(* ;; "These control the layout of the translation tables. Since many of the upper panels are sparse, doing it per-panel (128) seems more space-efficient, and residual alists can be shorter")
@@ -66,7 +72,9 @@
(MAX-ALIST-LENGTH 10)
(N-TRANSLATION-SEGMENTS (IQUOTIENT 65536 TRANSLATION-SEGMENT-SIZE))
(TRANSLATION-SHIFT (INTEGERLENGTH (SUB1 TRANSLATION-SEGMENT-SIZE)))
(TRANSLATION-MASK (SUB1 TRANSLATION-SEGMENT-SIZE])
(TRANSLATION-MASK (SUB1 TRANSLATION-SEGMENT-SIZE]
(PROP (FILETYPE)
UNICODE)))
@@ -402,7 +410,8 @@
(DEFINEQ
(MAKE-UNICODE-FORMATS
[LAMBDA (EXTERNALEOL) (* ; "Edited 19-Jul-2022 15:36 by rmk")
[LAMBDA (EXTERNALEOL) (* ; "Edited 8-Dec-2023 15:19 by rmk")
(* ; "Edited 19-Jul-2022 15:36 by rmk")
(* ; "Edited 6-Aug-2021 16:08 by rmk:")
(* ;; "RAW formats do not do XCCS/Unicode translation, just deal with the byte encoding.")
@@ -413,7 +422,7 @@
(FUNCTION UTF8.PEEKCCODEFN)
(FUNCTION \UTF8.BACKCCODEFN)
(FUNCTION UTF8.OUTCHARFN)
NIL EXTERNALEOL)
NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
(MAKE-EXTERNALFORMAT :UTF-8-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
(UTF8.INCCODEFN STREAM COUNTP T]
[FUNCTION (LAMBDA (STREAM NOERROR)
@@ -422,12 +431,12 @@
(\UTF8.BACKCCODEFN STREAM COUNTP T]
[FUNCTION (LAMBDA (STREAM CHARCODE)
(UTF8.OUTCHARFN STREAM CHARCODE T]
NIL EXTERNALEOL)
NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
(MAKE-EXTERNALFORMAT :UTF-16BE (FUNCTION UTF16BE.INCCODEFN)
(FUNCTION UTF16BE.PEEKCCODEFN)
(FUNCTION \UTF16BE.BACKCCODEFN)
(FUNCTION UTF16BE.OUTCHARFN)
NIL EXTERNALEOL)
NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
(MAKE-EXTERNALFORMAT :UTF-16BE-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
(UTF16BE.INCCODEFN STREAM COUNTP T]
[FUNCTION (LAMBDA (STREAM NOERROR)
@@ -436,7 +445,7 @@
(\UTF16BE.BACKCCODEFN STREAM COUNTP T]
[FUNCTION (LAMBDA (STREAM CHARCODE)
(UTF16BE.OUTCHARFN STREAM CHARCODE T]
NIL EXTERNALEOL])
NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL])
)
(MAKE-UNICODE-FORMATS EXTERNALEOL)
@@ -469,15 +478,17 @@
(DEFINEQ
(XCCS-UTF8-AFTER-OPEN
[LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 13-Aug-2020 11:54 by rmk:")
[LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 3-Jan-2024 10:27 by rmk")
(* ; "Edited 13-Aug-2020 11:54 by rmk:")
(* ;; "If added to STREAM-AFTER-OPEN-FNS, causes mapping files to be opened as UTF8.")
(* ;;
 "If added to STREAM-AFTER-OPEN-FNS, causes mapping files to be opened as UTF-8. For development")
(CL:WHEN (AND (STRPOS "XCCS-" (U-CASE (FULLNAME STREAM)))
[EQ 'TXT (U-CASE (FILENAMEFIELD (FULLNAME STREAM)
'EXTENSION]
(NOT (ASSOC 'EXTERNALFORMAT PARAMETERS)))
(STREAMPROP STREAM 'EXTERNALFORMAT :UTF8))])
(STREAMPROP STREAM 'EXTERNALFORMAT :UTF-8))])
)
(DECLARE%: EVAL@COMPILE DONTCOPY
(DECLARE%: EVAL@COMPILE
@@ -492,6 +503,15 @@
CODE))
[(AND X (CL:SVREF X (LOGAND CODE TRANSLATION-MASK]
(T (UNICODE.UNMAPPED CODE TRANSLATION-TABLE])
(PUTPROPS \UTF8.GETBASEBYTE MACRO ((BASE OFFSET ERROR?) (* ;
 "Fetches the OFFSET'th byte from BASE, checking for UTF-8 validity if ERROR?")
(IF ERROR?
THEN (LET ((BYTE (\GETBASEBYTE BASE OFFSET)))
(CL:WHEN (ILESSP BYTE 128)
(ERROR "INVALID UTF8 BYTE" BYTE))
BYTE)
ELSE (\GETBASEBYTE BASE OFFSET))))
)
)
(DEFINEQ
@@ -512,24 +532,43 @@
(DEFINEQ
(READ-UNICODE-MAPPING-FILENAMES
[LAMBDA (FILESPEC) (* ; "Edited 5-Aug-2020 15:59 by kaplan")
[LAMBDA (FILESPEC DIRS) (* ; "Edited 26-Jan-2024 14:02 by mth")
(* ; "Edited 5-Jan-2024 17:24 by rmk")
(* ; "Edited 5-Aug-2020 15:59 by kaplan")
(* ; "Edited 4-Aug-2020 17:31 by rmk:")
(FOR F X CSI INSIDE FILESPEC
COLLECT (IF (FINDFILE (PACKFILENAME 'BODY F 'EXTENSION 'TXT)
T UNICODEDIRECTORIES)
ELSEIF [SETQ CSI (OR (SASSOC F XCCS-SET-NAMES)
(FIND N IN XCCS-SET-NAMES
SUCHTHAT (EQ F (CADR N]
THEN (FINDFILE (PACKFILENAME 'BODY (CONCAT 'XCCS- (CAR CSI)
'=
(CADR CSI))
'EXTENSION
'TXT)
T UNICODEDIRECTORIES)
ELSE F])
(DECLARE (USEDFREE UNICODEDIRECTORIES XCCS-SET-NAMES))
(CL:UNLESS DIRS (SETQ DIRS UNICODEDIRECTORIES))
(FOR F X CSI INSIDE FILESPEC JOIN
(* ;;
 "Last case hopes to pick up tables that are gruped together in a subdirectory (e.g. JIS)")
(OR (MKLIST (FINDFILE (PACKFILENAME 'BODY F 'EXTENSION
'TXT)
T DIRS))
(for D inside DIRS
when (SETQ D (FILDIR (PACKFILENAME 'NAME
(CONCAT "XCCS-*=" F)
'EXTENSION
'TXT
'BODY D)))
do (RETURN D))
(AND [SETQ CSI (OR (SASSOC F XCCS-SET-NAMES)
(FIND N IN XCCS-SET-NAMES
SUCHTHAT (EQ F (CADR N]
(MKLIST (FINDFILE (PACKFILENAME 'BODY
(CONCAT 'XCCS- (CAR CSI)
'=
(CADR CSI))
'EXTENSION
'TXT)
T DIRS)))
(for D inside DIRS
when (DIRECTORYNAMEP (SETQ D (CONCAT D ">" F ">")))
join (FILDIR (CONCAT D ">*.TXT;*"])
(READ-UNICODE-MAPPING
[LAMBDA (FILESPEC NOPRINT NOERROR) (* ; "Edited 3-Jul-2021 13:37 by rmk:")
[LAMBDA (FILESPEC NOPRINT NOERROR) (* ; "Edited 5-Jan-2024 12:26 by rmk")
(* ; "Edited 3-Jul-2021 13:37 by rmk:")
(* ;; "Combines the char-mapping tables from FILES coded in the Uncode-CDROM format. Comments prefixed by # and")
@@ -539,8 +578,7 @@
(* ;; " 0xXXXX ... 0xYYYY")
(* ;;
 " Column 3: (after #) Character name in some mapping files, utf-8 character")
(* ;; " Column 3: (after #) Character name in some mapping files, utf-8 character")
(* ;; " for XCCS mapping files")
@@ -548,37 +586,34 @@
(* ;; "Result is a list of (fromcode tocode1 ... tocoden) integer lists (almost always with only a single tocode")
(FOR FILE [SEPBITTABLE _ (MAKEBITTABLE (CHARCODE (TAB SPACE] IN (
 READ-UNICODE-MAPPING-FILENAMES
FILESPEC)
(FOR FILE [SEPBITTABLE _ (MAKEBITTABLE (CHARCODE (TAB SPACE] IN (READ-UNICODE-MAPPING-FILENAMES
FILESPEC)
JOIN (CL:WITH-OPEN-FILE (STREAM FILE :DIRECTION :INPUT :EXTERNAL-FORMAT :UTF-8-RAW)
(BIND LINE START FIRST (CL:UNLESS
(FILEPOS "Name:" STREAM NIL NIL NIL T)
(ERROR "NOT A UNICODE MAPPING FILE"
(FULLNAME STREAM)))
(SETQ LINE (CL:READ-LINE STREAM NIL NIL))
(CL:UNLESS NOPRINT
(PRINTOUT T T "Unicode mapping: "
(CL:STRING-TRIM " " LINE)
T)) WHILE (SETQ LINE
(CL:READ-LINE STREAM NIL
NIL))
WHEN (SETQ START (STRPOSL SEPBITTABLE LINE 1 T))
UNLESS (EQ (CHARCODE %#)
(NTHCHARCODE LINE START))
COLLECT (BIND END WHILE [SETQ END (OR (STRPOSL SEPBITTABLE LINE
START)
(ADD1 (NCHARS LINE]
COLLECT [CHARCODE.DECODE (SUBSTRING LINE START
(SUB1 END)
(CONSTANT (CONCAT]
REPEATWHILE (AND (SETQ START (STRPOSL SEPBITTABLE LINE
END T))
(NEQ (CHARCODE %#)
(NTHCHARCODE LINE START])
(BIND LINE NAME CHARSET START
FIRST (CL:UNLESS (FILEPOS "Name:" STREAM NIL NIL NIL T)
(ERROR "NOT A UNICODE MAPPING FILE" (FULLNAME STREAM)))
(SETQ NAME (CL:STRING-TRIM " " (CL:READ-LINE STREAM NIL NIL)))
(SETQ CHARSET (CL:IF (FILEPOS "XCCS charset:" STREAM NIL NIL NIL T)
(CL:STRING-TRIM " " (CL:READ-LINE STREAM NIL NIL))
""))
(CL:UNLESS NOPRINT (* ; "Strip off XCCS in front of name")
(PRINTOUT T T CHARSET " " [SUBSTRING NAME (CONSTANT
(ADD1 (NCHARS "XCCS"]
T)) WHILE (SETQ LINE (CL:READ-LINE STREAM NIL NIL))
WHEN (SETQ START (STRPOSL SEPBITTABLE LINE 1 T))
UNLESS (EQ (CHARCODE %#)
(NTHCHARCODE LINE START))
COLLECT (BIND END WHILE [SETQ END (OR (STRPOSL SEPBITTABLE LINE START)
(ADD1 (NCHARS LINE]
COLLECT [CHARCODE.DECODE (SUBSTRING LINE START (SUB1 END)
(CONSTANT (CONCAT]
REPEATWHILE (AND (SETQ START (STRPOSL SEPBITTABLE LINE END T))
(NEQ (CHARCODE %#)
(NTHCHARCODE LINE START])
(WRITE-UNICODE-MAPPING
[LAMBDA (MAPPING INCLUDECHARSETS FILE EMPTYOK) (* ; "Edited 16-Aug-2020 16:56 by rmk:")
[LAMBDA (MAPPING INCLUDECHARSETS FILE EMPTYOK) (* ; "Edited 4-Jan-2024 22:44 by rmk")
(* ; "Edited 16-Aug-2020 16:56 by rmk:")
(* ;; "Writes a symbol unicode mapping file. Mapping is a list of (XCCS-code Unicode) pairs, which may contain codes in multiple character sets.")
@@ -587,21 +622,18 @@
(* ;; "The output lines are of the form x0XXX<tab>x0UUUU<tab># Unicode-char")
(* ;;
 "If INCLUDECHARSETS=T then the mappings are split up into separate per-character set files.")
 "If INCLUDECHARSETS=T then the mappings are split up into separate per-character set files.")
(* ;; "Otherwise, all and only mappings included in thos charsets are included in a single output file--an implicit subset.")
(IF (AND (EQ INCLUDECHARSETS T)
(NULL FILE))
(NULL FILE))
THEN (IF MAPPING
THEN (FOR CSI F IN XCCS-SET-NAMES WHEN (SETQ F
(WRITE-UNICODE-MAPPING
MAPPING
(CAR CSI)
NIL T)) COLLECT
F)
ELSE (PRINTOUT T "THERE ARE NO MAPPINGS" T)
NIL)
THEN (FOR CSI F IN XCCS-SET-NAMES WHEN (SETQ F (WRITE-UNICODE-MAPPING MAPPING
(CAR CSI)
NIL T)) COLLECT F)
ELSE (PRINTOUT T "THERE ARE NO MAPPINGS" T)
NIL)
ELSE
(LET
(IMAPPING CSETINFO RANGES)
@@ -609,47 +641,45 @@
(WRITE-UNICODE-INCLUDED MAPPING INCLUDECHARSETS))
(IF IMAPPING
THEN (CL:WITH-OPEN-FILE
(STREAM (WRITE-UNICODE-MAPPING-FILENAME FILE CSETINFO RANGES)
:DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION :EXTERNAL-FORMAT :UTF8-RAW)
(WRITE-UNICODE-MAPPING-HEADER STREAM CSETINFO RANGES)
(SORT IMAPPING T)
(FOR M CSET LEFTC FIRSTRIGHTC CSI IN IMAPPING
DO (SETQ LEFTC (CAR M))
(SETQ FIRSTRIGHTC (CADR M))
(CL:UNLESS (EQ CSET (LRSH LEFTC 8))
(SETQ CSET (LRSH LEFTC 8))
(SETQ CSI (ASSOC CSET CSETINFO))
(PRINTOUT STREAM T "# " .P2 (CADR CSI)
" "
(CADDR CSI)
T))
(PRINTOUT STREAM "0x" (HEXSTRING LEFTC 4)
%#
(FOR RIGHTC IN (CDR M)
DO (PRINTOUT NIL " " "0x" (HEXSTRING RIGHTC 4)))
" # "
(SELECTC FIRSTRIGHTC
(UNDEFINEDCODE
(* ;; "FFFF")
(STREAM (WRITE-UNICODE-MAPPING-FILENAME FILE CSETINFO RANGES)
:DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION :EXTERNAL-FORMAT :UTF-8-RAW)
(WRITE-UNICODE-MAPPING-HEADER STREAM CSETINFO RANGES)
(SORT IMAPPING T)
(FOR M CSET LEFTC FIRSTRIGHTC CSI IN IMAPPING
DO (SETQ LEFTC (CAR M))
(SETQ FIRSTRIGHTC (CADR M))
(CL:UNLESS (EQ CSET (LRSH LEFTC 8))
(SETQ CSET (LRSH LEFTC 8))
(SETQ CSI (ASSOC CSET CSETINFO))
(PRINTOUT STREAM T "# " .P2 (CADR CSI)
" "
(CADDR CSI)
T))
(PRINTOUT STREAM "0x" (HEXSTRING LEFTC 4)
%#
(FOR RIGHTC IN (CDR M) DO (PRINTOUT NIL " " "0x" (HEXSTRING RIGHTC 4)))
" # "
(SELECTC FIRSTRIGHTC
(UNDEFINEDCODE
(* ;; "FFFF")
"UNDEFINED")
(MISSINGCODE
(* ;; "FFFE")
"UNDEFINED")
(MISSINGCODE
(* ;; "FFFE")
"MISSING")
(IF (ILESSP FIRSTRIGHTC 32)
THEN (* ; "Control chars")
[CONCAT "^" (CHARACTER (IPLUS FIRSTRIGHTC
(CHARCODE @]
ELSE (CHARACTER FIRSTRIGHTC)))
T))
(FULLNAME STREAM))
"MISSING")
(IF (ILESSP FIRSTRIGHTC 32)
THEN (* ; "Control chars")
[CONCAT "^" (CHARACTER (IPLUS FIRSTRIGHTC (CHARCODE @]
ELSE (CHARACTER FIRSTRIGHTC)))
T))
(FULLNAME STREAM))
ELSEIF (NOT EMPTYOK)
THEN (PRINTOUT T "THERE ARE NO MAPPINGS")
(CL:WHEN INCLUDECHARSETS
(PRINTOUT T " FOR " .PPVTL (MKLIST INCLUDECHARSETS)
T))
NIL])
(CL:WHEN INCLUDECHARSETS
(PRINTOUT T " FOR " .PPVTL (MKLIST INCLUDECHARSETS)
T))
NIL])
(WRITE-UNICODE-INCLUDED
[LAMBDA (MAPPING INCLUDECHARSETS) (* ; "Edited 4-Aug-2020 17:47 by rmk:")
@@ -724,28 +754,28 @@
(CL:VALUES IMAPPING CSETINFO RANGES])
(WRITE-UNICODE-MAPPING-HEADER
[LAMBDA (STREAM CSETINFO RANGES) (* ; "Edited 4-Aug-2020 17:38 by rmk:")
[LAMBDA (STREAM CSETINFO RANGES) (* ; "Edited 5-Jan-2024 13:24 by rmk")
(* ; "Edited 4-Aug-2020 17:38 by rmk:")
(* ;; "Writes the standard per-file header information")
(FOR LINE IN UNICODE-MAPPING-HEADER
DO (PRINTOUT STREAM "#" 2)
(SELECTQ LINE
(XCCSCHARACTERSETS
(PRINTOUT STREAM " XCCS charset")
(IF (CDR CSETINFO)
THEN (PRINTOUT STREAM "s:" -4)
(FOR R IN RANGES DO (PRINTOUT STREAM R " "))
(TERPRI STREAM)
ELSE (* ; "Singleton")
(PRINTOUT STREAM ": " -4 (CADAR CSETINFO)
" "
(CADDAR CSETINFO)))
(TERPRI STREAM))
(DATE (PRINTOUT STREAM " Date:" -13 (DATE (DATEFORMAT NO.TIME
NO.LEADING.SPACES))
T))
(PRINTOUT STREAM LINE T)))
(SELECTQ LINE
(XCCSCHARACTERSETS
(PRINTOUT STREAM " XCCS charset")
(IF (CDR CSETINFO)
THEN (PRINTOUT STREAM "s:" -4)
(FOR R IN RANGES DO (PRINTOUT STREAM R " "))
ELSE (* ; "Singleton")
(PRINTOUT STREAM ": " -4 (CADAR CSETINFO)
" "
(CADDAR CSETINFO)))
(TERPRI STREAM))
(DATE (PRINTOUT STREAM " Date:" -13 (DATE (DATEFORMAT NO.TIME NO.LEADING.SPACES)
)
T))
(PRINTOUT STREAM LINE T)))
(TERPRI STREAM])
(WRITE-UNICODE-MAPPING-FILENAME
@@ -774,24 +804,28 @@
(RPAQQ XCCS-SET-NAMES
(("0" LATIN)
("41" SYMBOLS1)
("42" SYMBOLS2)
("41" JAPANESE-SYMBOLS1)
("42" JAPANESE-SYMBOLS2)
("43" EXTENDED-LATIN)
("44" HIRAGANA)
("45" KATAKANA)
("46" GREEK)
("47" CYRILLIC)
("50" FORMS)
("60-172" JIS)
("60-166" JIS)
("340" ARABIC)
("341" HEBREW)
("342" IPA)
("343" HANGUL)
("344" GEORGIAN-ARMENIAN)
("356" SYMBOLS3)
("357" SYMBOLS4)
("345" DEVANAGRI)
("346" BENGALI)
("347" GURMUKHI)
("350" THAI-LAO)
("356" SYMBOLS2)
("357" SYMBOLS1)
("360" LIGATURES)
("361" ACCENTED-LATIN)
("361" ACCENTED-LATIN1)
("365" MORE-ARABIC)
("375" GRAPHIC-VARIANTS)))
@@ -813,22 +847,21 @@
)
(RPAQQ UNICODE-MAPPING-HEADER
("" " Name: XCCS (XC-3-1-1-0) to Unicode" " Unicode version: 3.0"
("" " Name: XCCS (Version 2.0) to Unicode" " Unicode version: 3.0"
XCCSCHARACTERSETS " Table version: 0.1" " Table format: Format A"
DATE " Author: Ron Kaplan <Ron.Kaplan@post.harvard.edu>" ""
"This file contains mappings from the Xerox Character Code Standard (version"
"XC1-3-3-0, 1987) into Unicode 3.0. standard codes. That is the version of"
"XCCS corresponding to the fonts in the Medley system." ""
"2.0, 1990) into Unicode 3.0. standard codes. That is an extension of the"
"version of XCCS corresponding to the fonts in the Medley system." ""
"The format of this file conforms to the format of the other Unicode-supplied"
"mapping files:" " Three white-space (tab or spaces) separated columns:"
" Column 1 is the XCCS code (as hex 0xXXXX)"
" Column 2 is the corresponding Unicode (as hex 0xXXXX)"
" Column 3 (after #) is a comment column. For convenience, it contains the"
" Unicode character itself (since the Unicode character names"
" are not available)"
" Unicode character itself and the Unicode character names when available."
"Unicode FFFF is used for undefined XCCS codes (Column 3 = UNDEFINED"
"Unicode FFFE is used for XCCS codes that have not yet been filled in."
"(Column 3 = MISSING)" "" "This file is encoded in UTF8, so that the Unicode characters"
"(Column 3 = MISSING)" "" "This file is encoded in UTF-8, so that the Unicode characters"
"are properly displayed in Column 3 and can be edited by standard"
"Unicode-enabled editors (e.g. Mac Textedit)." ""
"This file can also be read by the function"
@@ -850,7 +883,7 @@
(DEFINEQ
(MAKE-UNICODE-TRANSLATION-TABLES
[LAMBDA (MAPPING LTORVAR RTOLVAR) (* ; "Edited 21-Aug-2021 13:12 by rmk:")
[LAMBDA (MAPPING LTORVAR RTOLVAR) (* ; "Edited 21-Aug-2021 13:12 by rmk:")
(* ; "Edited 17-Aug-2020 08:46 by rmk:")
(* ;; "MAPPING is the list of numeric code correspondence pairs constructed by applying READ-UNICODE-MAPPING to a Unicode mapping file.")
@@ -876,7 +909,7 @@
(* ;; "")
(* ;;
 "An unmapped XCCS character is assigned a code in the %"private use%" code blocks 0xE000-F8FF")
 "An unmapped XCCS character is assigned a code in the %"private use%" code blocks 0xE000-F8FF")
(* ;; "")
@@ -892,75 +925,67 @@
(* ;; "The left-to-right direction (into Unicode). We start by distributing the mappings into alists in arrays indexed by the higher-order (charaset set byte). The second loop converts long alists into arrays.")
[FOR M LEFTC RBASE RCODES IN MAPPING EACHTIME (SETQ RCODES (CDR M))
(SETQ RBASE (CAR RCODES))
(SETQ RBASE (CAR RCODES))
UNLESS (IGEQ RBASE MISSINGCODE) DO (SETQ LEFTC (CAR M))
(* ;;
 "(CDR RCODES) contains combiners on the base")
(* ;; "(CDR RCODES) contains combiners on the base")
(CL:PUSH (CONS (LOGAND LEFTC TRANSLATION-MASK)
(CL:IF (CDR RCODES)
RCODES
RBASE))
(CL:SVREF LTORARRAY (LRSH LEFTC
TRANSLATION-SHIFT
]
(CL:PUSH (CONS (LOGAND LEFTC TRANSLATION-MASK)
(CL:IF (CDR RCODES)
RCODES
RBASE))
(CL:SVREF LTORARRAY (LRSH LEFTC
TRANSLATION-SHIFT]
(FOR I CSA FROM 0 TO (SUB1 N-TRANSLATION-SEGMENTS)
WHEN (IGREATERP (LENGTH (CL:SVREF LTORARRAY I))
MAX-ALIST-LENGTH)
DO
MAX-ALIST-LENGTH) DO
(* ;; "Leave it alone if the alist is short")
(* ;; "Leave it alone if the alist is short")
(SETQ CSA (CL:MAKE-ARRAY TRANSLATION-SEGMENT-SIZE :INITIAL-ELEMENT NIL))
(FOR P IN (CL:SVREF LTORARRAY I)
DO (CL:SETF (CL:SVREF CSA (LOGAND (CAR P)
TRANSLATION-MASK))
(CDR P)))
(CL:SETF (CL:SVREF LTORARRAY I)
CSA))
(SETQ CSA (CL:MAKE-ARRAY TRANSLATION-SEGMENT-SIZE
:INITIAL-ELEMENT NIL))
(FOR P IN (CL:SVREF LTORARRAY I)
DO (CL:SETF (CL:SVREF CSA (LOGAND (CAR P)
TRANSLATION-MASK))
(CDR P)))
(CL:SETF (CL:SVREF LTORARRAY I)
CSA))
(* ;; "")
(* ;; "Now the right-to-left direction (from Unicode). Here we have to detect and compensate for ambiguity.")
(FOR M LEFTC RBASE RCOMBINERS PREV IN MAPPING EACHTIME (SETQ RBASE (CADR M))
(SETQ RCOMBINERS (CDDR M))
(SETQ RCOMBINERS (CDDR M))
UNLESS (OR (IGEQ RBASE MISSINGCODE)
RCOMBINERS) DO
RCOMBINERS) DO
(* ;;
 "Have we already seen an explicit mapping from right to left?")
(* ;;
 "Have we already seen an explicit mapping from right to left?")
(SETQ LEFTC (CAR M))
[SETQ PREV (ASSOC (LOGAND RBASE TRANSLATION-MASK)
(CL:SVREF RTOLARRAY (LRSH RBASE
TRANSLATION-SHIFT
]
(IF (NULL PREV)
THEN (CL:PUSH (CONS (LOGAND RBASE
TRANSLATION-MASK)
LEFTC)
(CL:SVREF RTOLARRAY (LRSH RBASE
TRANSLATION-SHIFT
)))
ELSEIF (IGREATERP (CDR PREV)
LEFTC)
THEN (RPLACD PREV LEFTC)))
(SETQ LEFTC (CAR M))
[SETQ PREV (ASSOC (LOGAND RBASE TRANSLATION-MASK)
(CL:SVREF RTOLARRAY (LRSH RBASE
TRANSLATION-SHIFT]
(IF (NULL PREV)
THEN (CL:PUSH (CONS (LOGAND RBASE TRANSLATION-MASK)
LEFTC)
(CL:SVREF RTOLARRAY (LRSH RBASE
TRANSLATION-SHIFT)))
ELSEIF (IGREATERP (CDR PREV)
LEFTC)
THEN (RPLACD PREV LEFTC)))
(FOR I CSA FROM 0 TO (SUB1 N-TRANSLATION-SEGMENTS)
WHEN (IGREATERP (LENGTH (CL:SVREF RTOLARRAY I))
MAX-ALIST-LENGTH)
DO
MAX-ALIST-LENGTH) DO
(* ;; "Long list, make an array")
(* ;; "Long list, make an array")
(SETQ CSA (CL:MAKE-ARRAY TRANSLATION-SEGMENT-SIZE :INITIAL-ELEMENT NIL))
(FOR P IN (CL:SVREF RTOLARRAY I)
DO (CL:SETF (CL:SVREF CSA (LOGAND (CAR P)
TRANSLATION-MASK))
(CDR P)))
(CL:SETF (CL:SVREF RTOLARRAY I)
CSA))
(SETQ CSA (CL:MAKE-ARRAY TRANSLATION-SEGMENT-SIZE
:INITIAL-ELEMENT NIL))
(FOR P IN (CL:SVREF RTOLARRAY I)
DO (CL:SETF (CL:SVREF CSA (LOGAND (CAR P)
TRANSLATION-MASK))
(CDR P)))
(CL:SETF (CL:SVREF RTOLARRAY I)
CSA))
(* ;; "")
@@ -991,8 +1016,10 @@
(LIST LTORARRAY RTOLARRAY])
)
(RPAQ? DEFAULT-XCCS-CHARSETS '(LATIN SYMBOLS1 SYMBOLS2 EXTENDED-LATIN FORMS SYMBOLS3 SYMBOLS4
ACCENTED-LATIN GREEK))
(RPAQ? DEFAULT-XCCS-CHARSETS '(LATIN JAPANESE-SYMBOLS1 JAPANESE-SYMBOLS2 EXTENDED-LATIN FORMS
SYMBOLS1 SYMBOLS2 ACCENTED-LATIN1 GREEK))
(RPAQ? DEFAULT-XCCS-JAPANESE-CHARSETS '(HIRAGANA KATAKANA JIS))
(DECLARE%: DONTEVAL@LOAD DOCOPY
(MAKE-UNICODE-TRANSLATION-TABLES (READ-UNICODE-MAPPING DEFAULT-XCCS-CHARSETS T)
@@ -1005,6 +1032,63 @@
)
(DEFINEQ
(UTF-8.VALIDATE
[LAMBDA (STREAM BYTE1) (* ; "Edited 28-Dec-2023 11:57 by rmk")
(* ; "Edited 6-Aug-2021 16:02 by rmk:")
(* ; "Edited 6-Aug-2020 17:13 by rmk:")
(* ;; "Returns the codesize if the bytes starting at STREAM's current position form a valid UTF-8 sequence.")
(* ;; "If BYTE1 is provided, it is interpreted as the just-read header byte with the stream is positioned just after it.")
(* ;; "Test for smallp because the stream's End-of-file operation may suppress the error--otherwise an error will happen if the streams runs out of necessary bytes.")
(* ;; "For valid sequences, returns the same value as NUTF8CODEBYTES, but this reads/validates the rest of the bytes. On a non-NILreturn the stream is positioned before the header byte of the next putative code. The stream position is uncertain on a NIL return.")
(* ;; "")
(CL:UNLESS BYTE1
(SETQ BYTE1 (\BIN STREAM)))
(PROG (BYTE2 BYTE3 BYTE4)
(* ;; "Distinguish on the header byte BYTE1.")
(CL:WHEN (SMALLP BYTE1)
(IF (ILESSP BYTE1 128)
THEN (RETURN 1)
ELSEIF (IGEQ BYTE1 (LLSH 15 4))
THEN (* ; "4 bytes")
(SETQ BYTE2 (\BIN STREAM))
(CL:WHEN (OR (NOT (SMALLP BYTE2))
(ILESSP BYTE2 128))
(RETURN))
(SETQ BYTE3 (\BIN STREAM))
(CL:WHEN (OR (NOT (SMALLP BYTE3))
(ILESSP BYTE3 128))
(RETURN))
(SETQ BYTE4 (\BIN STREAM))
(CL:WHEN (OR (NOT (SMALLP BYTE4))
(ILESSP BYTE4 128))
(RETURN))
(RETURN 4)
ELSEIF (IGEQ BYTE1 (LLSH 7 5))
THEN (* ; "3 bytes")
(SETQ BYTE2 (\BIN STREAM))
(CL:WHEN (OR (NOT (SMALLP BYTE2))
(ILESSP BYTE2 128))
(RETURN))
(SETQ BYTE3 (\BIN STREAM))
(CL:WHEN (OR (NOT (SMALLP BYTE3))
(ILESSP BYTE3 128))
(RETURN))
(RETURN 3)
ELSE (* ; " 2 bytes")
(SETQ BYTE2 (\BIN STREAM))
(CL:WHEN (OR (NOT (SMALLP BYTE2))
(ILESSP BYTE2 128))
(RETURN NIL))
(RETURN 2)))])
(HEXSTRING
[LAMBDA (N WIDTH) (* ; "Edited 23-Jul-2020 08:28 by rmk:")
(* ; "Edited 20-Dec-93 17:51 by rmk:")
@@ -1068,23 +1152,24 @@
ELSE (ERROR "CHARCODE too big for UTF8" CHARCODE])
(NUTF8CODEBYTES
[LAMBDA (N) (* ; "Edited 28-Jun-2022 00:02 by rmk")
[LAMBDA (BYTE) (* ; "Edited 8-Jan-2024 10:57 by rmk")
(* ; "Edited 28-Jun-2022 00:02 by rmk")
(* ; "Edited 10-Aug-2020 12:35 by rmk:")
(* ;; "Returns the number of bytes needed to encode N in UTF8, ")
(* ;; "Returns the number of bytes needed to encode in UTF8 a number headed by BYTE. ")
(IF (ILESSP N 128)
(IF (ILESSP BYTE 128)
THEN 1
ELSEIF (ILESSP N 2048)
ELSEIF (ILESSP BYTE 2048)
THEN (* ; "x800")
2
ELSEIF (ILESSP N 65536)
ELSEIF (ILESSP BYTE 65536)
THEN (* ; "x10000")
3
ELSEIF (ILESSP N 2097152)
ELSEIF (ILESSP BYTE 2097152)
THEN (* ; "x200000")
4
ELSE (SHOULDNT])
ELSE (ERROR "INVALID UTF-8 HEADER BYTE"])
(NUTF8STRINGBYTES
[LAMBDA (STRING RAWFLG) (* ; "Edited 10-Aug-2020 09:06 by rmk:")
@@ -1160,15 +1245,54 @@
)
(DEFINEQ
(\UTF8.FETCHCODE
[LAMBDA (CODESIZE BUFFER BYTEOFFSET) (* ; "Edited 28-Dec-2023 13:32 by rmk")
(* ; "Edited 6-Aug-2021 16:02 by rmk:")
(* ; "Edited 6-Aug-2020 17:13 by rmk:")
(* ;; "Decodes a UTF8 byte sequence of size CODESIZE in BUFFER starting at BYTEOFFSET.")
(* ;; "The validity of the thesize, buffer, and offset are guaranteed by the caller.")
(LET ((BYTE1 (\GETBASEBYTE BUFFER BYTEOFFSET))
BYTE2 BYTE3 BYTE4)
(SELECTQ CODESIZE
(2 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
(LOGOR (LLSH (LOADBYTE BYTE1 0 5)
6)
(LOADBYTE BYTE2 0 6)))
(3 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
(SETQ BYTE3 (\UTF8.GETBASEBYTE BUFFER (IPLUS 2 BYTEOFFSET)))
(LOGOR (LLSH (LOADBYTE BYTE1 0 4)
12)
(LLSH (LOADBYTE BYTE2 0 6)
6)
(LOADBYTE BYTE3 0 6)))
(4 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
(SETQ BYTE3 (\UTF8.GETBASEBYTE BUFFER (IPLUS 2 BYTEOFFSET)))
(SETQ BYTE4 (\UTF8.GETBASEBYTE BUFFER (IPLUS 3 BYTEOFFSET)))
(LOGOR (LLSH (LOADBYTE BYTE1 0 3)
18)
(LLSH (LOADBYTE BYTE2 0 6)
12)
(LLSH (LOADBYTE BYTE3 0 6)
6)
(LOADBYTE BYTE4 0 6)))
(1 BYTE1)
(SHOULDNT])
)
(DEFINEQ
(SHOWCHARS
[LAMBDA (FROMCHAR TOCHAR FONT) (* ; "Edited 1-Aug-2020 09:27 by rmk:")
[LAMBDA (FROMCHAR TOCHAR FONT) (* ; "Edited 26-Jan-2024 14:18 by mth")
(* ; "Edited 1-Aug-2020 09:27 by rmk:")
(RESETFORM (DSPFONT (OR FONT '(CLASSIC 12))
T)
(CL:WHEN (AND (SMALLP FROMCHAR)
(NOT TOCHAR))
(* ;;
 "If a small number, assume it's an octal (in decimal) character set, no need for string quotes")
 "If a small number, assume it's an octal (in decimal) character set, no need for string quotes")
(SETQ TOCHAR (CONCAT FROMCHAR "," 376))
(SETQ FROMCHAR (CONCAT FROMCHAR "," 41)))
@@ -1178,16 +1302,16 @@
(SETQ TOCHAR (CL:IF TOCHAR
(CHARCODE.DECODE TOCHAR)
FROMCHAR)))
(FOR C FROM FROMCHAR TO TOCHAR UNLESS (AND (IGEQ (LOGAND C 255)
127)
(ILEQ (LOGAND C 255)
(PLUS 128 33)))
DO (PRINTOUT T .P2 (CONCAT (OCTALSTRING (LRSH CODE 8))
","
(OCTALSTRING (LOGAND CODE 255)))
10
(CHARACTER C)
T])
(for C from FROMCHAR to TOCHAR unless (AND (IGEQ (LOGAND C 255)
127)
(ILEQ (LOGAND C 255)
(PLUS 128 33)))
do (PRINTOUT T .P2 (CONCAT (OCTALSTRING (LRSH C 8))
","
(OCTALSTRING (LOGAND C 255)))
10
(CHARACTER C)
T])
)
(DECLARE%: EVAL@COMPILE DONTCOPY
@@ -1214,16 +1338,19 @@
(TRANSLATION-MASK (SUB1 TRANSLATION-SEGMENT-SIZE)))
)
)
(PUTPROPS UNICODE FILETYPE :TCOMPL)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3717 17808 (UTF8.OUTCHARFN 3727 . 6558) (UTF8.INCCODEFN 6560 . 12050) (UTF8.PEEKCCODEFN
12052 . 16826) (\UTF8.BACKCCODEFN 16828 . 17806)) (17809 21590 (UTF16BE.OUTCHARFN 17819 . 18643) (
UTF16BE.INCCODEFN 18645 . 19544) (UTF16BE.PEEKCCODEFN 19546 . 20617) (\UTF16BE.BACKCCODEFN 20619 .
21588)) (21620 23681 (MAKE-UNICODE-FORMATS 21630 . 23679)) (23778 25084 (UNICODE.UNMAPPED 23788 .
25082)) (25085 25621 (XCCS-UTF8-AFTER-OPEN 25095 . 25619)) (26454 26803 (XTOUCODE 26464 . 26632) (
UTOXCODE 26634 . 26801)) (26843 42965 (READ-UNICODE-MAPPING-FILENAMES 26853 . 27954) (
READ-UNICODE-MAPPING 27956 . 31254) (WRITE-UNICODE-MAPPING 31256 . 35473) (WRITE-UNICODE-INCLUDED
35475 . 40197) (WRITE-UNICODE-MAPPING-HEADER 40199 . 41431) (WRITE-UNICODE-MAPPING-FILENAME 41433 .
42963)) (46178 54657 (MAKE-UNICODE-TRANSLATION-TABLES 46188 . 54655)) (55074 63100 (HEXSTRING 55084 .
56245) (UTF8HEXSTRING 56247 . 58452) (NUTF8CODEBYTES 58454 . 59239) (NUTF8STRINGBYTES 59241 . 59722) (
XTOUSTRING 59724 . 62735) (XCCSSTRING 62737 . 63098)) (63101 64570 (SHOWCHARS 63111 . 64568)))))
(FILEMAP (NIL (4111 18202 (UTF8.OUTCHARFN 4121 . 6952) (UTF8.INCCODEFN 6954 . 12444) (UTF8.PEEKCCODEFN
12446 . 17220) (\UTF8.BACKCCODEFN 17222 . 18200)) (18203 21984 (UTF16BE.OUTCHARFN 18213 . 19037) (
UTF16BE.INCCODEFN 19039 . 19938) (UTF16BE.PEEKCCODEFN 19940 . 21011) (\UTF16BE.BACKCCODEFN 21013 .
21982)) (22014 24295 (MAKE-UNICODE-FORMATS 22024 . 24293)) (24392 25698 (UNICODE.UNMAPPED 24402 .
25696)) (25699 26375 (XCCS-UTF8-AFTER-OPEN 25709 . 26373)) (27831 28180 (XTOUCODE 27841 . 28009) (
UTOXCODE 28011 . 28178)) (28220 45174 (READ-UNICODE-MAPPING-FILENAMES 28230 . 30936) (
READ-UNICODE-MAPPING 30938 . 33914) (WRITE-UNICODE-MAPPING 33916 . 37666) (WRITE-UNICODE-INCLUDED
37668 . 42390) (WRITE-UNICODE-MAPPING-HEADER 42392 . 43640) (WRITE-UNICODE-MAPPING-FILENAME 43642 .
45172)) (48488 56912 (MAKE-UNICODE-TRANSLATION-TABLES 48498 . 56910)) (57417 68615 (UTF-8.VALIDATE
57427 . 60429) (HEXSTRING 60431 . 61592) (UTF8HEXSTRING 61594 . 63799) (NUTF8CODEBYTES 63801 . 64754)
(NUTF8STRINGBYTES 64756 . 65237) (XTOUSTRING 65239 . 68250) (XCCSSTRING 68252 . 68613)) (68616 70420 (
\UTF8.FETCHCODE 68626 . 70418)) (70421 71931 (SHOWCHARS 70431 . 71929)))))
STOP

Binary file not shown.

BIN
library/UNICODE.TEDIT Normal file

Binary file not shown.

View File

@@ -1,98 +0,0 @@
This file describes the UNICODE Lisp Library package.
Contributed by Ron Kaplan, August 2020.
The UNICODE library package defines external file formats that enable Medley to read and write files where 16 bit character codes are represented as UTF8 byte sequences or big-endian UTF16 byte-pairs. It also provides for character codes to be converted (on reading) from Unicode codes to equivalent codes in the Medley-internal Xerox Character Code Standard (XCCS) and (on writing) from XCCS codes to equivalent Unicode codes.
Four external formats are defined when the package is loaded:
:UTF8 codes are represented as UTF8 byte sequences and XCCS/Unicode character
conversion takes place.
:UTF16BE codes are represented as 2-byte pairs, with the high order by appearing
first in the file, and characters are converted.
The two other external formats translate byte sequences into codes, but do not translate the codes. These allow Medley to see and process characters in their native encoding.
:UTF8-RAW codes are represented as UTF8 byte sequences, but character conversion
does not take place.
:UTF16BE-RAW codes are represented as big-ending 2-byte pairs but there is no
conversion.
These formats all define the end-of-line convention (mostly for writing) for the external files according to the variable EXTERNALEOL (LF, CR, CRLF), with LF the default.
The external format can be specified as a parameter when a stream is opened:
(OPENSTREAM 'foo.txt 'INPUT 'OLD '((EXTERNALFORMAT :UTF8)))
(CL:OPEN 'foo.txt :DIRECTION :INPUT :EXTERNAL-FORMAT :UTF8)
The function STREAMPROP obtains or changes the external format of an open stream:
(STREAMPROP stream 'EXTERNALFORMAT) -> :XCCS
(STREAMPROP stream 'EXTERNALFORMAT :UTF8) -> :XCCS
In the latter case, the stream's format is changed to :UTF8 and the previous value is returned, in this example it is Medley's historical default format :XCCS.
Entries can be placed on the variable *DEFAULT-EXTERNALFORMATS* to change the external format that is set by default when a file is opened on a particular device. Loading UNICODE executes
(PUSH *DEFAULT-EXTERNALFORMATS* '(UNIX :UTF8))
so that all files opened (by OPENSTREAM, CL:OPEN, etc.) on the UNIX file device will be initialized with :UTF8. Note that the UNIX and DSK file devices reference the same files (although some caution is needed because {UNIX} does not simulate Medley versioning), but the device name in a file name ({UNIX}/Users/... vs. {DSK}/Users/...) selects one or the other. The default setting above applies only to files specified with {UNIX}; a separate default entry for DSK must be established to change its default from :XCCS.
The user can also specify the external format on a per-stream basis by putting a function on the list STREAM-AFTER-OPEN-FNS. After OPENSTREAM opens a stream and just before it is returned to the calling function, the functions on that list are applied in order to arguments STREAM, ACCESS, PARAMETERS. They can examine and/or change the properties of the stream, in particular, by calling STREAMPROP to change the external format from its device default.
The XCCS/Unicode mapping tables are defined by the code-mapping files for particular XCCS character sets. These are typically located in the Library sister directory
../Unicode/Xerox/
and the variable UNICODEDIRECTORIES is initialized with a globally valid reference to that path. The global reference is constructed by prepending the value of the Unix environment-variable "MEDLEYDIR" to the suffix /Unicode/Xerox/. MEDLEYDIR should be set by the Medley start-up shell script (e.g. /Users/kaplan/local/medley3.5/lispcore/)
The mapping files have conventional names of the form XCCS-<charsetnum>=<charsetname>.TXT, for example, XCCS-0=LATIN.TXT, XCCS-357=SYMBOLS4.TXT. The translations used by the external formats are read from these files by the function
(READ-UNICODE-MAPPING FILESPEC NOPRINT NOERROR)
where FILESPEC can be a list of files, charset octal strings ("0" "357"), or XCCS charset names (LATIN EXTENDED-LATIN). Reading will be silent if NOPRINT, and the process will not abort if an error occurs and NOERROR. The value is a flat list of the mappings for all the character sets, with elements of the form (XCCC-code Unicode-code).
When UNICODE is loaded the mappings for the character sets specified in the variable DEFAULT-XCCS-CHARSETS are installed. This is initialized to
(LATIN SYMBOLS1 SYMBOLS2 EXTENDED-LATIN FORMS SYMBOLS3 SYMBOLS4 ACCENTED-LATIN GREEK)
but DEFAULT-XCCS-CHARSETS can be set to a different collection before UNICODE is loaded.
The internal translation tables used by the external formats are constructed from a list of correspondence pairs by the function
(MAKE-UNICODE-TRANSLATION-TABLES MAPPING [FROM-XCCS-VAR][TO-XCCS-VAR])
This returns a list of two arrays (XCCS-to-Unicode Unicode-to-XCCS)containing the relevant translation information organized for rapid access. If the optional from/to-variables arguments are provide, they are the names of variables whose top-level values will be set to these arrays, for convenience. For the external formats defined above, these variables are *XCCSTOUNICODE* and *UNICODETOXCCS*.
The macro
(UNICODE.TRANSLATE CODE TRANSLATION-TABLE)
is used by the external formats to perform the mappings described by the translation-tables.
The following utilities are provided for lower-level manipulation of codes and strings
(XTOUCODE XCCSCODE) -> corresponding Unicode
(UTOXCODE UNICODE) -> corresponding XCCS code
(NUTF8CODEBYTES N) -> number of bytes in the UTF8 representation of N
(NUTF8STRINGBYTES STRING RAWFLG) -> number of UTF8 bytes in the UTF8
representation of STRING, translating XCCS to Unicode unless RAWFLG.
(XTOUSTRING XCCSSTRING RAWFLG) -> The string of bytes in the UTF8 representation
of the characters in XCCSSTRING (= the bytes in its UTF8 file encoding)
(HEXSTRING N WIDTH) -> the hex string for N, padded to WIDTH
The UNICODE file also contains a function for writing a mapping file given a list of mapping pairs. The function
(WRITE-TRANSLATION-TABLE MAPPING [INCLUDEDCHARSETS] [FILE])
produces one or more mapping files for the mapping-pairs in mapping. If the optional FILE argument is provided, then a single file with that name will be produced and contain all the mappings for all the character sets in MAPPING. If FILE and INCLUDEDCHARSETS are not provided, then all of the mappings will again go to a single file with a composite name XCCS-csn1,csn2,csn3.TXT. Each cs may be a single charset number, or a range of adjacent charset numbers. For example, if the mappings contain entries for characters in charset LATIN, SYMBOLS1, SYMBOLS2, and SYMBOLS3, the file name will be XCCS-0,41-43.TXT.
If INCLUDEDCHARSETS is provided, it specifies possibly a subset of the mappings in MAPPING for which files should be produced. This provides an implicit subsetting capability.
Finally, if FILE is not provided and INCLUDEDCHARSETS is T, then a separate file will be produced for each of the character sets, essentially a way of splitting a collection of character-set mappings into separate canonically named files (e.g. XCCS-357=SYMBOLS4.TXT).

View File

@@ -1,28 +1,41 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "18-Jan-2023 20:36:10" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;7 5091
(FILECREATED "13-Nov-2023 12:57:10" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;26 16663
:CHANGES-TO (FNS ShellBrowser ShellBrowse ShellOpen)
(VARS UNIXUTILSCOMS)
(FUNCTIONS ShellWhich)
:CHANGES-TO (FNS ShellBrowser)
:PREVIOUS-DATE "18-Jan-2023 13:22:28" {DSK}<home>frank>il>medley>gmedley>greetfiles>UNIXUTILS.;1
:PREVIOUS-DATE "11-Nov-2023 09:06:39" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;25
)
(PRETTYCOMPRINT UNIXUTILSCOMS)
(RPAQQ UNIXUTILSCOMS ((GLOBALVARS ShellBrowser)
(INITVARS (ShellBrowser))
(FUNCTIONS ShellCommand ShellWhich)
(FNS ShellBrowser ShellBrowse)))
(RPAQQ UNIXUTILSCOMS
((DECLARE%: EVAL@COMPILE DONTCOPY (* ; "For PROCESS-COMMAND")
(FILES (FROM LOADUPS)
EXPORTS.ALL))
(GLOBALVARS ShellBrowser ShellOpener)
(INITVARS (ShellBrowser)
(ShellOpener))
(FUNCTIONS ShellCommand ShellWhich)
(ADDVARS (MEDLEY-INIT-VARS (ShellBrowser)
(ShellOpener)))
(FNS ShellBrowser ShellBrowse ShellOpener ShellOpen PROCESS-COMMAND SLASHIT UNIX-FILE-NAME)
(PROPS (UNIXUTILS FILETYPE))))
(DECLARE%: EVAL@COMPILE DONTCOPY
(FILESLOAD (FROM LOADUPS)
EXPORTS.ALL)
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS ShellBrowser)
(GLOBALVARS ShellBrowser ShellOpener)
)
(RPAQ? ShellBrowser )
(RPAQ? ShellOpener )
(CL:DEFUN ShellCommand (Cmd &OPTIONAL (Output T))
(CL:WITH-OPEN-STREAM (s (CREATE-PROCESS-STREAM Cmd))
(CL:TAGBODY [SETFILEINFO s 'ENDOFSTREAMOP #'(CL:LAMBDA (s)
@@ -34,62 +47,59 @@
(CL:DEFUN ShellWhich (Cmd) (* ; "Edited 18-Jan-2023 13:19 by FGH")
[CL:WITH-OPEN-STREAM (S (OPENSTREAM '{NODIRCORE} 'BOTH))
(ShellCommand (CONCAT "which " Cmd)
(ShellCommand (CONCAT "command -v " Cmd)
S)
(COND
((EQ (GETEOFPTR S)
0)
NIL)
(T (SETFILEPTR S 0)
(MKSTRING (READ S])
(RSTRING S])
(ADDTOVAR MEDLEY-INIT-VARS (ShellBrowser)
(ShellOpener))
(DEFINEQ
(ShellBrowser
[LAMBDA NIL (* ; "Edited 18-Jan-2023 20:30 by FGH")
(OR ShellBrowser (SETQ ShellBrowser (LET (CMDPATH)
(if (STRPOS "darwin" (OR (UNIX-GETENV "OSTYPE")
(UNIX-GETENV "PATH")))
then
(* ;; " MacOS")
"open"
elseif (SETQ CMDPATH (ShellWhich "wslview"))
then
(* ;; "windows with WSL")
(* ;; "Figure out the browser to use for the ShellOpen/ShellBrowse functions. ")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "xdg-open"))
then
(* ;; "Linux systems with xdg-utils installed ")
(* ;; " Ordinarily, this would be the same as the generic ShellOpener.")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "git"))
then
(* ;; " Systems with git installed")
(* ;; " But if a generic ShellOpener is not found, then there are some additional")
(CONCAT CMDPATH " web--browse")
(* ; "")
elseif (SETQ CMDPATH (ShellWhich "lynx"))
then
(* ;; " Systems with lynx installed")
(* ;; " possibilities that will work for http/https URLs. If one of these exists return it.")
(LET (CMDPATH2)
(if (SETQ CMDPATH2 (ShellWhich "xterm"))
then (CONCAT CMDPATH2 " -e " CMDPATH)
else (LIST CMDPATH)))
else
(* ;;
 " Out of ideas - just return a dummy function")
(OR ShellBrowser (SETQ ShellBrowser
(if (NOT (STREQUAL (ShellOpener)
"true"))
then ShellOpener
else (LET (CMDPATH)
(if (SETQ CMDPATH (ShellWhich "git"))
then
(* ;; " Systems with git installed")
"true"])
(CONCAT CMDPATH " web--browse")
elseif (SETQ CMDPATH (ShellWhich "lynx"))
then
(* ;; " Systems with lynx installed")
(LET (CMDPATH2)
(if (SETQ CMDPATH2 (ShellWhich "xterm"))
then (CONCAT CMDPATH2 " -e " CMDPATH)
else (LIST CMDPATH)))
else
(* ;; " Out of ideas - just return a dummy function")
"true"])
(ShellBrowse
[LAMBDA (URL) (* ; "Edited 18-Jan-2023 20:32 by FGH")
(* ;; " Open the web page specified by URL using an external browser via shell call")
(* ;;
 " URL must start with http:// or https:// (case ireelevant) or this function will just return NIL.")
(* ;; " URL must start with http:// or https:// or file:/// (case ireelevant) or this function will just return NIL.")
(* ;; " Returns T otherwise.")
@@ -97,17 +107,218 @@
(if (OR (EQ (STRPOS "http://" (L-CASE URL))
1)
(EQ (STRPOS "https://" (L-CASE URL))
1)
(EQ (STRPOS "file:///" (L-CASE URL))
1))
then (ShellOpen URL)
else NIL])
(ShellOpener
[LAMBDA NIL
(* ;; "Find an %"opener%" that will open files (and URLs) using the appropriate/default app on this machine")
(OR ShellOpener (SETQ ShellOpener (LET (CMDPATH)
(if (SETQ CMDPATH (ShellWhich "wslview"))
then
(* ;; "windows with WSL")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "cygstart"))
then
(* ;; "windows with cygwin")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "xdg-open"))
then
(* ;; "Linux systems with xdg-utils installed ")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "open"))
then
(* ;; " MacOS open")
CMDPATH
else
(* ;;
 " Out of ideas - just return a dummy function")
"true"])
(ShellOpen
[LAMBDA (FilenameOrURL)
(* ;; "Open the file or URL using the generic %"opener%" for this machine via a shell call.")
(* ;; " If FilenameOrURL starts with %"http://%" or %"https://%" or %"file:///%", then we use (ShellBrowser) as")
(* ;; " the %"opener%" (which includes some browsers on a machine without a generic opener).")
(* ;;
 " Otherwise FilenameOrURL is assumed to be a filename and will be opened using (ShellOpener).")
(* ;; " Returns T is all goes well; returns an error string if all does not go well")
(RANDSET T)
(SETQ FilenameOrURL (MKSTRING FilenameOrURL))
(if (OR (EQ (STRPOS "http://" (L-CASE FilenameOrURL))
1)
(EQ (STRPOS "https://" (L-CASE FilenameOrURL))
1)
(EQ (STRPOS "file://" (L-CASE FilenameOrURL))
1))
then (LET ((BROWSER (ShellBrowser)))
(if (LISTP BROWSER)
then (CHAT 'SHELL NIL (CONCAT (CAR BROWSER)
" '" URL "'"))
else (ShellCommand (CONCAT BROWSER " '" URL "'"
" >>/tmp/ShellBrowser-warnings-$$.txt")))
T)
else NIL])
(if (NOT (STREQUAL BROWSER "true"))
then (if (LISTP BROWSER)
then (CHAT 'SHELL NIL (CONCAT (CAR BROWSER)
" '" FilenameOrURL "'"))
else (ShellCommand (CONCAT BROWSER " '" FilenameOrURL "'"
" >>/tmp/ShellBrowser-warnings-$$.txt"))
T)
else (CONCAT "Unable to find a browser to open: " FilenameOrURL)))
else
(LET*
((OPENER (ShellOpener))
(FULLNAME (FULLNAME FilenameOrURL)))
(if (NOT FULLNAME)
then (CONCAT "File not found: " FilenameOrURL)
elseif (STREQUAL OPENER "true")
then (CONCAT "Unable to find a file opener to open: " FilenameOrURL)
else (LET* ((VERSION.SPECIFIED (FILENAMEFIELD FilenameOrURL 'VERSION))
(UNPACKED (UNPACKFILENAME.STRING FULLNAME))
(NEWNAME (CONCAT (LISTGET UNPACKED 'NAME)
"~"
(LISTGET UNPACKED 'VERSION)
"~"))
(EXTENSION (LISTGET UNPACKED 'EXTENSION))
[UNVERSIONED (LET (FN (UNPACKED (COPY UNPACKED)))
(LISTPUT UNPACKED 'VERSION NIL)
(LISTPUT UNPACKED 'HOST NIL)
(SETQ FN (PACKFILENAME.STRING UNPACKED))
(if (STREQUAL (SUBSTRING FN -1)
".")
then (SETQ FN (SUBSTRING UNIXFILE 1 -2)))
(SETQ FN (SLASHIT FN]
(UNVERSIONED.EXISTS (INFILEP (CONCAT "{UNIX}" UNVERSIONED)))
(TMPDIR (CONCAT "/tmp/" (RAND 1000 9999)))
(TARGETFILE.LISP (PACKFILENAME.STRING 'HOST "{UNIX}" 'DIRECTORY TMPDIR
'NAME NEWNAME 'EXTENSION EXTENSION))
(TARGETFILE.UNIX (SLASHIT (PACKFILENAME.STRING 'HOST NIL 'DIRECTORY TMPDIR
'NAME NEWNAME 'EXTENSION EXTENSION)))
(UNIXFILE NIL))
(DECLARE (SPECVARS UNIXFILE))
(if (OR VERSION.SPECIFIED (NOT UNVERSIONED.EXISTS))
then (COPYFILE FULLNAME TARGETFILE.LISP)
(SETQ UNIXFILE TARGETFILE.UNIX)
else (SETQ UNIXFILE UNVERSIONED))
(CL:WITH-OPEN-STREAM
(SHELLSTREAM (OPENSTREAM (CONCAT "{CORE}SHELLOUT" (RAND 1000 9999))
'BOTH))
(ShellCommand (CONCAT OPENER " '" UNIXFILE "'"
" >>/tmp/ShellOpener-warnings-$$.txt")
SHELLSTREAM)
(if (EQ (GETFILEPTR SHELLSTREAM)
0)
then T
else (LET* ((OUTSTRING (ALLOCSTRING (GETFILEPTR SHELLSTREAM)
" ")))
(CL:WITH-OPEN-STREAM (STRINGSTREAM (OPENSTRINGSTREAM OUTSTRING
'OUTPUT))
(SETFILEPTR SHELLSTREAM 0)
(CL:TAGBODY [SETFILEINFO SHELLSTREAM 'ENDOFSTREAMOP
#'(CL:LAMBDA (s)
(GO OUT]
(CL:LOOP (PRINTCCODE (READCCODE SHELLSTREAM)
STRINGSTREAM))
OUT))
OUTSTRING])
(PROCESS-COMMAND
[LAMBDA (CMD) (* ; "Edited 17-Jul-2022 08:17 by rmk")
(* ;; "This sets up an asynchronous process and waits until it returns with an exit code. Typically 0 means success.")
(CL:WITH-OPEN-STREAM (PS (CREATE-PROCESS-STREAM CMD))
(BIND CODE WHILE (EQ T (SETQ CODE (OR (SUBRCALL UNIX-HANDLECOMM 7 (fetch (STREAM F1)
of PS))
0))) DO (BLOCK) FINALLY (RETURN CODE])
(SLASHIT
[LAMBDA (X LCASEDIRS NOHOST) (* ; "Edited 23-Sep-2023 15:27 by rmk")
(* ;; "It would also be nice to use the generic unpackfilename/packfilename tools. But packfilename sticks in brackets again, and sticks a dot on when removing the version.")
(* ;; "Perhaps this should be a per file-device operation that maps device names into the local file system.")
(* ;; "This is a first approximation to a utility that converts a filename X on a host whose files physically reside in the local Unix file system into the strings that shell commands can use to reference that file. For now, this just involves replacing directory brackets with /, removing the host, and perhaps lower-casing the directory. It probably should be extended to deal with version number translation, for now it just keeps the ; version. ")
(LET [LASTDIRPOS SLASHED (DIRPOS (ADD1 (OR (STRPOS "}" X)
0]
[SETQ SLASHED (CONCATCODES (for I C from DIRPOS while (SETQ C (NTHCHARCODE X I))
collect (SELCHARQ C
((< >)
(SETQ LASTDIRPOS I)
(CHARCODE /))
(/ (SETQ LASTDIRPOS I)
C)
C]
(CL:WHEN (AND LCASEDIRS LASTDIRPOS)
(SETQ LASTDIRPOS (ADD1 (IDIFFERENCE LASTDIRPOS DIRPOS)))
(SETQ SLASHED (CONCAT (L-CASE (SUBSTRING SLASHED 1 LASTDIRPOS))
(OR (SUBSTRING SLASHED (ADD1 LASTDIRPOS))
""))))
(CL:IF (OR (EQ DIRPOS 1)
NOHOST)
SLASHED
(CONCAT (SUBSTRING X 1 (SUB1 DIRPOS))
SLASHED))])
(UNIX-FILE-NAME
[LAMBDA (FILE ACCESS COPY) (* ; "Edited 1-Oct-2023 20:52 by rmk")
(* ;; "Tries to return the string that would reference FILE in a Unix shell, for the use of PROCESS-COMMAND and ShellCommand. If VERSION is 1, it assumes that the Unix file is doesn't have the Medley version convention. If FILE does not have a corresponding Unix name, COPY is non-NIL, and ACCESS is INPUT, FILE will be copied to a unix tmp file (with COPY in its name) and that name will be returned.")
(CL:WHEN (\GETSTREAM FILE ACCESS T)
(SETQ FILE (OR (FULLNAME FILE)
FILE))) (* ; "Might catch NODIRCORE")
(CL:WHEN FILE
(SETQ FILE (TRUEFILENAME FILE))
(CL:UNLESS (STREAMP FILE)
[SETQ FILE (\GETFILENAME FILE (SELECTQ ACCESS
(OUTPUT 'NEW)
(INPUT 'OLD)
(NIL (SETQ ACCESS 'INPUT)
'OLD)
(\ILLEGAL.ARG ACCESS])
[SELECTQ (FILENAMEFIELD FILE 'HOST)
(UNIX [SUBSTRING FILE (ADD1 (CONSTANT (NCHARS "{UNIX}"])
(DSK (LET [(VERSION (FILENAMEFIELD FILE 'VERSION]
(SETQ FILE (SLASHIT (PACKFILENAME 'HOST NIL 'VERSION NIL 'BODY FILE)))
(CL:IF (AND VERSION (IGREATERP VERSION 1))
(CONCAT FILE (CL:IF (FILENAMEFIELD FILE 'EXTENSION)
"."
"")
"~" VERSION "~")
FILE)))
(CL:WHEN (AND COPY (EQ ACCESS 'INPUT)
FILE)
(RESETLST
(CL:WHEN (\GETSTREAM FILE 'INPUT T) (* ; "Hope is randaccess")
[RESETSAVE (GETFILEPTR FILE)
`(PROGN (SETFILEPTR ,FILE OLDVALUE])
(COPYFILE FILE (CONCAT "{UNIX}/tmp/medley-" (L-CASE COPY)
"-"
(IDATE)
"-"
(RAND)
(CL:IF (FILENAMEFIELD FILE 'EXTENSION)
(CONCAT "." (FILENAMEFIELD FILE 'EXTENSION))
"")))))])])
)
(PUTPROPS UNIXUTILS FILETYPE CL:COMPILE-FILE)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (764 1137 (ShellCommand 764 . 1137)) (1139 1538 (ShellWhich 1139 . 1538)) (1539 5068 (
ShellBrowser 1549 . 4072) (ShellBrowse 4074 . 5066)))))
(FILEMAP (NIL (1146 1519 (ShellCommand 1146 . 1519)) (1521 1918 (ShellWhich 1521 . 1918)) (2008 16585
(ShellBrowser 2018 . 3790) (ShellBrowse 3792 . 4477) (ShellOpener 4479 . 6167) (ShellOpen 6169 . 11324
) (PROCESS-COMMAND 11326 . 11939) (SLASHIT 11941 . 13983) (UNIX-FILE-NAME 13985 . 16583)))))
STOP

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 4-Aug-2022 09:58:03" {DSK}<home>larry>medley>library>SKETCH.;2 491064
(FILECREATED " 5-Dec-2023 00:44:13" {WMEDLEY}<library>sketch>SKETCH.;5 491114
:CHANGES-TO (FNS SKETCH.COMMANDMENU.ITEMS)
:EDIT-BY rmk
:PREVIOUS-DATE " 1-Feb-2022 09:17:12" {DSK}<home>larry>medley>library>SKETCH.;1)
:CHANGES-TO (VARS SKETCHCOMS)
:PREVIOUS-DATE "19-Oct-2023 23:55:27" {WMEDLEY}<library>sketch>SKETCH.;4)
(* ; "
Copyright (c) 1984-1988, 1990, 1992-1993 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT SKETCHCOMS)
@@ -24,7 +22,7 @@ Copyright (c) 1984-1988, 1990, 1992-1993 by Venue & Xerox Corporation.
[MAP.PROCESSES (FUNCTION (LAMBDA (PROC PROCNAME PROCFORM)
(AND (EQ (CAR PROCFORM)
'\TEDIT2)
'\TEDIT1)
(SETQ TEDITFLG T]
(COND ((AND (BOUNDP 'ALL.SKETCHES)
(OR SKETCHFLG NOTECARDSFLG TEDITFLG))
@@ -244,10 +242,12 @@ To abort loading the new version of Sketch, type '^'."]
"Reads a file name and opens a sketch window onto the sketch it contains."
]
(VARS (BackgroundMenu))
(FILES SKETCHOPS SKETCHELEMENTS SKETCHEDIT SKETCHOBJ SKETCHBMELT)
(FILES SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY (FILES (LOADCOMP)
SKETCHOPS SKETCHELEMENTS SKETCHOBJ
SKETCHEDIT))
SKETCH-OPS SKETCH-ELEMENTS SKETCH-OBJ
SKETCH-EDIT))
(DECLARE%: EVAL@COMPILE DONTCOPY (FILES (FROM LOADUPS)
EXPORTS.ALL))
(* ;
 "recompute the sketch element types because loading SKETCH clobbers the previous ones.")
(P (INIT.BITMAP.ELEMENT)
@@ -263,10 +263,10 @@ To abort loading the new version of Sketch, type '^'."]
[COMS (* ;
 "to correct for a bug in the file package that marks LOADCOMPed file as changed")
(P (UNMARKASCHANGED 'SKETCH 'FILE)
(UNMARKASCHANGED 'SKETCHELEMENTS 'FILE)
(UNMARKASCHANGED 'SKETCHOPS 'FILE)
(UNMARKASCHANGED 'SKETCHEDIT 'FILE)
(UNMARKASCHANGED 'SKETCHOBJ 'FILE]
(UNMARKASCHANGED 'SKETCH-ELEMENTS 'FILE)
(UNMARKASCHANGED 'SKETCH-OPS 'FILE)
(UNMARKASCHANGED 'SKETCH-EDIT 'FILE)
(UNMARKASCHANGED 'SKETCH-OBJ 'FILE]
(COMS (* ;
 "add sketch as option to file browser edit command")
(FNS SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER)
@@ -286,7 +286,7 @@ To abort loading the new version of Sketch, type '^'."]
[MAP.PROCESSES (FUNCTION (LAMBDA (PROC PROCNAME PROCFORM)
(AND (EQ (CAR PROCFORM)
'\TEDIT2)
'\TEDIT1)
(SETQ TEDITFLG T]
(COND
((AND (BOUNDP 'ALL.SKETCHES)
@@ -8594,11 +8594,16 @@ Otherwise, type '^'.")
(RPAQQ BackgroundMenu NIL)
(FILESLOAD SKETCHOPS SKETCHELEMENTS SKETCHEDIT SKETCHOBJ SKETCHBMELT)
(FILESLOAD SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(FILESLOAD (LOADCOMP)
SKETCHOPS SKETCHELEMENTS SKETCHOBJ SKETCHEDIT)
SKETCH-OPS SKETCH-ELEMENTS SKETCH-OBJ SKETCH-EDIT)
)
(DECLARE%: EVAL@COMPILE DONTCOPY
(FILESLOAD (FROM LOADUPS)
EXPORTS.ALL)
)
@@ -8723,13 +8728,13 @@ Otherwise, type '^'.")
(UNMARKASCHANGED 'SKETCH 'FILE)
(UNMARKASCHANGED 'SKETCHELEMENTS 'FILE)
(UNMARKASCHANGED 'SKETCH-ELEMENTS 'FILE)
(UNMARKASCHANGED 'SKETCHOPS 'FILE)
(UNMARKASCHANGED 'SKETCH-OPS 'FILE)
(UNMARKASCHANGED 'SKETCHEDIT 'FILE)
(UNMARKASCHANGED 'SKETCH-EDIT 'FILE)
(UNMARKASCHANGED 'SKETCHOBJ 'FILE)
(UNMARKASCHANGED 'SKETCH-OBJ 'FILE)
@@ -8762,151 +8767,150 @@ Otherwise, type '^'.")
(ADDTOVAR LAMA SK.UNIONREGIONS SKETCH.CREATE)
)
(PUTPROPS SKETCH COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1986 1987 1988 1990 1992 1993))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (22128 85491 (SKETCH 22138 . 24243) (SKETCH.FROM.A.FILE 24245 . 24560) (SKETCHW.CREATE
24562 . 29136) (SKETCH.RESET 29138 . 30660) (SKETCHW.FIG.CHANGED 30662 . 31002) (SK.WINDOW.TITLE 31004
. 31391) (EDITSLIDE 31393 . 31799) (EDITSKETCH 31801 . 32125) (SK.PUT.ON.FILE 32127 . 33579) (
SK.OUTPUT.FILE.NAME 33581 . 33955) (SKETCH.PUT 33957 . 36855) (SK.GET.FROM.FILE 36857 . 37750) (
SK.INCLUDE.FILE 37752 . 40260) (SK.GET.IMAGEOBJ.FROM.FILE 40262 . 42465) (SKETCH.GET 42467 . 42774) (
ADD.SKETCH.TO.VIEWER 42776 . 45362) (FILENAMELESSVERSION 45364 . 45640) (SK.ADD.ELEMENTS.TO.SKETCH
45642 . 46156) (SKETCH.SET.A.DEFAULT 46158 . 53316) (SK.POPUP.SELECTIONFN 53318 . 53860) (
GETSKETCHWREGION 53862 . 54068) (SK.ADD.ELEMENT 54070 . 55649) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH
55651 . 57045) (SK.ELTS.BY.PRIORITY 57047 . 57343) (SK.ORDER.ELEMENTS 57345 . 57612) (
SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 57614 . 59108) (SK.ADD.ELEMENTS 59110 . 59634) (
SK.CHECK.WHENADDEDFN 59636 . 60366) (SK.APPLY.MENU.COMMAND 60368 . 61166) (SK.DELETE.ELEMENT1 61168 .
62746) (SK.MARK.DIRTY 62748 . 63414) (SK.MARK.UNDIRTY 63416 . 63747) (SK.MENU.AND.RETURN.FIELD 63749
. 64414) (SKETCH.SET.BRUSH.SHAPE 64416 . 65001) (SKETCH.SET.BRUSH.SIZE 65003 . 65509) (
SKETCHW.CLOSEFN 65511 . 67302) (SK.CONFIRM.DESTRUCTION 67304 . 68303) (SKETCHW.OUTFN 68305 . 68569) (
SKETCHW.REOPENFN 68571 . 68983) (MAKE.LOCAL.SKETCH 68985 . 69715) (MAP.SKETCHSPEC.INTO.VIEWER 69717 .
70927) (SKETCHW.REPAINTFN 70929 . 71757) (SKETCHW.REPAINTFN1 71759 . 72698) (SK.DRAWFIGURE.IF 72700 .
73222) (SKETCHW.SCROLLFN 73224 . 77417) (SKETCHW.RESHAPEFN 77419 . 79677) (SK.UPDATE.EVENT.SELECTION
79679 . 81734) (LIGHTGRAYWINDOW 81736 . 81899) (SK.ADD.SPACES 81901 . 82647) (SK.SKETCH.MENU 82649 .
82971) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 82973 . 83825) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 83827 . 84787)
(SK.RETURN.TTY 84789 . 85157) (SK.TAKE.TTY 85159 . 85489)) (85545 108873 (SKETCH.COMMANDMENU 85555 .
85892) (SKETCH.COMMANDMENU.ITEMS 85894 . 105977) (CREATE.SKETCHW.COMMANDMENU 105979 . 106399) (
SKETCHW.SELECTIONFN 106401 . 107504) (SKETCH.MONITORLOCK 107506 . 107977) (SK.EVAL.AS.PROCESS 107979
. 108592) (SK.EVAL.WITH.LOCK 108594 . 108871)) (108874 116678 (SK.FIX.MENU 108884 . 109978) (
SK.SET.UP.MENUS 109980 . 112281) (SK.INSURE.HAS.MENU 112283 . 112945) (SK.CREATE.STANDARD.MENU 112947
. 113392) (SK.ADD.ITEM.TO.MENU 113394 . 114069) (SK.GET.VIEWER.POPUP.MENU 114071 . 116272) (
SK.CLEAR.POPUP.MENU 116274 . 116676)) (116734 125556 (SKETCH.CREATE 116744 . 117530) (GETSKETCHPROP
117532 . 120589) (PUTSKETCHPROP 120591 . 124523) (CREATE.DEFAULT.SKETCH.CONTEXT 124525 . 125554)) (
125722 148618 (SK.COPY.BUTTONEVENTFN 125732 . 136960) (SK.BUTTONEVENT.MARK 136962 . 137345) (
SK.BUILD.IMAGEOBJ 137347 . 147262) (SK.BUTTONEVENT.OVERP 147264 . 147887) (SK.BUTTONEVENT.SAME.KEYS
147889 . 148616)) (148897 174712 (SK.SEL.AND.CHANGE 148907 . 149199) (SK.CHECK.WHENCHANGEDFN 149201 .
149907) (SK.CHECK.PRECHANGEFN 149909 . 150510) (SK.CHANGE.ELT 150512 . 150704) (SK.CHANGE.THING 150706
. 151957) (SKETCH.CHANGE.ELEMENTS 151959 . 153142) (SK.APPLY.SINGLE.CHANGEFN 153144 . 153717) (
SK.DO.CHANGESPECS 153719 . 155378) (SK.VIEWER.FROM.SKETCH.ARG 155380 . 155822) (SK.DO.CHANGESPEC1
155824 . 157699) (SK.CHANGEFN 157701 . 158281) (SK.READCHANGEFN 158283 . 158742) (SK.DEFAULT.CHANGEFN
158744 . 161216) (CHANGEABLEFIELDITEMS 161218 . 161865) (SK.APPLY.CHANGE.COMMAND 161867 . 162484) (
SK.DO.AND.RECORD.CHANGES 162486 . 163883) (SK.APPLY.CHANGE.COMMAND1 163885 . 165373) (
SK.ELEMENTS.CHANGEFN 165375 . 167699) (READ.POINT.TO.ADD 167701 . 168645) (GLOBAL.KNOT.FROM.LOCAL
168647 . 169107) (SK.ADD.KNOT.TO.ELEMENT 169109 . 170053) (SK.GROUP.CHANGEFN 170055 . 171267) (
SK.GROUP.CHANGEFN1 171269 . 174710)) (174879 188612 (ADD.ELEMENT.TO.SKETCH 174889 . 176595) (
ADD.SKETCH.VIEWER 176597 . 177265) (REMOVE.SKETCH.VIEWER 177267 . 177880) (ALL.SKETCH.VIEWERS 177882
. 178122) (SKETCH.ALL.VIEWERS 178124 . 178384) (VIEWER.BUCKET 178386 . 178537) (ELT.INSIDE.REGION?
178539 . 178866) (ELT.INSIDE.SKWP 178868 . 179159) (SCALE.FROM.SKW 179161 . 179411) (
SK.ADDELT.TO.WINDOW 179413 . 180273) (SK.CALC.REGION.VIEWED 180275 . 180653) (SK.DRAWFIGURE 180655 .
181944) (SK.DRAWFIGURE1 181946 . 182330) (SK.LOCAL.FROM.GLOBAL 182332 . 183567) (SKETCH.REGION.VIEWED
183569 . 186256) (SKETCH.VIEW.FROM.NAME 186258 . 186688) (SK.UPDATE.REGION.VIEWED 186690 . 187082) (
SKETCH.ADD.AND.DISPLAY 187084 . 187492) (SKETCH.ADD.AND.DISPLAY1 187494 . 187932) (SK.ADD.ITEM 187934
. 188266) (SKETCHW.ADD.INSTANCE 188268 . 188610)) (188653 201841 (SK.SEL.AND.DELETE 188663 . 189051)
(SK.ERASE.AND.DELETE.ITEM 189053 . 189472) (REMOVE.ELEMENT.FROM.SKETCH 189474 . 190585) (
SK.DELETE.ELEMENT 190587 . 191145) (SK.DELETE.ELEMENT2 191147 . 191808) (SK.DELETE.KNOT 191810 .
192101) (SK.SEL.AND.DELETE.KNOT 192103 . 193228) (SK.DELETE.ELEMENT.KNOT 193230 . 196437) (
SK.CHECK.WHENDELETEDFN 196439 . 197219) (SK.CHECK.PREEDITFN 197221 . 197705) (
SK.CHECK.END.INITIAL.EDIT 197707 . 198241) (SK.CHECK.WHENPOINTDELETEDFN 198243 . 199039) (SK.ERASE.ELT
199041 . 199377) (SK.DELETE.ELT 199379 . 199754) (SK.DELETE.ITEM 199756 . 200164) (DELFROMTCONC
200166 . 201839)) (201880 215714 (SK.COPY.ELT 201890 . 202260) (SK.SEL.AND.COPY 202262 . 202645) (
SK.COPY.ELEMENTS 202647 . 208275) (SK.ADD.COPY.OF.ELEMENTS 208277 . 210044) (
SK.GLOBAL.FROM.LOCAL.ELEMENTS 210046 . 210286) (SK.COPY.ITEM 210288 . 211085) (SK.INSERT.SKETCH 211087
. 215712)) (215754 245775 (SK.MOVE.ELT 215764 . 216039) (SK.MOVE.ELT.OR.PT 216041 . 216354) (
SK.APPLY.DEFAULT.MOVE 216356 . 216790) (SK.SEL.AND.MOVE 216792 . 217339) (SK.MOVE.ELEMENTS 217341 .
228213) (SKETCH.MOVE.ELEMENTS 228215 . 230146) (SKETCH.COPY.ELEMENTS 230148 . 232195) (
\SKETCH.COPY.ELEMENT 232197 . 232922) (SK.TRANSLATE.ELEMENT 232924 . 233407) (SK.COPY.GLOBAL.ELEMENT
233409 . 233620) (SK.MAKE.ELEMENT.MOVE.ARG 233622 . 234242) (SK.MAKE.ELEMENTS.MOVE.ARG 234244 . 234766
) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 234768 . 235837) (SK.SHOW.FIG.FROM.INFO 235839 . 236207) (
SK.MOVE.THING 236209 . 237115) (UPDATE.ELEMENT.IN.SKETCH 237117 . 239172) (SK.UPDATE.ELEMENT 239174 .
240733) (SK.UPDATE.ELEMENTS 240735 . 241454) (SK.UPDATE.ELEMENT1 241456 . 245356) (
SK.MOVE.ELEMENT.POINT 245358 . 245773)) (245838 268127 (SK.MOVE.POINTS 245848 . 246135) (
SK.SEL.AND.MOVE.POINTS 246137 . 246442) (SK.DO.MOVE.ELEMENT.POINTS 246444 . 255101) (
SK.MOVE.ITEM.POINTS 255103 . 256774) (SK.TRANSLATEPTSFN 256776 . 257160) (SK.TRANSLATE.POINTS 257162
. 258063) (SK.SELECT.MULTIPLE.POINTS 258065 . 263705) (SK.CONTROL.POINTS.IN.REGION 263707 . 265128) (
SK.ADD.PT.SELECTION 265130 . 265594) (SK.REMOVE.PT.SELECTION 265596 . 266213) (SK.ADD.POINT 266215 .
266838) (SK.ELTS.CONTAINING.PTS 266840 . 267465) (SK.HOTSPOTS.NOT.ON.LIST 267467 . 268125)) (268285
271081 (SK.SET.MOVE.MODE 268295 . 268966) (SK.SET.MOVE.MODE.POINTS 268968 . 269307) (
SK.SET.MOVE.MODE.ELEMENTS 269309 . 269653) (SK.SET.MOVE.MODE.COMBINED 269655 . 270005) (READMOVEMODE
270007 . 271079)) (271082 289837 (SK.ALIGN.POINTS 271092 . 271382) (SK.SEL.AND.ALIGN.POINTS 271384 .
271693) (SK.ALIGN.POINTS.LEFT 271695 . 271998) (SK.ALIGN.POINTS.RIGHT 272000 . 272305) (
SK.ALIGN.POINTS.TOP 272307 . 272608) (SK.ALIGN.POINTS.BOTTOM 272610 . 272917) (
SK.EVEN.SPACE.POINTS.IN.X 272919 . 273239) (SK.EVEN.SPACE.POINTS.IN.Y 273241 . 273561) (
SK.DO.ALIGN.POINTS 273563 . 284185) (SK.NTH.CONTROL.POINT 284187 . 284648) (
SK.GET.SELECTED.ELEMENT.STRUCTURE 284650 . 285316) (SK.CORRESPONDING.CONTROL.PT 285318 . 285872) (
SK.CONTROL.POINT.NUMBER 285874 . 286244) (SK.DO.ALIGN.SETVALUE 286246 . 289835)) (289901 303333 (
SKETCH.CREATE.GROUP 289911 . 290400) (SK.CREATE.GROUP1 290402 . 290949) (SK.UPDATE.GROUP.AFTER.CHANGE
290951 . 291740) (SK.GROUP.ELTS 291742 . 292023) (SK.SEL.AND.GROUP 292025 . 292411) (SK.GROUP.ELEMENTS
292413 . 294062) (SK.UNGROUP.ELT 294064 . 294348) (SK.SEL.AND.UNGROUP 294350 . 296019) (
SK.UNGROUP.ELEMENT 296021 . 296957) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 296959 . 297881) (
SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 297883 . 298894) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 298896 .
300236) (SK.UNIONREGIONS 300238 . 302604) (SKETCH.REGION.OF.SKETCH 302606 . 303022) (SK.FLASHREGION
303024 . 303331)) (303334 316805 (INIT.GROUP.ELEMENT 303344 . 304216) (GROUP.DRAWFN 304218 . 304668) (
GROUP.EXPANDFN 304670 . 306233) (GROUP.INSIDEFN 306235 . 306644) (GROUP.REGIONFN 306646 . 307041) (
GROUP.GLOBALREGIONFN 307043 . 307361) (GROUP.TRANSLATEFN 307363 . 309395) (GROUP.TRANSFORMFN 309397 .
312877) (GROUP.READCHANGEFN 312879 . 316803)) (316806 317814 (REGION.CENTER 316816 . 317417) (
REMOVE.LAST 317419 . 317812)) (317867 322974 (SK.MOVE.GROUP.CONTROL.PT 317877 . 318168) (
SK.SEL.AND.MOVE.CONTROL.PT 318170 . 319574) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 319576 . 321649) (
SK.READ.NEW.GROUP.CONTROL.PT 321651 . 322972)) (323233 327857 (SK.DO.GROUP 323243 . 324695) (
SK.CHECK.WHENGROUPEDFN 324697 . 325407) (SK.DO.UNGROUP 325409 . 326614) (SK.CHECK.WHENUNGROUPEDFN
326616 . 327203) (SK.GROUP.UNDO 327205 . 327528) (SK.UNGROUP.UNDO 327530 . 327855)) (328098 333020 (
SK.FREEZE.ELTS 328108 . 328392) (SK.SEL.AND.FREEZE 328394 . 328784) (SK.FREEZE.ELEMENTS 328786 .
329337) (SK.UNFREEZE.ELT 329339 . 329628) (SK.SEL.AND.UNFREEZE 329630 . 331166) (SK.UNFREEZE.ELEMENTS
331168 . 331727) (SK.FREEZE.UNDO 331729 . 331974) (SK.UNFREEZE.UNDO 331976 . 332223) (SK.DO.FREEZE
332225 . 332618) (SK.DO.UNFREEZE 332620 . 333018)) (333250 343060 (SKETCH.ELEMENTS.OF.SKETCH 333260 .
334095) (SKETCH.LIST.OF.ELEMENTS 334097 . 334815) (SKETCH.ADD.ELEMENT 334817 . 335892) (
SKETCH.DELETE.ELEMENT 335894 . 337626) (DELFROMGROUPELT 337628 . 338428) (SKETCH.ELEMENT.TYPE 338430
. 338779) (SKETCH.ELEMENT.CHANGED 338781 . 340349) (SK.ELEMENT.CHANGED1 340351 . 341002) (
SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341004 . 343058)) (343114 347726 (INSURE.SKETCH 343124 . 345739)
(LOCALSPECS.FROM.VIEWER 345741 . 346101) (SK.LOCAL.ELT.FROM.GLOBALPART 346103 . 346571) (
SKETCH.FROM.VIEWER 346573 . 346807) (INSPECT.SKETCH 346809 . 347134) (ELT.INSIDE.SKETCHWP 347136 .
347409) (SK.INSIDE.REGION 347411 . 347724)) (347727 352057 (MAPSKETCHSPECS 347737 . 348358) (
MAPCOLLECTSKETCHSPECS 348360 . 349109) (MAPSKETCHSPECSUNTIL 349111 . 349919) (MAPGLOBALSKETCHSPECS
349921 . 350622) (MAPGLOBALSKETCHELEMENTS 350624 . 352055)) (352119 378011 (SK.ADD.SELECTION 352129 .
352869) (SK.COPY.INSERTFN 352871 . 356502) (SCREENELEMENTP 356504 . 356977) (SK.ITEM.REGION 356979 .
357466) (SK.ELEMENT.GLOBAL.REGION 357468 . 357996) (SK.LOCAL.ITEMS.IN.REGION 357998 . 359977) (
SK.REGIONFN 359979 . 360301) (SK.GLOBAL.REGIONFN 360303 . 360661) (SK.REMOVE.SELECTION 360663 . 361391
) (SK.SELECT.MULTIPLE.ITEMS 361393 . 371835) (SKETCH.GET.ELEMENTS 371837 . 373260) (SK.PUT.MARKS.UP
373262 . 373601) (SK.TAKE.MARKS.DOWN 373603 . 373942) (SK.TRANSLATE.GLOBALPART 373944 . 376071) (
SK.TRANSLATE.ITEM 376073 . 377000) (SK.TRANSLATEFN 377002 . 377198) (TRANSLATE.SKETCH 377200 . 378009)
) (378277 381184 (SK.INPUT.SCALE 378287 . 379134) (SK.UPDATE.SKETCHCONTEXT 379136 . 379733) (
SK.SET.INPUT.SCALE 379735 . 380384) (SK.SET.INPUT.SCALE.CURRENT 380386 . 380677) (
SK.SET.INPUT.SCALE.VALUE 380679 . 381182)) (381235 383147 (SK.SET.FEEDBACK.MODE 381245 . 382551) (
SK.SET.FEEDBACK.POINT 382553 . 382721) (SK.SET.FEEDBACK.VERBOSE 382723 . 382892) (
SK.SET.FEEDBACK.ALWAYS 382894 . 383145)) (383298 384575 (SKETCH.TITLE 383308 . 383571) (
SK.SHRINK.ICONCREATE 383573 . 384573)) (390265 393079 (READBRUSHSHAPE 390275 . 390734) (READ.FUNCTION
390736 . 391251) (READBRUSHSIZE 391253 . 391711) (READANGLE 391713 . 392205) (READARCDIRECTION 392207
. 393077)) (393080 403491 (SK.CHANGE.DASHING 393090 . 397038) (READ.AND.SAVE.NEW.DASHING 397040 .
398808) (READ.NEW.DASHING 398810 . 400550) (READ.DASHING.CHANGE 400552 . 402027) (SK.CACHE.DASHING
402029 . 403031) (SK.DASHING.LABEL 403033 . 403489)) (403492 407197 (READ.FILLING.CHANGE 403502 .
405483) (SK.CACHE.FILLING 405485 . 406203) (READ.AND.SAVE.NEW.FILLING 406205 . 406803) (
SK.FILLING.LABEL 406805 . 407195)) (407581 443834 (SK.GETGLOBALPOSITION 407591 . 407896) (
SKETCH.TRACK.ELEMENTS 407898 . 411418) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 411420 . 411979) (
MAP.SKETCH.ELEMENTS.INTO.VIEWER 411981 . 412373) (MAP.GLOBAL.POSITION.INTO.VIEWER 412375 . 412755) (
SKETCH.TO.VIEWER.POSITION 412757 . 413116) (SKETCH.TRACK.IMAGE 413118 . 413972) (SK.TRACK.IMAGE1
413974 . 415386) (MAP.VIEWER.XY.INTO.GLOBAL 415388 . 416382) (SK.SET.POSITION 416384 . 416720) (
MAP.VIEWER.PT.INTO.GLOBAL 416722 . 417828) (VIEWER.TO.SKETCH.POSITION 417830 . 418465) (
SK.INSURE.SCALE 418467 . 418727) (SKETCH.TO.VIEWER.REGION 418729 . 419535) (VIEWER.TO.SKETCH.REGION
419537 . 419875) (SK.READ.POINT.WITH.FEEDBACK 419877 . 430880) (SKETCH.GET.POSITION 430882 . 432762) (
\CLOBBER.POSITION 432764 . 433212) (NEAREST.HOT.SPOT 433214 . 434742) (GETWREGION 434744 . 435505) (
GET.BITMAP.POSITION 435507 . 436291) (SK.TRACK.BITMAP1 436293 . 443832)) (444403 475289 (
SK.BRING.UP.POSITION.PAD 444413 . 450273) (SK.PAD.READER.POSITION 450275 . 451924) (
SK.POSITION.READER.REPAINTFN 451926 . 453710) (SK.POSITION.PAD.FROM.VIEWER 453712 . 455054) (
SK.INIT.POSITION.NUMBER.PAD.MENU 455056 . 455406) (SK.READ.POSITION.PAD.HANDLER 455408 . 461140) (
DISPLAY.POSITION.READER.TOTAL 461142 . 463440) (POSITION.PAD.READER.HANDLER 463442 . 471485) (
POSITIONPAD.HELDFN 471487 . 472971) (\POSITION.PAD.ADD.DIGIT.MENU 472973 . 474552) (
\POSITION.READER.NUMBERPAD 474554 . 475287)) (476915 479593 (SK.DRAWFN 476925 . 477291) (
SK.TRANSFORMFN 477293 . 477674) (SK.EXPANDFN 477676 . 477953) (SK.INPUT 477955 . 478336) (SK.INSIDEFN
478338 . 478978) (SK.UPDATEFN 478980 . 479591)) (485165 489110 (SK.CHECK.SKETCH.VERSION 485175 .
486415) (SK.INSURE.RECORD.LENGTH 486417 . 487900) (SK.INSURE.HAS.LENGTH 487902 . 488640) (
SK.RECORD.LENGTH 488642 . 488816) (SK.SET.RECORD.LENGTHS 488818 . 489108)) (489851 490738 (
SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 489861 . 490736)))))
(FILEMAP (NIL (22176 85539 (SKETCH 22186 . 24291) (SKETCH.FROM.A.FILE 24293 . 24608) (SKETCHW.CREATE
24610 . 29184) (SKETCH.RESET 29186 . 30708) (SKETCHW.FIG.CHANGED 30710 . 31050) (SK.WINDOW.TITLE 31052
. 31439) (EDITSLIDE 31441 . 31847) (EDITSKETCH 31849 . 32173) (SK.PUT.ON.FILE 32175 . 33627) (
SK.OUTPUT.FILE.NAME 33629 . 34003) (SKETCH.PUT 34005 . 36903) (SK.GET.FROM.FILE 36905 . 37798) (
SK.INCLUDE.FILE 37800 . 40308) (SK.GET.IMAGEOBJ.FROM.FILE 40310 . 42513) (SKETCH.GET 42515 . 42822) (
ADD.SKETCH.TO.VIEWER 42824 . 45410) (FILENAMELESSVERSION 45412 . 45688) (SK.ADD.ELEMENTS.TO.SKETCH
45690 . 46204) (SKETCH.SET.A.DEFAULT 46206 . 53364) (SK.POPUP.SELECTIONFN 53366 . 53908) (
GETSKETCHWREGION 53910 . 54116) (SK.ADD.ELEMENT 54118 . 55697) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH
55699 . 57093) (SK.ELTS.BY.PRIORITY 57095 . 57391) (SK.ORDER.ELEMENTS 57393 . 57660) (
SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 57662 . 59156) (SK.ADD.ELEMENTS 59158 . 59682) (
SK.CHECK.WHENADDEDFN 59684 . 60414) (SK.APPLY.MENU.COMMAND 60416 . 61214) (SK.DELETE.ELEMENT1 61216 .
62794) (SK.MARK.DIRTY 62796 . 63462) (SK.MARK.UNDIRTY 63464 . 63795) (SK.MENU.AND.RETURN.FIELD 63797
. 64462) (SKETCH.SET.BRUSH.SHAPE 64464 . 65049) (SKETCH.SET.BRUSH.SIZE 65051 . 65557) (
SKETCHW.CLOSEFN 65559 . 67350) (SK.CONFIRM.DESTRUCTION 67352 . 68351) (SKETCHW.OUTFN 68353 . 68617) (
SKETCHW.REOPENFN 68619 . 69031) (MAKE.LOCAL.SKETCH 69033 . 69763) (MAP.SKETCHSPEC.INTO.VIEWER 69765 .
70975) (SKETCHW.REPAINTFN 70977 . 71805) (SKETCHW.REPAINTFN1 71807 . 72746) (SK.DRAWFIGURE.IF 72748 .
73270) (SKETCHW.SCROLLFN 73272 . 77465) (SKETCHW.RESHAPEFN 77467 . 79725) (SK.UPDATE.EVENT.SELECTION
79727 . 81782) (LIGHTGRAYWINDOW 81784 . 81947) (SK.ADD.SPACES 81949 . 82695) (SK.SKETCH.MENU 82697 .
83019) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 83021 . 83873) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 83875 . 84835)
(SK.RETURN.TTY 84837 . 85205) (SK.TAKE.TTY 85207 . 85537)) (85593 108921 (SKETCH.COMMANDMENU 85603 .
85940) (SKETCH.COMMANDMENU.ITEMS 85942 . 106025) (CREATE.SKETCHW.COMMANDMENU 106027 . 106447) (
SKETCHW.SELECTIONFN 106449 . 107552) (SKETCH.MONITORLOCK 107554 . 108025) (SK.EVAL.AS.PROCESS 108027
. 108640) (SK.EVAL.WITH.LOCK 108642 . 108919)) (108922 116726 (SK.FIX.MENU 108932 . 110026) (
SK.SET.UP.MENUS 110028 . 112329) (SK.INSURE.HAS.MENU 112331 . 112993) (SK.CREATE.STANDARD.MENU 112995
. 113440) (SK.ADD.ITEM.TO.MENU 113442 . 114117) (SK.GET.VIEWER.POPUP.MENU 114119 . 116320) (
SK.CLEAR.POPUP.MENU 116322 . 116724)) (116782 125604 (SKETCH.CREATE 116792 . 117578) (GETSKETCHPROP
117580 . 120637) (PUTSKETCHPROP 120639 . 124571) (CREATE.DEFAULT.SKETCH.CONTEXT 124573 . 125602)) (
125770 148666 (SK.COPY.BUTTONEVENTFN 125780 . 137008) (SK.BUTTONEVENT.MARK 137010 . 137393) (
SK.BUILD.IMAGEOBJ 137395 . 147310) (SK.BUTTONEVENT.OVERP 147312 . 147935) (SK.BUTTONEVENT.SAME.KEYS
147937 . 148664)) (148945 174760 (SK.SEL.AND.CHANGE 148955 . 149247) (SK.CHECK.WHENCHANGEDFN 149249 .
149955) (SK.CHECK.PRECHANGEFN 149957 . 150558) (SK.CHANGE.ELT 150560 . 150752) (SK.CHANGE.THING 150754
. 152005) (SKETCH.CHANGE.ELEMENTS 152007 . 153190) (SK.APPLY.SINGLE.CHANGEFN 153192 . 153765) (
SK.DO.CHANGESPECS 153767 . 155426) (SK.VIEWER.FROM.SKETCH.ARG 155428 . 155870) (SK.DO.CHANGESPEC1
155872 . 157747) (SK.CHANGEFN 157749 . 158329) (SK.READCHANGEFN 158331 . 158790) (SK.DEFAULT.CHANGEFN
158792 . 161264) (CHANGEABLEFIELDITEMS 161266 . 161913) (SK.APPLY.CHANGE.COMMAND 161915 . 162532) (
SK.DO.AND.RECORD.CHANGES 162534 . 163931) (SK.APPLY.CHANGE.COMMAND1 163933 . 165421) (
SK.ELEMENTS.CHANGEFN 165423 . 167747) (READ.POINT.TO.ADD 167749 . 168693) (GLOBAL.KNOT.FROM.LOCAL
168695 . 169155) (SK.ADD.KNOT.TO.ELEMENT 169157 . 170101) (SK.GROUP.CHANGEFN 170103 . 171315) (
SK.GROUP.CHANGEFN1 171317 . 174758)) (174927 188660 (ADD.ELEMENT.TO.SKETCH 174937 . 176643) (
ADD.SKETCH.VIEWER 176645 . 177313) (REMOVE.SKETCH.VIEWER 177315 . 177928) (ALL.SKETCH.VIEWERS 177930
. 178170) (SKETCH.ALL.VIEWERS 178172 . 178432) (VIEWER.BUCKET 178434 . 178585) (ELT.INSIDE.REGION?
178587 . 178914) (ELT.INSIDE.SKWP 178916 . 179207) (SCALE.FROM.SKW 179209 . 179459) (
SK.ADDELT.TO.WINDOW 179461 . 180321) (SK.CALC.REGION.VIEWED 180323 . 180701) (SK.DRAWFIGURE 180703 .
181992) (SK.DRAWFIGURE1 181994 . 182378) (SK.LOCAL.FROM.GLOBAL 182380 . 183615) (SKETCH.REGION.VIEWED
183617 . 186304) (SKETCH.VIEW.FROM.NAME 186306 . 186736) (SK.UPDATE.REGION.VIEWED 186738 . 187130) (
SKETCH.ADD.AND.DISPLAY 187132 . 187540) (SKETCH.ADD.AND.DISPLAY1 187542 . 187980) (SK.ADD.ITEM 187982
. 188314) (SKETCHW.ADD.INSTANCE 188316 . 188658)) (188701 201889 (SK.SEL.AND.DELETE 188711 . 189099)
(SK.ERASE.AND.DELETE.ITEM 189101 . 189520) (REMOVE.ELEMENT.FROM.SKETCH 189522 . 190633) (
SK.DELETE.ELEMENT 190635 . 191193) (SK.DELETE.ELEMENT2 191195 . 191856) (SK.DELETE.KNOT 191858 .
192149) (SK.SEL.AND.DELETE.KNOT 192151 . 193276) (SK.DELETE.ELEMENT.KNOT 193278 . 196485) (
SK.CHECK.WHENDELETEDFN 196487 . 197267) (SK.CHECK.PREEDITFN 197269 . 197753) (
SK.CHECK.END.INITIAL.EDIT 197755 . 198289) (SK.CHECK.WHENPOINTDELETEDFN 198291 . 199087) (SK.ERASE.ELT
199089 . 199425) (SK.DELETE.ELT 199427 . 199802) (SK.DELETE.ITEM 199804 . 200212) (DELFROMTCONC
200214 . 201887)) (201928 215762 (SK.COPY.ELT 201938 . 202308) (SK.SEL.AND.COPY 202310 . 202693) (
SK.COPY.ELEMENTS 202695 . 208323) (SK.ADD.COPY.OF.ELEMENTS 208325 . 210092) (
SK.GLOBAL.FROM.LOCAL.ELEMENTS 210094 . 210334) (SK.COPY.ITEM 210336 . 211133) (SK.INSERT.SKETCH 211135
. 215760)) (215802 245823 (SK.MOVE.ELT 215812 . 216087) (SK.MOVE.ELT.OR.PT 216089 . 216402) (
SK.APPLY.DEFAULT.MOVE 216404 . 216838) (SK.SEL.AND.MOVE 216840 . 217387) (SK.MOVE.ELEMENTS 217389 .
228261) (SKETCH.MOVE.ELEMENTS 228263 . 230194) (SKETCH.COPY.ELEMENTS 230196 . 232243) (
\SKETCH.COPY.ELEMENT 232245 . 232970) (SK.TRANSLATE.ELEMENT 232972 . 233455) (SK.COPY.GLOBAL.ELEMENT
233457 . 233668) (SK.MAKE.ELEMENT.MOVE.ARG 233670 . 234290) (SK.MAKE.ELEMENTS.MOVE.ARG 234292 . 234814
) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 234816 . 235885) (SK.SHOW.FIG.FROM.INFO 235887 . 236255) (
SK.MOVE.THING 236257 . 237163) (UPDATE.ELEMENT.IN.SKETCH 237165 . 239220) (SK.UPDATE.ELEMENT 239222 .
240781) (SK.UPDATE.ELEMENTS 240783 . 241502) (SK.UPDATE.ELEMENT1 241504 . 245404) (
SK.MOVE.ELEMENT.POINT 245406 . 245821)) (245886 268175 (SK.MOVE.POINTS 245896 . 246183) (
SK.SEL.AND.MOVE.POINTS 246185 . 246490) (SK.DO.MOVE.ELEMENT.POINTS 246492 . 255149) (
SK.MOVE.ITEM.POINTS 255151 . 256822) (SK.TRANSLATEPTSFN 256824 . 257208) (SK.TRANSLATE.POINTS 257210
. 258111) (SK.SELECT.MULTIPLE.POINTS 258113 . 263753) (SK.CONTROL.POINTS.IN.REGION 263755 . 265176) (
SK.ADD.PT.SELECTION 265178 . 265642) (SK.REMOVE.PT.SELECTION 265644 . 266261) (SK.ADD.POINT 266263 .
266886) (SK.ELTS.CONTAINING.PTS 266888 . 267513) (SK.HOTSPOTS.NOT.ON.LIST 267515 . 268173)) (268333
271129 (SK.SET.MOVE.MODE 268343 . 269014) (SK.SET.MOVE.MODE.POINTS 269016 . 269355) (
SK.SET.MOVE.MODE.ELEMENTS 269357 . 269701) (SK.SET.MOVE.MODE.COMBINED 269703 . 270053) (READMOVEMODE
270055 . 271127)) (271130 289885 (SK.ALIGN.POINTS 271140 . 271430) (SK.SEL.AND.ALIGN.POINTS 271432 .
271741) (SK.ALIGN.POINTS.LEFT 271743 . 272046) (SK.ALIGN.POINTS.RIGHT 272048 . 272353) (
SK.ALIGN.POINTS.TOP 272355 . 272656) (SK.ALIGN.POINTS.BOTTOM 272658 . 272965) (
SK.EVEN.SPACE.POINTS.IN.X 272967 . 273287) (SK.EVEN.SPACE.POINTS.IN.Y 273289 . 273609) (
SK.DO.ALIGN.POINTS 273611 . 284233) (SK.NTH.CONTROL.POINT 284235 . 284696) (
SK.GET.SELECTED.ELEMENT.STRUCTURE 284698 . 285364) (SK.CORRESPONDING.CONTROL.PT 285366 . 285920) (
SK.CONTROL.POINT.NUMBER 285922 . 286292) (SK.DO.ALIGN.SETVALUE 286294 . 289883)) (289949 303381 (
SKETCH.CREATE.GROUP 289959 . 290448) (SK.CREATE.GROUP1 290450 . 290997) (SK.UPDATE.GROUP.AFTER.CHANGE
290999 . 291788) (SK.GROUP.ELTS 291790 . 292071) (SK.SEL.AND.GROUP 292073 . 292459) (SK.GROUP.ELEMENTS
292461 . 294110) (SK.UNGROUP.ELT 294112 . 294396) (SK.SEL.AND.UNGROUP 294398 . 296067) (
SK.UNGROUP.ELEMENT 296069 . 297005) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 297007 . 297929) (
SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 297931 . 298942) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 298944 .
300284) (SK.UNIONREGIONS 300286 . 302652) (SKETCH.REGION.OF.SKETCH 302654 . 303070) (SK.FLASHREGION
303072 . 303379)) (303382 316853 (INIT.GROUP.ELEMENT 303392 . 304264) (GROUP.DRAWFN 304266 . 304716) (
GROUP.EXPANDFN 304718 . 306281) (GROUP.INSIDEFN 306283 . 306692) (GROUP.REGIONFN 306694 . 307089) (
GROUP.GLOBALREGIONFN 307091 . 307409) (GROUP.TRANSLATEFN 307411 . 309443) (GROUP.TRANSFORMFN 309445 .
312925) (GROUP.READCHANGEFN 312927 . 316851)) (316854 317862 (REGION.CENTER 316864 . 317465) (
REMOVE.LAST 317467 . 317860)) (317915 323022 (SK.MOVE.GROUP.CONTROL.PT 317925 . 318216) (
SK.SEL.AND.MOVE.CONTROL.PT 318218 . 319622) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 319624 . 321697) (
SK.READ.NEW.GROUP.CONTROL.PT 321699 . 323020)) (323281 327905 (SK.DO.GROUP 323291 . 324743) (
SK.CHECK.WHENGROUPEDFN 324745 . 325455) (SK.DO.UNGROUP 325457 . 326662) (SK.CHECK.WHENUNGROUPEDFN
326664 . 327251) (SK.GROUP.UNDO 327253 . 327576) (SK.UNGROUP.UNDO 327578 . 327903)) (328146 333068 (
SK.FREEZE.ELTS 328156 . 328440) (SK.SEL.AND.FREEZE 328442 . 328832) (SK.FREEZE.ELEMENTS 328834 .
329385) (SK.UNFREEZE.ELT 329387 . 329676) (SK.SEL.AND.UNFREEZE 329678 . 331214) (SK.UNFREEZE.ELEMENTS
331216 . 331775) (SK.FREEZE.UNDO 331777 . 332022) (SK.UNFREEZE.UNDO 332024 . 332271) (SK.DO.FREEZE
332273 . 332666) (SK.DO.UNFREEZE 332668 . 333066)) (333298 343108 (SKETCH.ELEMENTS.OF.SKETCH 333308 .
334143) (SKETCH.LIST.OF.ELEMENTS 334145 . 334863) (SKETCH.ADD.ELEMENT 334865 . 335940) (
SKETCH.DELETE.ELEMENT 335942 . 337674) (DELFROMGROUPELT 337676 . 338476) (SKETCH.ELEMENT.TYPE 338478
. 338827) (SKETCH.ELEMENT.CHANGED 338829 . 340397) (SK.ELEMENT.CHANGED1 340399 . 341050) (
SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341052 . 343106)) (343162 347774 (INSURE.SKETCH 343172 . 345787)
(LOCALSPECS.FROM.VIEWER 345789 . 346149) (SK.LOCAL.ELT.FROM.GLOBALPART 346151 . 346619) (
SKETCH.FROM.VIEWER 346621 . 346855) (INSPECT.SKETCH 346857 . 347182) (ELT.INSIDE.SKETCHWP 347184 .
347457) (SK.INSIDE.REGION 347459 . 347772)) (347775 352105 (MAPSKETCHSPECS 347785 . 348406) (
MAPCOLLECTSKETCHSPECS 348408 . 349157) (MAPSKETCHSPECSUNTIL 349159 . 349967) (MAPGLOBALSKETCHSPECS
349969 . 350670) (MAPGLOBALSKETCHELEMENTS 350672 . 352103)) (352167 378059 (SK.ADD.SELECTION 352177 .
352917) (SK.COPY.INSERTFN 352919 . 356550) (SCREENELEMENTP 356552 . 357025) (SK.ITEM.REGION 357027 .
357514) (SK.ELEMENT.GLOBAL.REGION 357516 . 358044) (SK.LOCAL.ITEMS.IN.REGION 358046 . 360025) (
SK.REGIONFN 360027 . 360349) (SK.GLOBAL.REGIONFN 360351 . 360709) (SK.REMOVE.SELECTION 360711 . 361439
) (SK.SELECT.MULTIPLE.ITEMS 361441 . 371883) (SKETCH.GET.ELEMENTS 371885 . 373308) (SK.PUT.MARKS.UP
373310 . 373649) (SK.TAKE.MARKS.DOWN 373651 . 373990) (SK.TRANSLATE.GLOBALPART 373992 . 376119) (
SK.TRANSLATE.ITEM 376121 . 377048) (SK.TRANSLATEFN 377050 . 377246) (TRANSLATE.SKETCH 377248 . 378057)
) (378325 381232 (SK.INPUT.SCALE 378335 . 379182) (SK.UPDATE.SKETCHCONTEXT 379184 . 379781) (
SK.SET.INPUT.SCALE 379783 . 380432) (SK.SET.INPUT.SCALE.CURRENT 380434 . 380725) (
SK.SET.INPUT.SCALE.VALUE 380727 . 381230)) (381283 383195 (SK.SET.FEEDBACK.MODE 381293 . 382599) (
SK.SET.FEEDBACK.POINT 382601 . 382769) (SK.SET.FEEDBACK.VERBOSE 382771 . 382940) (
SK.SET.FEEDBACK.ALWAYS 382942 . 383193)) (383346 384623 (SKETCH.TITLE 383356 . 383619) (
SK.SHRINK.ICONCREATE 383621 . 384621)) (390313 393127 (READBRUSHSHAPE 390323 . 390782) (READ.FUNCTION
390784 . 391299) (READBRUSHSIZE 391301 . 391759) (READANGLE 391761 . 392253) (READARCDIRECTION 392255
. 393125)) (393128 403539 (SK.CHANGE.DASHING 393138 . 397086) (READ.AND.SAVE.NEW.DASHING 397088 .
398856) (READ.NEW.DASHING 398858 . 400598) (READ.DASHING.CHANGE 400600 . 402075) (SK.CACHE.DASHING
402077 . 403079) (SK.DASHING.LABEL 403081 . 403537)) (403540 407245 (READ.FILLING.CHANGE 403550 .
405531) (SK.CACHE.FILLING 405533 . 406251) (READ.AND.SAVE.NEW.FILLING 406253 . 406851) (
SK.FILLING.LABEL 406853 . 407243)) (407629 443882 (SK.GETGLOBALPOSITION 407639 . 407944) (
SKETCH.TRACK.ELEMENTS 407946 . 411466) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 411468 . 412027) (
MAP.SKETCH.ELEMENTS.INTO.VIEWER 412029 . 412421) (MAP.GLOBAL.POSITION.INTO.VIEWER 412423 . 412803) (
SKETCH.TO.VIEWER.POSITION 412805 . 413164) (SKETCH.TRACK.IMAGE 413166 . 414020) (SK.TRACK.IMAGE1
414022 . 415434) (MAP.VIEWER.XY.INTO.GLOBAL 415436 . 416430) (SK.SET.POSITION 416432 . 416768) (
MAP.VIEWER.PT.INTO.GLOBAL 416770 . 417876) (VIEWER.TO.SKETCH.POSITION 417878 . 418513) (
SK.INSURE.SCALE 418515 . 418775) (SKETCH.TO.VIEWER.REGION 418777 . 419583) (VIEWER.TO.SKETCH.REGION
419585 . 419923) (SK.READ.POINT.WITH.FEEDBACK 419925 . 430928) (SKETCH.GET.POSITION 430930 . 432810) (
\CLOBBER.POSITION 432812 . 433260) (NEAREST.HOT.SPOT 433262 . 434790) (GETWREGION 434792 . 435553) (
GET.BITMAP.POSITION 435555 . 436339) (SK.TRACK.BITMAP1 436341 . 443880)) (444451 475337 (
SK.BRING.UP.POSITION.PAD 444461 . 450321) (SK.PAD.READER.POSITION 450323 . 451972) (
SK.POSITION.READER.REPAINTFN 451974 . 453758) (SK.POSITION.PAD.FROM.VIEWER 453760 . 455102) (
SK.INIT.POSITION.NUMBER.PAD.MENU 455104 . 455454) (SK.READ.POSITION.PAD.HANDLER 455456 . 461188) (
DISPLAY.POSITION.READER.TOTAL 461190 . 463488) (POSITION.PAD.READER.HANDLER 463490 . 471533) (
POSITIONPAD.HELDFN 471535 . 473019) (\POSITION.PAD.ADD.DIGIT.MENU 473021 . 474600) (
\POSITION.READER.NUMBERPAD 474602 . 475335)) (476963 479641 (SK.DRAWFN 476973 . 477339) (
SK.TRANSFORMFN 477341 . 477722) (SK.EXPANDFN 477724 . 478001) (SK.INPUT 478003 . 478384) (SK.INSIDEFN
478386 . 479026) (SK.UPDATEFN 479028 . 479639)) (485309 489254 (SK.CHECK.SKETCH.VERSION 485319 .
486559) (SK.INSURE.RECORD.LENGTH 486561 . 488044) (SK.INSURE.HAS.LENGTH 488046 . 488784) (
SK.RECORD.LENGTH 488786 . 488960) (SK.SET.RECORD.LENGTHS 488962 . 489252)) (489999 490886 (
SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490009 . 490884)))))
STOP

View File

@@ -1,18 +1,15 @@
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "24-Mar-92 14:07:17" |{PELE:MV:ENVOS}<LISPCORE>LIBRARY>SKETCHBMELT.;3| 47688
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS BITMAPELT.DRAWFN)
(FILECREATED " 5-Dec-2023 00:11:01" {WMEDLEY}<library>sketch>SKETCH-BMELT.;1 47396
previous date%: "12-Jun-90 14:45:06" |{PELE:MV:ENVOS}<LISPCORE>LIBRARY>SKETCHBMELT.;2|)
:EDIT-BY rmk
:PREVIOUS-DATE "24-Mar-92 14:07:17" {WMEDLEY}<library>sketch>SKETCHBMELT.;1)
(* ; "
Copyright (c) 1985, 1986, 1988, 1990, 1992 by Venue & Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT SKETCH-BMELTCOMS)
(PRETTYCOMPRINT SKETCHBMELTCOMS)
(RPAQQ SKETCHBMELTCOMS
(RPAQQ SKETCH-BMELTCOMS
((* BITMAP element done to allow zooming of bitmaps that is not possible with image object
bitmaps.)
(FNS SKETCH.CREATE.BITMAP INIT.BITMAP.ELEMENT BITMAPELT.CHANGEFN BITMAPELT.DRAWFN DSPVIEWPORT
@@ -731,30 +728,28 @@ It can then be edited without effecting the original.")) (AND (fetch (BITMAP
(TYPERECORD BITMAPELT (SKBITMAP SKBITMAPREGION SKBITMAPSCALE SKBITMAPCACHE))
(RECORD LOCALBITMAPELT ((LOCALBITMAPPOSITION)
LOCALHOTREGION LOCALBITMAP LOCALBITMAPREGION
LOCALHOTREGION LOCALBITMAP LOCALBITMAPREGION
(* coordinates of entire region
 covered by the bitmap in local
 coordinates.)
LOCALSCALE SOURCEFORIMAGE (* pair of the scale and cached
 image from which LOCALBITMAP was
 generated.)
LOCALIMAGEREGION
 covered by the bitmap in local
 coordinates.)
LOCALSCALE SOURCEFORIMAGE (* pair of the scale and cached image
 from which LOCALBITMAP was generated.)
LOCALIMAGEREGION
(* region in local coordinates of the area covered by LOCALBITMAP.
 This may be a subregion of LOCALBITMAPREGION)
 This may be a subregion of LOCALBITMAPREGION)
))
))
)
)
(FILESLOAD SCALEBITMAP)
(PUTPROPS SKETCHBMELT COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1988 1990 1992))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1205 46541 (SKETCH.CREATE.BITMAP 1215 . 2049) (INIT.BITMAP.ELEMENT 2051 . 3052) (
BITMAPELT.CHANGEFN 3054 . 16483) (BITMAPELT.DRAWFN 16485 . 23256) (DSPVIEWPORT 23258 . 24304) (
SK.COMPUTE.LOCAL.SCALED.BITMAP 24306 . 26938) (BITMAPELT.EXPANDFN 26940 . 30787) (BITMAPELT.INSIDEFN
30789 . 31391) (BITMAPELT.TRANSLATEFN 31393 . 32695) (BITMAPELT.REGIONFN 32697 . 33153) (
BITMAPELT.GLOBALREGIONFN 33155 . 33534) (BITMAPELT.READCHANGEFN 33536 . 37579) (BITMAPELT.TRANSFORMFN
37581 . 39105) (SK.BITMAP.CREATE 39107 . 40848) (BITMAP.SET.SCALES 40850 . 42359) (BITMAPELT.INPUTFN
42361 . 43333) (BITMAPELT.CHOOSE.BITMAP 43335 . 46539)))))
(FILEMAP (NIL (1069 46405 (SKETCH.CREATE.BITMAP 1079 . 1913) (INIT.BITMAP.ELEMENT 1915 . 2916) (
BITMAPELT.CHANGEFN 2918 . 16347) (BITMAPELT.DRAWFN 16349 . 23120) (DSPVIEWPORT 23122 . 24168) (
SK.COMPUTE.LOCAL.SCALED.BITMAP 24170 . 26802) (BITMAPELT.EXPANDFN 26804 . 30651) (BITMAPELT.INSIDEFN
30653 . 31255) (BITMAPELT.TRANSLATEFN 31257 . 32559) (BITMAPELT.REGIONFN 32561 . 33017) (
BITMAPELT.GLOBALREGIONFN 33019 . 33398) (BITMAPELT.READCHANGEFN 33400 . 37443) (BITMAPELT.TRANSFORMFN
37445 . 38969) (SK.BITMAP.CREATE 38971 . 40712) (BITMAP.SET.SCALES 40714 . 42223) (BITMAPELT.INPUTFN
42225 . 43197) (BITMAPELT.CHOOSE.BITMAP 43199 . 46403)))))
STOP

Binary file not shown.

View File

@@ -1,18 +1,17 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "21-Aug-2021 20:50:04" {DSK}<home>larry>medley>library>SKETCHEDIT.;2 108762
changes to%: (FNS SHOW.FEEDBACK.BOX)
(FILECREATED " 5-Dec-2023 00:12:04" {WMEDLEY}<library>sketch>SKETCH-EDIT.;1 108598
previous date%: "14-Mar-2021 20:37:50" {DSK}<home>larry>medley>library>SKETCHEDIT.;1)
:EDIT-BY rmk
:CHANGES-TO (RECORDS TEXTELTSELECTION)
:PREVIOUS-DATE "21-Aug-2021 20:50:04" {WMEDLEY}<library>sketch>SKETCHEDIT.;1)
(* ; "
Copyright (c) 1983-1987, 1990, 2021 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT SKETCH-EDITCOMS)
(PRETTYCOMPRINT SKETCHEDITCOMS)
(RPAQQ SKETCHEDITCOMS
(RPAQQ SKETCH-EDITCOMS
((COMS (* selection functions)
(FNS BUTLAST CHAR.BEGIN CLOSEST.CHAR CLOSEST.LINE FLASHW HILITE.LINE HILITE.TEXT
IN.TEXT.EXTEND INIMAGEOBJ INTEXT NEW.TEXT.EXTEND NEW.TEXT.SELECTIONP NTHCHARWIDTH
@@ -1953,28 +1952,27 @@ Copyright (c) 1983-1987, 1990, 2021 by Venue & Xerox Corporation.
XCOORD _ (LASTMOUSEX WIN)
YCOORD _ (LASTMOUSEY WIN])
)
(PUTPROPS SKETCHEDIT COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1990 2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (2492 39600 (BUTLAST 2502 . 2850) (CHAR.BEGIN 2852 . 4777) (CLOSEST.CHAR 4779 . 9002) (
CLOSEST.LINE 9004 . 9566) (FLASHW 9568 . 9725) (HILITE.LINE 9727 . 10546) (HILITE.TEXT 10548 . 12196)
(IN.TEXT.EXTEND 12198 . 15471) (INIMAGEOBJ 15473 . 15978) (INTEXT 15980 . 16477) (NEW.TEXT.EXTEND
16479 . 18698) (NEW.TEXT.SELECTIONP 18700 . 18880) (NTHCHARWIDTH 18882 . 19139) (NTHLOCALREGION 19141
. 19379) (ONCHAR 19381 . 19776) (SHOW.EXTENDED.SELECTION.FEEDBACK 19778 . 20713) (SHOW.FEEDBACK 20715
. 21205) (SHOW.FEEDBACK.BOX 21207 . 22261) (SELECTION.POSITION 22263 . 23055) (SKED.CLEAR.SELECTION
23057 . 23580) (SKETCH.CLEANUP 23582 . 25496) (SK.ENTER.EDIT.CHANGE 25498 . 27043) (
SKED.REMOVE.OTHER.SELECTIONS 27045 . 27472) (SKED.EXTEND.SELECTION 27474 . 28939) (SKED.MOVE.SELECTION
28941 . 34102) (CREATE.TEXT.SELECTION 34104 . 34620) (SKED.SELECTION.FEEDBACK 34622 . 36278) (
SKED.SET.EXTENDSELECTION 36280 . 36597) (SKED.SET.SELECTION 36599 . 36999) (LINE.BEGIN 37001 . 37555)
(SELECTION.GREATERP 37557 . 38352) (SK.WORD.BREAK.CLASS 38354 . 39194) (SK.GETSYNTAX 39196 . 39598)) (
40442 86176 (WB.EDITOR 40452 . 41777) (SK.TTYENTRYFN 41779 . 42057) (SK.TTYEXITFN 42059 . 42328) (
SKED.INSERT 42330 . 42758) (\SKED.INSERT 42760 . 63882) (FIRST.N.ELEMENTS 63884 . 64151) (
SKED.CREATE.NEW.TEXTBOX 64153 . 70682) (SKED.CHARACTERPOSITION 70684 . 71471) (SKED.LINE.AND.CHAR#
71473 . 73104) (\SKED.DELETE.WORD.FROM.STRING 73106 . 74145) (\SKED.INSERT.CHARS.TO.STR 74147 . 82558)
(JOINCHARS 82560 . 82947) (STRINGFROMCHARACTERS 82949 . 83274) (GETALLCHARS 83276 . 83617) (
CLEANUP.EDIT 83619 . 84071) (SKED.NEW.TEXTELT 84073 . 86174)) (86211 107219 (
MAP.SCREEN.POSITION.ONTO.GRID 86221 . 87670) (NEAREST.ON.GRID 87672 . 88216) (SK.MIDDLE.TITLEFN 88218
. 90161) (WB.BUTTON.HANDLER 90163 . 97985) (WB.ADD.NEW.POINT 97987 . 101316) (WB.DRAWLINE 101318 .
105552) (WB.RUBBERBAND.POSITION 105554 . 106471) (SK.RUBBERBAND.FEEDBACKFN 106473 . 106977) (
RESET.LINE.BEING.INPUT 106979 . 107217)) (107401 108642 (NEAREST.EXISTING.POSITION 107411 . 107613) (
WB.NEARPT 107615 . 108500) (LASTMOUSEPOSITION 108502 . 108640)))))
(FILEMAP (NIL (2425 39533 (BUTLAST 2435 . 2783) (CHAR.BEGIN 2785 . 4710) (CLOSEST.CHAR 4712 . 8935) (
CLOSEST.LINE 8937 . 9499) (FLASHW 9501 . 9658) (HILITE.LINE 9660 . 10479) (HILITE.TEXT 10481 . 12129)
(IN.TEXT.EXTEND 12131 . 15404) (INIMAGEOBJ 15406 . 15911) (INTEXT 15913 . 16410) (NEW.TEXT.EXTEND
16412 . 18631) (NEW.TEXT.SELECTIONP 18633 . 18813) (NTHCHARWIDTH 18815 . 19072) (NTHLOCALREGION 19074
. 19312) (ONCHAR 19314 . 19709) (SHOW.EXTENDED.SELECTION.FEEDBACK 19711 . 20646) (SHOW.FEEDBACK 20648
. 21138) (SHOW.FEEDBACK.BOX 21140 . 22194) (SELECTION.POSITION 22196 . 22988) (SKED.CLEAR.SELECTION
22990 . 23513) (SKETCH.CLEANUP 23515 . 25429) (SK.ENTER.EDIT.CHANGE 25431 . 26976) (
SKED.REMOVE.OTHER.SELECTIONS 26978 . 27405) (SKED.EXTEND.SELECTION 27407 . 28872) (SKED.MOVE.SELECTION
28874 . 34035) (CREATE.TEXT.SELECTION 34037 . 34553) (SKED.SELECTION.FEEDBACK 34555 . 36211) (
SKED.SET.EXTENDSELECTION 36213 . 36530) (SKED.SET.SELECTION 36532 . 36932) (LINE.BEGIN 36934 . 37488)
(SELECTION.GREATERP 37490 . 38285) (SK.WORD.BREAK.CLASS 38287 . 39127) (SK.GETSYNTAX 39129 . 39531)) (
40375 86109 (WB.EDITOR 40385 . 41710) (SK.TTYENTRYFN 41712 . 41990) (SK.TTYEXITFN 41992 . 42261) (
SKED.INSERT 42263 . 42691) (\SKED.INSERT 42693 . 63815) (FIRST.N.ELEMENTS 63817 . 64084) (
SKED.CREATE.NEW.TEXTBOX 64086 . 70615) (SKED.CHARACTERPOSITION 70617 . 71404) (SKED.LINE.AND.CHAR#
71406 . 73037) (\SKED.DELETE.WORD.FROM.STRING 73039 . 74078) (\SKED.INSERT.CHARS.TO.STR 74080 . 82491)
(JOINCHARS 82493 . 82880) (STRINGFROMCHARACTERS 82882 . 83207) (GETALLCHARS 83209 . 83550) (
CLEANUP.EDIT 83552 . 84004) (SKED.NEW.TEXTELT 84006 . 86107)) (86144 107152 (
MAP.SCREEN.POSITION.ONTO.GRID 86154 . 87603) (NEAREST.ON.GRID 87605 . 88149) (SK.MIDDLE.TITLEFN 88151
. 90094) (WB.BUTTON.HANDLER 90096 . 97918) (WB.ADD.NEW.POINT 97920 . 101249) (WB.DRAWLINE 101251 .
105485) (WB.RUBBERBAND.POSITION 105487 . 106404) (SK.RUBBERBAND.FEEDBACKFN 106406 . 106910) (
RESET.LINE.BEING.INPUT 106912 . 107150)) (107334 108575 (NEAREST.EXISTING.POSITION 107344 . 107546) (
WB.NEARPT 107548 . 108433) (LASTMOUSEPOSITION 108435 . 108573)))))
STOP

Some files were not shown because too many files have changed in this diff Show More