Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


Hi Jakub,

Let me CC the dev list, others might have an opinion on this.

On Mon, Jun 13, 2016 at 08:53:44PM +0200, Jakub Trzebiatowski <ubap.dev@gmail.com> wrote:
Thats because currently SwTableAutoFormat stores more information
about the formatting that would be saved. When loading that might lead to a
different looking style.

You could came up with a markup that can save our table autoformat in
ODF without loosing data, it's allowed to put additional attributes on
e.g. <table:table-template> in an extension namespace; i.e. in our case
loext:foo="bar" is still valid ODF.

The same is true for additional elements inside e.g.
<table:table-template>.

For example: currently It is possible to define a SwTableAutoFormat which
looks
like this: http://i.imgur.com/aCopnkQ.png
However, according to OASIS 1.2
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.
html#__RefHeading__1416308_253892949.
First-row style is more important (Applied before column styles. So no
column
styles could alter first-row style.). Screenshot shows current behaviour,
column styles being more important than first-row style.

This could be solved by a new optional
loext:first-row-start-column-priority="..." attribute, which would be
"row" by default, but when we export a table autoformat, we would set it
to "column".

Next problem comes with
first-row-end-column, first-row-start-column, last-row-end-column,
last-row-start-column attributes. They do state what style (current row or
current column) should be applied to top most left, most right, botom most
left,
most right cell. In SwTableAutoFormat there is no logic, decisions for that.
Styles for these cells are sampled and stored.

So do I understand correctly that in ODF e.g. the format of the A1 cell
is always the format of the first row or the start column, but our
autoformat allows an entirely different format as well?

My thoughts how it could be fixed:
1) Modify SwTableAutoFormat to be more like table-template. Add attributes
for
   table:first-row-end-column, table:first-row-start-column,
   table:last-row-end-column, table:last-row-start-column attributes. Which
   would be determined upon creating a SwTableAutoFormat (and later might be
   modified when the UI part comes).

This sounds good to me, though you have to be careful about table
autoformat modifications, as the table autoformats are saved in the user
profile in binary form (I think it works by overriding
SfxPoolItem::Store() in the given pool item subclasses).

2) Hardcode pre-defined values for these properties. Thats how its done in
   Impress. (Technically there is no export for these attribues, but the
   behaviour of style is like the attributes were hardcoded). But that
wouldn't
   fix in any way problem with column styles applied before first-row style.

If possible, I would avoid hardcoding anything, that will lead to
trouble with other ODF implementations.

Anyway I'll have to implement a PropertySet for UNO SwXTextTableStyle
describing these attributes.

I think it would be good to keep the UNO API close to ODF, so that
xmloff can simply map UNO object properties to XML attributes.

What do you think about it, how should I proceed?

I think the best would be to try to extend SwTableAutoFormat to be more
temple-template-like, by adding new attributes for your needs. Search
for VersionMap in sw/ and see how the saving and loading of the table
autoformat definitions works; once you understand how you can change the
binary format without breaking existing definitions, it should be
possible to add your new properties there.

Second-best is to extend ODF to suit our needs, though that'll later
need paperwork to turn loext:foo into an official ODF attribute.

In case you don't find the place where this binary load/saving of table
autoformats happen, ask and I'll look up the exact code. :-)

Thanks,

Miklos

Attachment: signature.asc
Description: Digital signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.