On 24/04/12 22:11, Muhammad Haggag wrote: > Hello. > > Bug: > ==== > https://bugs.freedesktop.org/show_bug.cgi?id=31005 > > Patch: > ===== > https://bugs.freedesktop.org/attachment.cgi?id=60462
hi Muhammad, that's some really nice work from you here! sorry for taking so long, but i had hoped that somebody else would perhaps be more familiar with table autoformats and review this rather substantial patch :) > Patch review: > =========== > https://bugs.freedesktop.org/page.cgi?id=splinter.html&bug=31005&attachment=60462 > > Summary: > ========= > Extended the number of properties supported in AutoFormats, mainly for > Writer. Borders, border styles, table shadow, cell spacing, and text > flow options are now part of autoformats. > > AutoFormat file format was modified so that Writer can use > writer-specific types in the format without having to expose them to > Calc. Calc treats such data as binary blobs that it can skip over. The > same mechanism allows Calc to create autoformats that can be read by > Writer, even when they're missing the Writer-specific types. > > Detailed Changes (copied from patch): > ======================== > This change expands the number of properties supported by autoformats, > mainly for Writer. > Some improvements affect Calc as well (e.g. border styles are now > preserved for Calc). > > Common: boxitem.hxx, frmitems.cxx > * Added a new version for SvxBoxItem serialization that includes border > styles. > * Updated SvxBoxItem and SvxBorderLine serialization logic accordingly. > > Writer: fmtornt.hxx, attrfrm.cxx > * Added serialization/deserialization logic for SwFmtVertOrient. > > Writer: tblafmt.hxx, tblafmt.cxx, ndtbl.cxx > * Updated file version for autotbl.fmt to be SOFFICE_FILEFORMAT_50. > * Autoformats now record the text orientation and vertical alignment > of table cells. > * Autoformats now record the following table-level properties: > - Break > - Keep with next paragraph > - Repeat heading > - Allow table split across pages > - Allow rows to break across pages > - Merge adjacent line styles > - Table shadow > > Writer: UndoTable.hxx, undtbl.cxx > * Undo support for "Repeat Heading" in autoformat application. > > Calc: autoform.hxx, autoform.cxx > * Added support for reading/writing writer-specific data as binary blobs. > * Updated file version for autotbl.fmt to be SOFFICE_FILEFORMAT_50. > > Known Issues: > ============ > * The sharing of autotbl.fmt between Calc and Writer is rather > annoying, and leads to a lot of duplicate code. It might make more > sense to split it into two files, but I'm not sure if autoformat > sharing (between Calc and Writer) is an actively used feature. > * Table->Text Flow->"With Page Style" is not applied, even though it's > saved as part of the autoformat. I'll have to open a bug to track > this. > * The newly added properties were not added to AutoFormat preview > (e.g. table shadow doesn't show up as part of autoformat preview, even > if it's included in the autoformat). wonder why that is, perhaps an SfxItemSet somewhere that has the wrong WhichRange? > * The table properties in the "Table", "Columns", and "Background" > tabs were untouched. "Columns" is for manual table layout, and it's > not clear to me how it can be generalized as part of an autoformat > (i.e. it's highly dependent on the exact number of rows/columns). columns are rather tricky anyway because AFAIK they don't really actually exist in Writer tables... > "Background" is rather low priority, seeing as that cell background's > already working. I ran out of steam for "Table->Alignment" and > "Table->Spacing". I'll probably follow up with another patch for those > once I work on something other than AutoFormats :) couldn't find anything obviously wrong with your patch; other than the email address which was invalid so i've replaced it with your gmail address, perhaps you have not configured git properly, try "git config user.email". > @@ -825,6 +837,9 @@ bool ScAutoFormatData::Load( SvStream& rStream, const ScAfVersions& rVersions ) > rStream >> b; bIncludeValueFormat = b; > rStream >> b; bIncludeWidthHeight = b; > > + if (nVer >= AUTOFORMAT_DATA_ID_31005) > + rStream >> swFields; > + > @@ -878,9 +893,12 @@ bool ScAutoFormatData::Save(SvStream& rStream) > rStream << ( b = bIncludeValueFormat ); > rStream << ( b = bIncludeWidthHeight ); > > + if (fileVersion >= SOFFICE_FILEFORMAT_50) > + rStream << swFields; > + seems inconsistent, the second check should also be for AUTOFORMAT_ID_31005? no, on further examination actually this is right, there really are different kinds of versions involved here :-/ i did some trivial tweaks to your patch, to follow our coding standards added an m_ prefix to all new member variables, which makes things much easier to read (because with the implicit "this" you never know what kind of side-effects an assignment has); also i've split out the Undo thing into a separate commit. it is rather surprising and sub-optimal that all this autoformat stuff uses an awful binary format based on direct serialization of implementation details; this is very brittle and it would be nice for example, if i read the autotbl.fmt with your patch in an old LO without the patch, the old version cannot read it at all. a text-based format (e.g. XML) would be much nicer, in case you want to do further work in this area :) also i noticed there is support for loading ancient versions of this format, as in older than StarOffice5, behind an #ifdef READ_OLDVERS, which is useless nowadays so i've removed that. > QA > === > Ideally, I'd like to have someone do some testing to make sure > autoformats are working as expected. I did a lot of ad-hoc testing for > each newly-supported property, as well as old properties. However, one > should not be trusted to test his own code, especially with such big > changes :) i've tested it just a tiny bit, and i can now apply dashed borders via autoformat; of course more thorough testing by QA folks would be appreciated. > Pieter, who reported the bug, is willing to do some testing provided > he's given a Windows build. He's not a developer, so if there's an > easy way to get him a Windows build with the changes, it'd be great. the tinderboxes should provide daily builds somewhere... pushed your patch to master now, thanks again! regards, michael _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice