Color My Word--Open Color Palette

Björnke von Gierke bvg at mac.com
Wed Apr 2 20:39:01 EST 2003


On Mittwoch, Apr 2, 2003, at 20:16 Europe/Zurich, Cubist at aol.com wrote:
> ...
> Perhaps it might be worth someone's while
> to write a style-applying handler that does not display this behavior?
> ...

Well I have a very old script which does exactly that. It was one of 
the first scripts that I ever wrote to use it (not only to learn the 
language). I remember splitting it up to work around the script limit, 
and also remember to set the traversalOn of the button to false. This 
example is with italic, there is only one occurrence of "italic" that 
needs to be changed. It is probably extremely bad done and/or slow (I 
remember finding it fast enough for my task), but it might be a 
starting point for you to improve upon (start with the repeat loops, 
"repeat for each <chunktype>..." is much faster then "repeat with...", 
and some "exit repeat" are in order). Oh and look out for wrapped lines!
comments added now.


on mouseUp
   put "text" into myField --this is the name of the field your styled 
text is in
   put "italic" into myStyle --change here for other styles
   if the textstyle of the selection contains myStyle then --faster way, 
style not "mixed"
     put the textstyle of the selection into myCurrentStyle
     delete item itemoffset(myStyle, myCurrentStyle) myCurrentStyle
     set the textstyle of the selection to myCurrentStyle
   else --slower way
     repeat with myChar = the second word of the selectedChunk to the 
fourth word of the selectedChunk
       if the textstyle of char mychar of field "text" contains myStyle 
then --italic is present
         add one to styleCount
       end if
     end repeat
     if  styleCount > (the number of chars in the selection) / 2 then 
--remove style/add style switch
       styleChar myStyle, myField, "remove"
     else
       styleChar myStyle, myField, "add"
     end if
   end if
end mouseUp

on styleChar myStyle, myField, myMode
--now the complexity increases, this is quiet streamlined for the 10 
line limit
--the clue here generally is that single chars do NOT return "mixed" in 
their style
--i am too tired too comment all of this, ask if there are problems
   lock screen
   repeat with myChar = the second word of the selectedChunk to the 
fourth word of the selectedChunk
     put the textStyle of char myChar of card field myField into 
myCurrentStyle
     put myChar into mySecChar
     repeat while the textStyle of char mySecChar+1 of field myField = 
myCurrentStyle and mysecchar < the number of chars in the selection
--skipping all chars with the same style to change them all at once
       add one to mySecChar
     end repeat
     if myStyle is in myCurrentStyle and myMode = "remove" then
       delete item itemoffset(myStyle,myCurrentStyle) myCurrentStyle
       set the textstyle of char myChar to mySecChar of field myField to 
myCurrentStyle
     else if  myStyle is not in myCurrentStyle and myMode = "add" then
       if the textstyle of char myChar to mySecChar of field myField <> 
empty then
         set the textstyle of char myChar to mySecChar of field myField 
to the textstyle of char myChar to mySecChar of field myField & ", " & 
myStyle --adding style
       else
         set the textstyle of char mychar to mySecChar of field myField 
to myStyle --style was plain
       end if
     end if
     put mySecChar into myChar
   end repeat
end StyleChar




More information about the Use-livecode mailing list