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


Hi Eike
On 24/04/12 20:31, Eike Rathke wrote:
Hi Noel,

Sorry, this took too long..
No problem, thanks for taking the time and having a look

On Wednesday, 2012-04-18 21:01:41 +0100, Noel Power wrote:

I've been looking at providing support for the repeating character
in number formats. I've been playing abit with the code and what I
have sofar seems to work reasonably well ( no doubt there are plenty
of edge cases still to be discovered )  But.. life would be simpler
I think if we had just stored a plain format code like docx seems to
rather than the fancy pants xml that's there now :/
Well, try to exactly specify that format code syntax for an open
standard, with all it's quirks MS may have hidden.. ironically even
OOXML didn't attempt that. Yes, _they_ got away with that..
;-) ahh my gripe is the xml seems a little over the top where a plain string format would do ( and be possibly be easier to change ) also would be closer or same as what's actually used in the formatter. The fact the format may not be well specified by MS is another matter ( and yes, their specification(s) to do with that are fuzzy ) :-) But really I am only complaining because I can't figure out a way not to have to incur an odf change and all the 'fun' that might bring :-)
[...]

Note that Excel's '*' definition is a bit "unsharp":

http://office.microsoft.com/en-us/excel-help/number-format-codes-HP005198679.aspx
Text and spacing, Repeating characters:

| To repeat the next character in the format to fill the column width,
| include an asterisk (*) in the number format. For example, type 0*- to
| include enough dashes after a number to fill the cell, or type *0 before
| any format to include leading zeros.

So "fill the column width" actually knows (I guess?) three conditions:
* start of text: fill from left border to text
* in text: split text in two, left justify first part, right justify
   second part, fill with character in between
* end of text: fill from text to right border
   (this I only guess, does Excel do that?)
maybe I am naive, isn't this complicating things ( right/left justified ? ) doesn't it just fill to available width ( granted with assumed knowledge of column width border size etc. ) with 0 or more of the character to repeat ? I would expect an existing left/center/right justification on the cell to be ignored when this 'special' format code is specified ( admittedly I haven't tried this... )

Whatever Excel does nowadays if more than one * are present, I hope it
still bails out with an error.
you will think I am very lazy, I think trying to report errors in those formats would be more complex than it's worth ( e.g you need to generate messages ( where? ) with "[ specific type of format err ] at position x" type information ) Afaics with mso (xp at least) and libreoffice the formatter fails silently, I mean generally I suppose people just rely on the preview and/or applying the format to show you if the format worked. With that in mind I would specify ( in whatever specification blurb we might provide ) that we expect only one '*[char]' in the format but in the event of more that one occurrence we take ( to be decided ) either the first or last one and ignore the others.
  And what if it occurs in date/time format
codes?
I am completely ignoring those for the moment, should work the same though, that would be the intention :-)

I assume also left/centered/right justification affects things for
leading/trailing fills.
unless Excel does this I would avoid such complication like the plague ( especially given my complete ignorance in such matters ;-) ) Saying that I didn't test even what would happen on the calc side with same :-/

Given that I think we'd need a number:fill-character or some such
attribute to go with
16.27 Data Styles
http://docs.oasis-open.org/office/v1.2/cs01/OpenDocument-v1.2-cs01-part1.html#__RefHeading__1416346_253892949
with the limitation that it can be present only once (if that is what
Excel does) and specyfing what happens in these three conditions.

Your number:repeated does fine, but may not survive ODF-speak (neither
may my number:fill-character ;-) as someone might ask "how many times to
be repeated".
I really hope no question like that comes up, surely the concept of a code/directive that is implemented by the view/layout ( there must be other types of fill to width/height etc. concepts in writer/calc ) is not alien. So basically we are talking about changing 'repeated' to 'fill-character' and using it in the same way? ( /me thinks +1 for 'number:fill-character' which imo better describes things anyway )
[...]
   Also I worry a little that there seemed to be at one
point support for the '*' format code, I wonder what the history was
or is it just a case of unfinished business?
That is a remainder of old times.. the format code scanner is able to
handle that (and it should)
definitely seems to handle it :-)

[...]

we could use

     String aFill;
     aFill.Expand( nNumCharsToInsert, mnChar);
     aTmpStr.Insert( aFill, mnPos);

to avoid multiple reallocations with character-based Insert.
we just should use that, I will change it thanks!
+    SfxObjectShell* pDocSh  = SfxObjectShell::Current();
+    if ( pDocSh )
+    {
+        // is this a calc document
+        Reference<  XServiceInfo>  xSI( pDocSh->GetModel(), UNO_QUERY );
+        if ( xSI.is() )
+            bUseStarFormat = xSI->supportsService( rtl::OUString( 
"com.sun.star.sheet.SpreadsheetDocument" ) );
+    }
Heh, that's clever :-)
no no, not clever, this just relects my the fact I haven't looked at or really thought about writer much yet, since those formats can be used in writer tables it *might* make sense to use them in that context too ( the same odf elements apply right ? ) but then again a table column doesn't have to exclusively contain the number formatted item so it's not quite the same and its not clear to me where what width you might fill to ( we might be better off just avoiding that altogether )

So, assuming there is nothing controversial about my thoughts above ( and I guess I need to do some more investigation wrt justification ) the question is where to go next?, what's the standard way of moving forward?, in the meantime can we use some experimental name space, can we assume 'number:fill-character' can be used?

thanks again
Noel

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.