On 2018-08-16 19:48, Richard Gaskin via use-livecode wrote:
I'm not sure if this info has been incorporated into the docs system
yet, but the Release Notes for v5.5 offer a solid overview of the new
field features (starting on p12), most of which are paragraph-level
properties like indent, border, padding, etc. (p19), along with the
wonderfully efficient styledText array representation of field
contents ([p16) and super-useful indented lists a la HTML and word
processors (p18):
https://downloads.livecode.com/livecode/5_5_4/LiveCodeNotes-5_5_4.pdf

I think all the relevant props and such are in the dictionary - even the styledText property. However, it is perhaps not the clearest description of the latter - so any suggestions on how to improve that would be most welcome. (As it uses a hierarchical array value - and quite a 'complex' one, relatively speaking - it is quite 'new' in terms of how it works compared to older properties; as such we perhaps haven't found the best way to explain it!).

In response to Clarence's question - paragraph when applied to a field is a synonym to line.

There are two types of style properties - paragraph (line) level and char level. These are all distinct apart from one - metadata.

If you set a char style of a paragraph/line then it is equivalent to char 1 to -1 of line. e.g.

  set the textFont of line 1 of field 1 to "Geneva"
    <=>
  set the textFont of char 1 to -1 of line 1 of field 1

If you set the paragraph style of a char then it is equivalent to
line (the lineIndex of char) of field:

  set the spaceAbove of char 3 of field 1 to 10
    <=>
  set the spaceAbove of line (the lineIndex of char 3 of field 1) to 10

[ Note: 'the lineIndex of <field chunk>' gives the index of the line chunk the start of <field chunk> is in, and the 'charIndex of <field chunk>' gives the index of the char the start of <field chunk> is in. ]

The exception to the above to rules (as mentioned above) is 'the metadata' property - with that property you can *either* set at the line level, or the char level or both:

  set the metadata of line 3 of field 1 to "Hello World!"
  set the metadata of char 3 of line 3 of field 1 to "Goodbye World!"

Will result in "Hello World!" being applied to the line, and "Goodbye World!" being applied to char 3 of the line - i.e. neither clobbers the other, and you need to use the same kind of chunk reference to fetch the value back.

Warmest Regards,

Mark.

P.S. You can largely thank Trevor for the above additions, in particular the styledText and metadata - in terms of providing use-cases which led to their design and implementation.

P.P.S. I won't necessarily thank him for the loss of hair that resulted in actually implementing them in the field object itself. There's a good reason we treat that particular 10,000 odd lines of code with a great deal of care and respect - it really doesn't like being touched very much!

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to