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


On 15/11/13 19:03, arkarell wrote:

I managed few days ago to implement the points 1 and 2 for text:table.
I worked in analogy with what was done for sections.
I used the SwTableFmt core object and the SwXTextTable UNO wrapper 
object. But I also modified the SwXMLExport::ExportTable method in
sw/source/filter/xml/xmltble.cxx in order to export xml:id. And it's 
working, I can set and retrieve rdf metadata on tables !!!

wow, sounds great!

I didn't treat any undo/copy/paste/merge, because first, as you said, 
specifications are missing and needs could be very different,  and second
because it doesn't seem to be already treated for yet supported 
elements. For instance, if i set metadata on a paragraph and copy/paste 
this paragraph,
the rdf data are not copied.

yes... what is currently copied is just the xml:id, not the metadata.
that may still be useful, for example if you Cut and Paste in the same
document.

My problem in my modifications is that I put some code at some place but 
without knowledge of the purpose and links of impacted classes.
And I'm not sure to use the good class : for instance for table support 
in core object, why SwTableFmt and not SwTable ? Because SwSectionFmt ?

generally the UNO wrapper object is obvious, and the core object is the
one to which the UNO wrapper object has a pointer.

as you can see from code in untbl.cxx such as ...

  SwXTextTable::SwXTextTable(SwFrmFmt& rFrmFmt)
      : SwClient( &rFrmFmt )


... and SwXTextTable::attachToRange ...

                SwFrmFmt* pTblFmt = pTable->GetFrmFmt();
                lcl_FormatTable( pTblFmt );

                pTblFmt->Add(this);

... it is obvious (well it's obvious if you understand first that
SwClient/SwModify is the horribly deficient notification / observer
mechanism on which all of Writer is built) that you picked the right
class with SwTableFmt (which is a subclass of SwFrmFmt).

Do you have some documentation to understand these objects (core, uno 
wrapper, std or *Fmt, ...) and their relations ?

... not really ... you can look at the doxygen documentation[1] to get a
quick overview (especially useful to quickly see inheritance trees)...
and [2] is a useful article in general...  but usually for this purpose
it's a SwXFoo UNO wrapper class that is a SwClient of some core class,
which is sometimes a SwFrmFmt or subclass.  often there are several core
classes for different aspects of the entity.

things get especially tricky here if the core object is a SfxPoolItem,
like it is with SwXMeta and ::sw::Meta ... but i hope there aren't more
of these left that need an xml:id.

[1] http://docs.libreoffice.org/sw.html
[2] https://wiki.openoffice.org/wiki/Writer/Core_And_Layout


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.