Development/Calc/Defining print Ranges (I47600)
Points to address about i#47600
Detailed specification on Regina's page
new behaviour of the application (Consensus OK)
- When you create a new file : table:print should be set to true (or not set) on every sheet.
- When adding a print range on a sheet, other sheets should not be altered.
Backward compatibility issues (to be further discussed)
(How documents created with the previous versions of the application will be handled by future versions) .
According to the ODF spec, sheets with the table:print attribute set to false should not be printed. Unfortunately, OOo currently sets this attribute to false for every sheet of a new file. It has been decided to fix this in order to have a behaviour of the app which is more predictable and compliant to the specs. The problem is that if the application behaves correctly, the files created with a previous version of the app without any print range, won't print at all. This is not acceptable as this impacts the majority of the files. The possible solutions are to convert the files or to warn the user
1st Option: Converting the files
The idea is to when change all the table:print attributes of a spreadsheet to "true" when they are all set to false. Theorically, that would remove the possibility to have a spreadsheet with all sheets excluded from printing, but such spreadsheets are impossible to create with the current behaviour. (so there is no need to test the version of the last editor of the document) This conversion could be done at the opening of the file, without setting the "modified" state, so that the user doesn't get the feeling that his file has been modified without him doing anything (cf. nn's email 20091019 9h56).
Such a conversion would slow the opening of the spreadsheet, but probably not by a significant amount (to be confirmed).
2nd Option: Warning the user
Instead of changing the file, it is possible to warn the user why his spreadsheet won't print.
The problem with this solution is that it will impact nearly every user, which can be quite disturbing. Just like the previous one, it would also
Forward compatibility issues
(How documents created with the future version of the application will be handled by previous versions) . It's a key point as in large organisation, it's not always possible to upgrade to the latest version.
|Action before printing||3 sheets, no print range defined||3 sheets, 1 print range defined|
|Nothing||Full content of the 3 sheets is printed||Full content of the 2 sheets, and content of the print range is printed|
|Insert a new sheet and add content||Full content of the 3 sheets is printed, but not the one of the new sheet||Full content of the 2 sheets, and content of the print range is printed,but not the one on the new sheet. Bad but that's the current behaviour|
|Delete a sheet||Full content of the 2 remaining sheets is printed||The content of the 2 remaining sheets is printed (full or limited to print range)|
|Add a print range||Full content of the 2 sheets, and content of the print range is printed. Good, but it's different from the current behaviour||Full content of the sheet, and content of the two print ranges is printed|
|Remove a print range||Full content of the 2 other sheets is printed. Not disturbing, even if it's different from the current behaviour||If you remove the print range explicitely defined, nothing from this sheet gets printed|
|Add /remove content to one sheet||Full content of the 3 sheets is printed, print ranges adapt to the new content||Full content of the 2 sheets and content of the print range is printed ; print ranges adapt to the new content|
Overview for relationes between old and new version
Regina 12:20, 22 October 2009 (UTC)
Starting with a new document in default setting
|Action||Old version on old documents||New version on old document without converting||New version on new documents and old, converted documents||Old version on new documents|
|Printing without any changes||All sheets are printed.||No sheet is printed. 1||All sheets are printed.||All sheets are printed|
|Setting a print range||Only the print range is printed, no other sheet is printed 2||Only the print range is printed, no other sheets are printed||The print range is printed and all other sheets are printed||The print range is printed and all other sheets are printed|
|Inserting a new sheet||All sheets are printed||Only the new sheet is printed||All sheets are printed||The new sheet is not printed, all other sheets are printed 3|
|Inserting a print range and a new sheet||Only the print range is printed, no other sheet is printed 2||The print range is printed, the new sheet is printed, other sheets are not printed||The print range is printed and all other sheets are printed||The print range is printed, all old sheets are printed, the new sheet is not printed 4|
1 Such severe change with default setting must not be. Therefore old sheets, which have no print range and no 'entire sheet' setting, have to be converted on import. The question is, whether this should be done quietly.
2 This behavior is unexpected for the user. Here the new version has an important improvement.
3 Should the export filter change back the converting?
4 Users who have solved problem 2 will be able to set the necessary "entire sheet" print setting.
Starting with a new document in default setting and added a print range in the start application
|Action||Old version on old documents||New version on old document without converting||New version on new documents (old documents are not converted)||Old version on new documents|
|Printing without any changes||Only the print range is printed||Only the print range is printed||The print range is printed and all other sheets are printed.||The print range is printed and all other sheets are printed.|
|Adding a print range||Only the print ranges are printed.||Only the print ranges are printed.||The print ranges are printed and all other sheets are printed.||The print ranges are printed and all other sheets are printed.|
|Inserting a new sheet||Only the print range is printed, the new sheet is not printed.5||The print range and the new sheet are printed, other sheets are not printed.||The print range and all other sheets are printed.||The new sheet is not printed, the print range and all other sheets are printed.5|
|Removing the print range||All sheets are printed||The sheet with the removed print range is printed, all other sheets are not printed. 6||All sheets are printed||The sheet with the removed print range is not printed, all others are printed.7|
5 It is no worsening.
6 This can be handled, when converting is not only applied on import but also in this situation.
7 I see no solution to get the old behavior automatically, because the action is done in the old version. But at least users who use the dialog to remove print ranges should know the setting "entire sheet" which is needed here.
Interface ([Consensus to leave it as it is for the moment?)
Format > Print Range > Define Add Remove ------- Edit
Format > Print Ranges > Add print range Define print range (tbd : remove it to unclutter the menu / keep it, as it's often used cf. Feedback data) Edit print ranges... [x]Default print range (tbd : Undo Print Range or Remove or Delete or Print entire sheet) ------------ [x]Exclude sheet from printing (tb confirmed : looks like there is a kind of concensus )
If it is agreed to exclude the repeat column/row options from the Edit print ranges dialogue (see below), the menu will have to be updated accordingly.
Edit print ranges dialogue
- Remove the "none" option
- Put the repeat row/columns options in a different dialogue : cf. Regina's proposal
Context Menu > Define Print Range Add Print Range (Undo Print Range)