Wouldn't it be neat...
Peter M. Brigham
pmbrig at gmail.com
Sun Aug 21 12:16:40 EDT 2016
On Aug 21, 2016, at 10:24 AM, me at jerrydaniels.com wrote:
> Trapping the commankeydown message is the easiest way to automate quoting. Rather than altering the script field behavior, I'd recommend using a front script. Just make sure you pass the keys you're not using!
Here's my version of Jacques' frontscript. It includes Jacques' "script paint" for the script editor (hover over a word and press the key combination, and the word hovered over is put into the current selection) — very useful to avoid mistyping of variable names. I also incorporated her "getPaint" function (select an image in LC, type the key combination, and choose a png or jpg from disc and that image will be poured into the selected LC image object). Also, I incorporated an insertDate() function.
In my version, all these shortcuts are triggered by a control-option-<keypress> (I work on a Mac), but you could change this easily.
-- Peter
Peter M. Brigham
pmbrig at gmail.com
---------
on controlkeydown whichKey
-- put this in a frontscript universally available in LC
put the long name of the target into tarName
put the shiftkey is down into shK
switch whichKey
case "'" -- put quotes around the selection
if not shK then pass controlkeydown
if "field" is not in tarName then pass controlkeydown
if "revNewScriptEditor" is not in tarName then pass controlkeydown
-- you could take the above line out if you want this in all LC fields
get the selection
put q(it) into the selection
if it = "" then
put the selectedChunk into tSel
put word 4 of tSel into word 2 of tSel
put (word 4 of tSel) - 1 into word 4 of tSel
select tSel
end if
break
case "9"
case "0" -- put parens around the selection
if not shK then pass controlkeydown
if "field" is not in tarName then pass controlkeydown
if "revNewScriptEditor" is not in tarName then pass controlkeydown
-- you could take the above line out if you want this in all LC fields
get the selection
put "(" & it & ")" into the selection
if it = "" then
put the selectedChunk into tSel
put word 4 of tSel into word 2 of tSel
put (word 4 of tSel) - 1 into word 4 of tSel
select tSel
end if
break
case "["
case "]" -- put brackets around the selection
if not shK then pass controlkeydown
if "field" is not in tarName then pass controlkeydown
if "revNewScriptEditor" is not in tarName then pass controlkeydown
-- you could take the above line out if you want this in all LC fields
get the selection
put "[" & it & "]" into the selection
if it = "" then
put the selectedChunk into tSel
put word 4 of tSel into word 2 of tSel
put (word 4 of tSel) - 1 into word 4 of tSel
select tSel
end if
break
case " " -- scriptPaint
if not shK then pass controlkeydown
if "field" is not in tarName then pass controlkeydown
if "revNewScriptEditor" is not in tarName then pass controlkeydown
put the mouseText into the selection
break
case "d"
-- insert date
put the shiftKey is down into wantLongDate
insertDate wantLongDate
break
case "i" -- getPaint
if not shK then exit controlkeydown
if the selobj = "" then
answer "Select an image first."
exit controlkeydown
else if word 1 of (the name of the selobj) <> "image" then
answer "You must select an image."
exit controlkeydown
end if
answer file "Choose replacement image:"
if it = empty then exit to top
put url ("binfile:" & it) into the selobj
break
default
pass controlkeydown
end switch
end controlkeydown
on insertDate getLongDate
-- control-d inserts short date, control-shift-d inserts long date
-- see the controlkeydown handler for implementation
-- note: Windows users can implement this with other modifier keys
-- put these scripts into a frontscript so it is available anywhere in LC
-- requires controlkeydown
put the selectedChunk into selCh
if selCh = empty then exit insertDate
put word -1 of selCh into fldNbr
put word 4 of selCh into theCharNbr
put the selectedtext into selText
put length(selText) into origLength
if getLongDate then
-- long date
put sr(item 2 to 3 of the long date) into tDate
else
-- short date
put the short date into tDate
end if
put tDate into the selectedchunk
select after char (theCharNbr + length(tDate) - origLength) of fld fldNbr
end insertDate
More information about the use-livecode
mailing list