I haven't tried this yet.  I will later tonight.  But when I was
working with hypercard I bought some cool code from Ro
Nagey at Royal Software written by a Brian Yennie.  Am
I correct in thinking this is the same Brian Yennie.

Thank you all,
-=>JB<=-

===========================================
On Jun 26, 2007, at 10:35 PM, J. Landman Gay wrote:

Wow. While everybody else is yakking, you write a script. :) This is very cool and there's not even a noticable lag.

It would need a custom "copy" though to remove the spacers. Maybe:

on commandKeyDown which -- copykey
  if which <> "c" then pass commandKeyDown
  put the selectedText into tData
  replace numToChar(0) with empty in tData
  set the clipboardData["text"] to tData
end commandKeyDown -- copykey

Ideally the handler should use "copyKey" but I couldn't get it to trigger.


Brian Yennie wrote:

This uses a naive algorithm and has limitations, but it's a fun experiment.
Create a scrolling text field and a 1x1 empty image object.
Paste this into the field script and type away.
on keyDown c
  lock screen
  do "put c into"&& (the selectedChunk)
  fullJustify (the id of me), (the id of image "spacer")
  unlock screen
end keyDown
on fullJustify fldID, imageID
  local i, targetWidth
  put fullFieldLineWidth(fldID) into targetWidth
  put 1 into i
  lock screen
  replace numToChar(0) with empty in fld id fldID
  put the formattedText of fld id fldID into fld id fldID
  repeat for each line l in fld id fldID
put (targetWidth - the formattedWidth of line i of fld id fldID) into tLineGaps[i]
    add 1 to i
  end repeat
  put 1 into i
  repeat for each line l in fld id fldID
put padLine(l, tLineGaps[i], numToChar(0)) into line i of fld id fldID
    add 1 to i
  end repeat
  put 1 into i
  repeat for each char c in fld id fldID
    if (char i of fld 1 is numToChar(0)) then
      set the imageSource of char i of fld id fldID to imageID
    end if
    add 1 to i
  end repeat
  unlock screen
end fullJustify
function fullFieldLineWidth fldID
  put (the width of fld id fldID) into targetWidth
  subtract (2* the borderWidth of fld id fldID) from targetWidth
  subtract (item 1 of the margins of fld id fldID) from targetWidth
  get (item 3 of the margins of fld id fldID)
if (it is empty) then subtract (item 1 of the margins of fld id fldID) from targetWidth else subtract (item 3 of the margins of fld id fldID) from targetWidth if (the vScrollbar of fld id fldID) then subtract the scrollbarWidth of fld id fldID from targetWidth
  return targetWidth
end fullFieldLineWidth
function padLine l, pixels
  put empty into tmp1
  put 0 into spaceCount
  repeat for each char c in l
    if (c is space) then add 1 to spaceCount
  end repeat
  if (spaceCount = 0) then return l
  put (pixels div spaceCount) into spacePadding
  put (pixels mod spaceCount) into leftoverPads
  repeat for each char c in l
    if (c is space) then
      repeat spacePadding
        put numToChar(0) after tmp1
      end repeat
    end if
    put c after tmp1
  end repeat
  repeat for each char c in tmp1
    if (c is space) AND (leftoverPads > 0) then
      put numToChar(0) after tmp2
      subtract 1 from leftoverPads
    end if
    put c after tmp2
  end repeat
  return tmp2
end padLine
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution



--
Jacqueline Landman Gay         |     [EMAIL PROTECTED]
HyperActive Software           |     http://www.hyperactivesw.com
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution



_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to