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