miner@aai3.uucp (Stephen E. Miner) (09/09/88)
Here's what I use for hypertext fields. These scripts are based on
ideas I've seen on the net and in various stacks so I don't claim that
they are original. I hope you find them useful.
Steve Miner
miner@sri.com
-- HyperText Fields
-- by Steve Miner
-- These scripts allow a locked field to be used like "real" HyperText.
-- HyperText links in the text should be indicated by a suffix of a
-- single "punctuation" character (usually "*"). For example, this
-- might be a Link*. The field must be locked so that the mouseUp
-- message will be sent when the user clicks on a word in the field.
-- If the word has the proper suffix, then the system will go to a
-- card of that name (not including the suffix.) Otherwise, a beep
-- will sound.
-- An option space can be used in both the text and the name of the
-- card in order to treat contiguous words as a single unit.
-- A locked field (lockText property set to true) will receive a
-- mouseUp message when the user clicks on it.
on mouseUp
followHyperLink
end mouseUp
on followHyperLink
get HyperLink(the mouseLoc, "*")
if it is not empty then
visual effect zoom open
go to cd it
else
beep
end if
end followHyperLink
-- The HYPERLINK function selects and returns the hypertext link word
-- at the location MLOC. To be a valid hypertext link, the word must
-- be followed immediately by the LINKCHAR, which must be a punctuation
-- character (such as "*" in HyperCard.) The LINKCHAR is not included as
-- part of the returned word. If the word is not a valid hypertext
-- link, the function returns the empty string.
function HyperLink mLoc, linkChar
get the userLevel
if it < 2 then set userLevel to 2
set lockText of the target to false
click at mLoc
click at mLoc -- just like double clicking to select a word
set lockText of the target to true
if hyperLinkp(linkChar) then
return (the selection)
else
select empty
return empty
end if
set userLevel to it -- restore the old userLevel
end HyperLink
function hyperLinkp linkChar
if the selection is empty then return false
else return (char ((fourth word of the selectedChunk) + 1) ---
of target is linkChar)
end hyperLinkp
Stephen E. Miner
miner@sri.com
*** My other computer is a Macintosh ***