Here is an alternative method of getting an image from the SheepShaver clipboard to the macOS host. It is an AppleScript that uses the GIFConverter application in SheepShaver to save the clipboard to a PNG file on the SheepShaver desktop (by default), and you can drag it from there to the Unix folder. If you use the string "Host" in the name of the AppleScript application, it moves the PNG file to the UNIX folder for you, and uses the current date and time in the filename so that you don't have to worry about overwriting an existing file.
The AppleScript is clumsy and inefficient because I still don't know how to write good code, but it seems to work, and someone may find it useful. You can find GIFConverter (together with a registration code) on Macintosh Garden; install, run it, and enter the registration code before trying to use this script.
Code: Select all
-- Clip Image to PNG
-- uses GIFConverter to save an image in the clipboard to a PNG file on the SheepShaver desktop
-- if the app has the strong "Host" in its name, the file will be saved to the Unix folder
on run {}
set myName to path to me as string
set sendToHost to false
if myName contains "Host" then
set sendToHost to true
end if
set clipInfo to (clipboard info) as string
if clipInfo contains "picture" then
set deskDir to path to desktop folder as string
set saveImage to "FromClipboard.png"
set saveFile to deskDir & saveImage
my convertFile(saveImage, saveFile)
if sendToHost is true then
my moveToHost(saveImage, saveFile)
end if
else
activate
display dialog "No image in clipboard." buttons {"OK"} giving up after 2
end if
error number -128
end run
on convertFile(saveImage, saveFile)
tell application "Finder"
if exists file saveFile then
activate
display dialog saveImage & " already exists on the desktop." & return & return & "Delete and replace?" buttons {"Yes", "No"} default button 2
if button returned of result is "Yes" then
delete file saveFile
else
error number -128
end if
end if
end tell
set appRunning to false
if (list processes) contains "GIFConverter" then
set appRunning to true
end if
tell application "GIFConverter"
activate
make at beginning new graphic document
tell image 1 of graphic document 1
paste
end tell
try
close palette 1
end try
save graphic document 1 in file saveFile as PNG
try
close graphic document 1 saving no
end try
if appRunning is false then
try
quit application "GIFConverter"
end try
end if
end tell
end convertFile
on moveToHost(saveImage, saveFile)
set dateString to my getDateString()
set hostFile to "Unix:" & dateString & ".png"
set saveFile to file saveFile as alias
set hostFolder to "Unix:" as alias
tell application "Finder"
set hostExists to true
try
set hostFile to ("Unix:" & saveImage) as alias
on error
set hostExists to false
end try
if hostExists is true then
activate
display dialog saveImage & " already exists in the shared Unix folder." & return & return & "Delete and replace?" buttons {"Yes", "No"} default button 2
if button returned of result is "Yes" then
duplicate saveFile to hostFolder with replacing
end if
else
duplicate saveFile to hostFolder
end if
delete file saveFile
end tell
end moveToHost
on getDateString()
set TID to AppleScript's text item delimiters
set AppleScript's text item delimiters to {":"}
set right_now to current date
set the_time to (time string of right_now) as string -- something like "4:20:56 PM"
set am_pm to text -2 thru -1 of the_time -- is it AM or PM
set the_hour to text item 1 of the_time as string -- in this example, "4"
set the_minute to text item 2 of the_time as string -- in this example, "20"
set the_seconds to text 1 thru 2 of text item 3 of the_time as string
if (am_pm is "PM") then
set the_hour to the_hour + 12
end if
if the_hour is "24" then
set the_hour to "12"
end if
set AppleScript's text item delimiters to TID
tell (current date) to set dateString to ((its year as text) & (its month) & its day & "-" & ¬
the_hour & "." & the_minute & "." & the_seconds as string)
return dateString as string
end getDateString