From d7f1b41599a325750548421b14cd2daceaabccdc Mon Sep 17 00:00:00 2001 From: henrikjust Date: Sun, 9 May 2010 13:40:00 +0000 Subject: [PATCH] Writer2xhtml: Some work on lists and headings git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@62 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- source/distro/changelog.txt | 9 +- source/distro/doc/user-manual.odt | Bin 48233 -> 48399 bytes .../writer2xhtml/ConfigurationDialog.java | 37 +++--- .../writer2latex/api/ConverterFactory.java | 4 +- .../java/writer2latex/office/ListStyle.java | 7 +- .../writer2latex/office/OfficeReader.java | 6 +- .../java/writer2latex/office/XMLString.java | 3 +- source/java/writer2latex/xhtml/Converter.java | 3 +- .../writer2latex/xhtml/ConverterHelper.java | 6 +- .../xhtml/HeadingStyleConverter.java | 125 ++++++++++++++++++ .../xhtml/ListStyleConverter.java | 6 +- .../writer2latex/xhtml/ParStyleConverter.java | 43 +----- .../writer2latex/xhtml/StyleConverter.java | 7 +- .../writer2latex/xhtml/TextConverter.java | 67 ++++++---- .../java/writer2latex/xhtml/XhtmlConfig.java | 98 ++++++++------ .../writer2latex/W2LDialogs/LaTeXOptions.xdl | 2 +- .../writer2xhtml/W2XDialogs2/Formatting.xdl | 14 +- .../oxt/writer2xhtml/W2XDialogs2/Styles1.xdl | 3 +- 18 files changed, 295 insertions(+), 145 deletions(-) create mode 100644 source/java/writer2latex/xhtml/HeadingStyleConverter.java diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index b0f45cd..d6961bb 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -1,11 +1,12 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 -TODO: Problem med genkendelse af display formler i w2l?? - ---------- version 1.1.3 ---------- -[w2x] New option "use_hard_list_numbering". If this option is set to true (default is false), list labels are exported as - part of the text rather than by style. This allows for full support of list numbering. +[w2x] New style map "heading" to map styles applied to headings to custom styles. + +[w2x] The option "use_list_hack" has been renamed to "list_formatting" with the new values "css1", "css1_hack" and "hard_labels". + The two first values corresponds to "false" and "true" of the old option. The new value requests that + list labels are exported as part of the text rather than by style. This allows for full support of list numbering. [w2x] Now includes a space after the list label if the list style defines that the label is followed by a tab or a space diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index d54fcb1f983d3748ed28f0eb25848301db4113cc..4ac9d12a50282f085905099ffac4ceee65d4d11e 100644 GIT binary patch delta 41229 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 delta 41090 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 IYWu7Ge~OQQFaQ7m diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java b/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java index 26f00ea..4915d0c 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/ConfigurationDialog.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * -* Version 1.2 (2010-05-04) +* Version 1.2 (2010-05-06) * */ @@ -237,30 +237,32 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer } private class Styles1Handler extends StylesPageHandler { - private final String[] sXhtmlFamilyNames = { "text", "paragraph", "list", "frame" }; - private final String[] sXhtmlOOoFamilyNames = { "CharacterStyles", "ParagraphStyles", "NumberingStyles", "FrameStyles" }; + private final String[] sXhtmlFamilyNames = { "text", "paragraph", "heading", "list", "frame" }; + private final String[] sXhtmlOOoFamilyNames = { "CharacterStyles", "ParagraphStyles", "ParagraphStyles", "NumberingStyles", "FrameStyles" }; private final String[] sParElements = { "p", "h1", "h2", "h3", "h4", "h5", "h6", "address", "dd", "dt", "pre" }; private final String[] sParBlockElements = { "div", "blockquote", "dl" }; private final String[] sEmpty = { }; - private String[][] sElements = new String[4][]; - private String[][] sBlockElements = new String[4][]; + private String[][] sElements = new String[5][]; + private String[][] sBlockElements = new String[5][]; protected Styles1Handler() { - super(4); + super(5); sFamilyNames = sXhtmlFamilyNames; sOOoFamilyNames = sXhtmlOOoFamilyNames; sElements[0] = sCharElements; sElements[1] = sParElements; - sElements[2] = sEmpty; + sElements[2] = sParElements; sElements[3] = sEmpty; + sElements[4] = sEmpty; sBlockElements[0] = sEmpty; sBlockElements[1] = sParBlockElements; - sBlockElements[2] = sEmpty; + sBlockElements[2] = sParBlockElements; sBlockElements[3] = sEmpty; + sBlockElements[4] = sEmpty; } protected String getDefaultConfigName() { @@ -272,7 +274,7 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer if (!attr.containsKey("css")) { attr.put("css", ""); } dlg.setComboBoxText("Element", attr.get("element")); dlg.setTextFieldText("Css", none2empty(attr.get("css"))); - if (nCurrentFamily==1) { + if (nCurrentFamily==1 || nCurrentFamily==2) { if (!attr.containsKey("block-element")) { attr.put("block-element", ""); } if (!attr.containsKey("block-css")) { attr.put("block-css", ""); } dlg.setComboBoxText("BlockElement", attr.get("block-element")); @@ -287,7 +289,7 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer protected void getControls(DialogAccess dlg, Map attr) { attr.put("element", dlg.getComboBoxText("Element")); attr.put("css", empty2none(dlg.getTextFieldText("Css"))); - if (nCurrentFamily==1) { + if (nCurrentFamily==1 || nCurrentFamily==2) { attr.put("block-element", dlg.getComboBoxText("BlockElement")); attr.put("block-css", empty2none(dlg.getTextFieldText("BlockCss"))); } @@ -303,9 +305,9 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer protected void prepareControls(DialogAccess dlg) { dlg.setListBoxStringItemList("Element", sElements[nCurrentFamily]); dlg.setListBoxStringItemList("BlockElement", sBlockElements[nCurrentFamily]); - dlg.setControlEnabled("Element", nCurrentFamily<=1); - dlg.setControlEnabled("BlockElement", nCurrentFamily==1); - dlg.setControlEnabled("BlockCss", nCurrentFamily==1); + dlg.setControlEnabled("Element", nCurrentFamily<=2); + dlg.setControlEnabled("BlockElement", nCurrentFamily==1 || nCurrentFamily==2); + dlg.setControlEnabled("BlockCss", nCurrentFamily==1 || nCurrentFamily==2); } } @@ -349,6 +351,7 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer private class FormattingHandler extends PageHandler { private final String[] sExportValues = { "convert_all", "ignore_styles", "ignore_hard", "ignore_all" }; + private final String[] sListExportValues = { "css1", "css1_hack", "hard_labels" }; @Override protected void setControls(DialogAccess dlg) { listBoxFromConfig(dlg, "Formatting", "formatting", sExportValues, (short) 0); @@ -363,8 +366,8 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer config.getOption("table_formatting").equals("ignore_styles")); checkBoxFromConfig(dlg, "IgnoreTableDimensions", "ignore_table_dimensions"); - checkBoxFromConfig(dlg, "UseListHack", "use_list_hack"); - checkBoxFromConfig(dlg, "UseHardListNumbering", "use_hard_list_numbering"); + + listBoxFromConfig(dlg, "ListFormatting", "list_formatting", sListExportValues, (short) 0); //TODO: These have been postponed //checkBoxFromConfig(dlg, "ConvertToPx", "convert_to_px"); //checkBoxFromConfig(dlg, "SeparateStylesheet", "separate_stylesheet"); @@ -378,8 +381,8 @@ public class ConfigurationDialog extends ConfigurationDialogBase implements XSer config.setOption("table_formatting", dlg.getCheckBoxStateAsBoolean("TableFormatting") ? "convert_all" : "ignore_all"); checkBoxToConfig(dlg, "IgnoreTableDimensions", "ignore_table_dimensions"); - checkBoxToConfig(dlg, "UseListHack", "use_list_hack"); - checkBoxToConfig(dlg, "UseHardListNumbering", "use_hard_list_numbering"); + + listBoxToConfig(dlg, "ListFormatting", "list_formatting", sListExportValues); //TODO: These have been postponed //checkBoxToConfig(dlg, "ConvertToPx", "convert_to_px"); //checkBoxToConfig(dlg, "SeparateStylesheet", "separate_stylesheet"); diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index f60dad8..80d150d 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-05-04) + * Version 1.2 (2010-05-09) * */ @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.1.3"; - private static final String DATE = "2010-05-04"; + private static final String DATE = "2010-05-09"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)
diff --git a/source/java/writer2latex/office/ListStyle.java b/source/java/writer2latex/office/ListStyle.java index 3a01b53..733c000 100644 --- a/source/java/writer2latex/office/ListStyle.java +++ b/source/java/writer2latex/office/ListStyle.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2009 by Henrik Just + * Copyright: 2002-2010 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2009-04-27) + * Version 1.2 (2010-05-09) * */ @@ -58,7 +58,8 @@ public class ListStyle extends OfficeStyle { } public boolean isNumber(int i) { - return XMLString.TEXT_LIST_LEVEL_STYLE_NUMBER.equals(level[i].getName()); + return XMLString.TEXT_LIST_LEVEL_STYLE_NUMBER.equals(level[i].getName()) || + XMLString.TEXT_OUTLINE_LEVEL_STYLE.equals(level[i].getName()); } public boolean isBullet(int i) { diff --git a/source/java/writer2latex/office/OfficeReader.java b/source/java/writer2latex/office/OfficeReader.java index 02d3e70..ce2ea78 100644 --- a/source/java/writer2latex/office/OfficeReader.java +++ b/source/java/writer2latex/office/OfficeReader.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-03-29) + * Version 1.2 (2010-05-09) * */ @@ -1022,7 +1022,7 @@ public class OfficeReader { //collectMasterPage(getParStyle(node.getAttribute(XMLString.TEXT_STYLE_NAME))); } else if (sName.equals(XMLString.TEXT_H)) { - int nLevel = Misc.getPosInteger(node.getAttribute(XMLString.TEXT_LEVEL),1); + int nLevel = Misc.getPosInteger(node.getAttribute(XMLString.TEXT_OUTLINE_LEVEL),1); StyleWithProperties style = getParStyle(node.getAttribute(XMLString.TEXT_STYLE_NAME)); //collectMasterPage(style); if (1<=nLevel && nLevel<=10 && heading[nLevel]==null) { @@ -1030,7 +1030,7 @@ public class OfficeReader { heading[nLevel] = getParStyle(style.getParentName()); } else { - heading[nLevel] = null; + heading[nLevel] = style; } } } diff --git a/source/java/writer2latex/office/XMLString.java b/source/java/writer2latex/office/XMLString.java index caf430d..877ecdf 100644 --- a/source/java/writer2latex/office/XMLString.java +++ b/source/java/writer2latex/office/XMLString.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-02-19) + * Version 1.2 (2010-05-09) * */ @@ -250,6 +250,7 @@ public class XMLString { public static final String TEXT_SEQUENCE_DECLS="text:sequence-decls"; public static final String TEXT_SEQUENCE_DECL="text:sequence-decl"; public static final String TEXT_OUTLINE_STYLE="text:outline-style"; + public static final String TEXT_OUTLINE_LEVEL_STYLE="text:outline-level-style"; public static final String TEXT_LIST_STYLE="text:list-style"; public static final String TEXT_LIST_LEVEL_STYLE_NUMBER="text:list-level-style-number"; public static final String TEXT_LIST_LEVEL_STYLE_BULLET="text:list-level-style-bullet"; diff --git a/source/java/writer2latex/xhtml/Converter.java b/source/java/writer2latex/xhtml/Converter.java index 13fc5ec..394a2d7 100644 --- a/source/java/writer2latex/xhtml/Converter.java +++ b/source/java/writer2latex/xhtml/Converter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-04-23) + * Version 1.2 (2010-05-09) * */ @@ -40,7 +40,6 @@ import java.io.IOException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; -import org.w3c.dom.NodeList; import org.w3c.dom.Text; import writer2latex.api.Config; diff --git a/source/java/writer2latex/xhtml/ConverterHelper.java b/source/java/writer2latex/xhtml/ConverterHelper.java index 149cfae..767c212 100644 --- a/source/java/writer2latex/xhtml/ConverterHelper.java +++ b/source/java/writer2latex/xhtml/ConverterHelper.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2008 by Henrik Just + * Copyright: 2002-2010 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-09-08) + * Version 1.2 (2010-05-09) * */ @@ -41,6 +41,8 @@ public class ConverterHelper { protected ParStyleConverter getParSc() { return converter.getStyleCv().getParSc(); } + protected HeadingStyleConverter getHeadingSc() { return converter.getStyleCv().getHeadingSc(); } + protected ListStyleConverter getListSc() { return converter.getStyleCv().getListSc(); } protected SectionStyleConverter getSectionSc() { return converter.getStyleCv().getSectionSc(); } diff --git a/source/java/writer2latex/xhtml/HeadingStyleConverter.java b/source/java/writer2latex/xhtml/HeadingStyleConverter.java new file mode 100644 index 0000000..0c91dab --- /dev/null +++ b/source/java/writer2latex/xhtml/HeadingStyleConverter.java @@ -0,0 +1,125 @@ +/************************************************************************ + * + * HeadingStyleConverter.java + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * Copyright: 2002-2010 by Henrik Just + * + * All Rights Reserved. + * + * Version 1.2 (2010-05-09) + * + */package writer2latex.xhtml; + +import writer2latex.office.OfficeReader; +import writer2latex.office.OfficeStyleFamily; +import writer2latex.office.StyleWithProperties; +import writer2latex.util.CSVList; + +public class HeadingStyleConverter extends StyleConverterHelper { + + public HeadingStyleConverter(OfficeReader ofr, XhtmlConfig config, + Converter converter, int nType) { + super(ofr, config, converter, nType); + this.styleMap = config.getXHeadingStyleMap(); + this.bConvertStyles = config.xhtmlFormatting()==XhtmlConfig.CONVERT_ALL || config.xhtmlFormatting()==XhtmlConfig.IGNORE_HARD; + this.bConvertHard = config.xhtmlFormatting()==XhtmlConfig.CONVERT_ALL || config.xhtmlFormatting()==XhtmlConfig.IGNORE_STYLES; + } + + @Override + public String getStyleDeclarations(String sIndent) { + if (bConvertStyles) { + StringBuffer buf = new StringBuffer(); + for (int i=1; i<=6; i++) { + if (ofr.getHeadingStyle(i)!=null) { + CSVList props = new CSVList(";"); + getParSc().applyProperties(ofr.getHeadingStyle(i),props,true); + props.addValue("clear","left"); + buf.append(sIndent).append("h").append(i) + .append(" {").append(props.toString()).append("}").append(config.prettyPrint() ? "\n" : " "); + } + } + return buf.toString(); + } + return ""; + } + + @Override + public OfficeStyleFamily getStyles() { + return ofr.getParStyles(); + } + + /** Apply a style on a heading + * + * @param nLevel the heading level + * @param sStyleName the style name + * @param info add style information to this StyleInfo + */ + public void applyStyle(int nLevel, String sStyleName, StyleInfo info) { + StyleWithProperties style = (StyleWithProperties) getStyles().getStyle(sStyleName); + if (style!=null) { + if (config.multilingual()) { applyLang(style,info); } + applyDirection(style,info); + if (style.isAutomatic()) { + // Apply parent style + hard formatting + applyStyle(nLevel, style.getParentName(),info); + if (bConvertHard) { getParSc().applyProperties(style,info.props,false); } + } + else { + String sDisplayName = style.getDisplayName(); + if (styleMap.contains(sDisplayName)) { + // Apply attributes as specified in style map from user + info.sTagName = styleMap.getBlockElement(sDisplayName); + if (!"(none)".equals(styleMap.getBlockCss(sDisplayName))) { + info.sClass = styleMap.getBlockCss(sDisplayName); + } + } + else { + // TODO: Apply style if different from main style for this level + } + } + } + } + + /** Apply an inner style on a heading. The inner style surrounds the text content, excluding the numbering label. + * Inner styles are not an OpenDocument feature, but is provided as an additional style hook for own style sheets. + * An inner style is only applied if there is an explicit style map for the style. + * + * @param nLevel the heading level + * @param sStyleName the style name + * @param info add style information to this StyleInfo + */ + public void applyInnerStyle(int nLevel, String sStyleName, StyleInfo info) { + StyleWithProperties style = (StyleWithProperties) getStyles().getStyle(sStyleName); + if (style!=null) { + if (style.isAutomatic()) { + // Apply parent style + applyInnerStyle(nLevel, style.getParentName(), info); + } + else { + String sDisplayName = style.getDisplayName(); + if (styleMap.contains(sDisplayName)) { + // Apply attributes as specified in style map from user + info.sTagName = styleMap.getElement(sDisplayName); + if (!"(none)".equals(styleMap.getCss(sDisplayName))) { + info.sClass = styleMap.getCss(sDisplayName); + } + } + } + } + } + +} diff --git a/source/java/writer2latex/xhtml/ListStyleConverter.java b/source/java/writer2latex/xhtml/ListStyleConverter.java index 5a967fb..349af61 100644 --- a/source/java/writer2latex/xhtml/ListStyleConverter.java +++ b/source/java/writer2latex/xhtml/ListStyleConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-05-04) + * Version 1.2 (2010-05-05) * */ @@ -102,7 +102,7 @@ public class ListStyleConverter extends StyleConverterHelper { buf.append(props.toString()); buf.append("}"); buf.append(config.prettyPrint() ? "\n" : " "); - if (config.useHardListNumbering()) { + if (config.listFormatting()==XhtmlConfig.HARD_LABELS) { // Apply left margin and text indent to the paragraphs contained in the list CSVList parProps = new CSVList(";"); cssListParMargins(style,nLevel,parProps); @@ -137,7 +137,7 @@ public class ListStyleConverter extends StyleConverterHelper { // so we will stick with the simpler CSS1-like list style properties props.addValue("margin-top","0"); props.addValue("margin-bottom","0"); - if (!config.useHardListNumbering()) { + if (config.listFormatting()!=XhtmlConfig.HARD_LABELS) { // Export the numbering to CSS1 String sLevelType = style.getLevelType(nLevel); if (XMLString.TEXT_LIST_LEVEL_STYLE_NUMBER.equals(sLevelType)) { diff --git a/source/java/writer2latex/xhtml/ParStyleConverter.java b/source/java/writer2latex/xhtml/ParStyleConverter.java index f7032bd..2e5d5c2 100644 --- a/source/java/writer2latex/xhtml/ParStyleConverter.java +++ b/source/java/writer2latex/xhtml/ParStyleConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-03-01) + * Version 1.2 (2010-05-09) * */ @@ -38,23 +38,19 @@ import writer2latex.util.CSVList; pseudo-element or to an additional inline element. */ - /** * This class converts OpenDocument paragraph styles to CSS2 styles for - * use in paragraphs and headings. + * use in ordinary paragraphs. * This also includes conversion of paragraph properties in other styles - * (cell styles). + * (heading styles, cell styles). */ public class ParStyleConverter extends StyleWithPropertiesConverterHelper { - // Some bookkeeping for headings - private String[] sHeadingStyles = new String[7]; - /** Create a new ParStyleConverter * @param ofr an OfficeReader to read style information from * @param config the configuration to use * @param converter the main Converter class - * @param nType the type of xhtml to use + * @param nType the type of XHTML to use */ public ParStyleConverter(OfficeReader ofr, XhtmlConfig config, Converter converter, int nType) { super(ofr,config,converter,nType); @@ -63,37 +59,6 @@ public class ParStyleConverter extends StyleWithPropertiesConverterHelper { this.bConvertHard = config.xhtmlFormatting()==XhtmlConfig.CONVERT_ALL || config.xhtmlFormatting()==XhtmlConfig.IGNORE_STYLES; } - // TODO: Remove me, OfficeReader takes care of this - public void setHeadingStyle(int nLevel, String sStyleName) { - if (sHeadingStyles[nLevel]==null) { - sHeadingStyles[nLevel] = sStyleName; - } - } - - /** Convert style information for used styles - * @param sIndent a String of spaces to add before each line - */ - public String getStyleDeclarations(String sIndent) { - StringBuffer buf = new StringBuffer(); - buf.append(super.getStyleDeclarations(sIndent)); - if (bConvertStyles) { - // Styles for headings - for (int i=1; i<=6; i++) { - if (sHeadingStyles[i]!=null) { - StyleWithProperties style = ofr.getParStyle(sHeadingStyles[i]); - if (style!=null) { - CSVList props = new CSVList(";"); - applyProperties(style,props,true); - props.addValue("clear","left"); - buf.append(sIndent).append("h").append(i) - .append(" {").append(props.toString()).append("}").append(config.prettyPrint() ? "\n" : " "); - } - } - } - } - return buf.toString(); - } - /** Get the family of paragraph styles * @return the style family */ diff --git a/source/java/writer2latex/xhtml/StyleConverter.java b/source/java/writer2latex/xhtml/StyleConverter.java index 85ce5ad..adb60c5 100644 --- a/source/java/writer2latex/xhtml/StyleConverter.java +++ b/source/java/writer2latex/xhtml/StyleConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-02-27) + * Version 1.2 (2010-05-09) * */ @@ -49,6 +49,7 @@ class StyleConverter extends ConverterHelper { // Helpers for text styles private TextStyleConverter textSc; private ParStyleConverter parSc; + private HeadingStyleConverter headingSc; private ListStyleConverter listSc; private SectionStyleConverter sectionSc; @@ -71,6 +72,7 @@ class StyleConverter extends ConverterHelper { // Create the helpers textSc = new TextStyleConverter(ofr,config,converter,nType); parSc = new ParStyleConverter(ofr,config,converter,nType); + headingSc = new HeadingStyleConverter(ofr,config,converter,nType); listSc = new ListStyleConverter(ofr,config,converter,nType); sectionSc = new SectionStyleConverter(ofr,config,converter,nType); tableSc = new TableStyleConverter(ofr,config,converter,nType); @@ -86,6 +88,8 @@ class StyleConverter extends ConverterHelper { protected ParStyleConverter getParSc() { return parSc; } + protected HeadingStyleConverter getHeadingSc() { return headingSc; } + protected ListStyleConverter getListSc() { return listSc; } protected SectionStyleConverter getSectionSc() { return sectionSc; } @@ -147,6 +151,7 @@ class StyleConverter extends ConverterHelper { // Presentation documents: frame, presentation, page buf.append(getTextSc().getStyleDeclarations(sIndent)); buf.append(getParSc().getStyleDeclarations(sIndent)); + buf.append(getHeadingSc().getStyleDeclarations(sIndent)); buf.append(getListSc().getStyleDeclarations(sIndent)); buf.append(getSectionSc().getStyleDeclarations(sIndent)); buf.append(getCellSc().getStyleDeclarations(sIndent)); diff --git a/source/java/writer2latex/xhtml/TextConverter.java b/source/java/writer2latex/xhtml/TextConverter.java index 2815141..41f8583 100644 --- a/source/java/writer2latex/xhtml/TextConverter.java +++ b/source/java/writer2latex/xhtml/TextConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-05-04) + * Version 1.2 (2010-05-09) * */ @@ -396,7 +396,7 @@ public class TextConverter extends ConverterHelper { int nOutlineLevel = getOutlineLevel((Element)child); Node rememberNode = hnode; hnode = maybeSplit(hnode,nOutlineLevel,bAfterHeading); - handleHeading(child,hnode,rememberNode!=hnode); + handleHeading((Element)child,hnode,rememberNode!=hnode); } else if (nodeName.equals(XMLString.TEXT_LIST) || // oasis nodeName.equals(XMLString.TEXT_UNORDERED_LIST) || // old @@ -498,7 +498,7 @@ public class TextConverter extends ConverterHelper { return newhnode.getParentNode(); } - private void handleHeading(Node onode, Node hnode, boolean bAfterSplit) { + private void handleHeading(Element onode, Node hnode, boolean bAfterSplit) { int nListLevel = getOutlineLevel((Element)onode); boolean bUnNumbered = "true".equals(Misc.getAttribute(onode,XMLString.TEXT_IS_LIST_HEADER)); boolean bRestart = "true".equals(Misc.getAttribute(onode,XMLString.TEXT_RESTART_NUMBERING)); @@ -510,9 +510,10 @@ public class TextConverter extends ConverterHelper { /* * Process a text:h tag */ - private void handleHeading(Node onode, Node hnode, boolean bAfterSplit, + private void handleHeading(Element onode, Node hnode, boolean bAfterSplit, ListStyle listStyle, int nListLevel, boolean bUnNumbered, boolean bRestart, int nStartValue) { + String sStyleName = onode.getAttribute(XMLString.TEXT_STYLE_NAME); // Note: nListLevel may in theory be different from the outline level, // though the ui in OOo does not allow this @@ -521,9 +522,9 @@ public class TextConverter extends ConverterHelper { // TODO: Offer CSS2 solution as an alternative later. // Note: Conditional styles are not supported - int nLevel = getOutlineLevel((Element)onode); + int nLevel = getOutlineLevel(onode); if (nLevel<=6) { - if (nLevel==1) { currentChapter = (Element) onode; } + if (nLevel==1) { currentChapter = onode; } // If split output, add headings of higher levels if (bAfterSplit && nSplit>0) { int nFirst = nLevel-nRepeatLevels; @@ -534,22 +535,26 @@ public class TextConverter extends ConverterHelper { } } } + + // Apply style + StyleInfo info = new StyleInfo(); + info.sTagName = "h"+nLevel; + getHeadingSc().applyStyle(nLevel, sStyleName, info); - // add Hx element - Element heading = converter.createElement("h"+nLevel); - traverseFloats(onode,hnode,heading); + // add root element + Element heading = converter.createElement(info.sTagName); hnode.appendChild(heading); + applyStyle(info,heading); + traverseFloats(onode,hnode,heading); // Apply writing direction - String sStyleName = Misc.getAttribute(onode,XMLString.TEXT_STYLE_NAME); + /*String sStyleName = Misc.getAttribute(onode,XMLString.TEXT_STYLE_NAME); StyleWithProperties style = ofr.getParStyle(sStyleName); if (style!=null) { StyleInfo headInfo = new StyleInfo(); StyleConverterHelper.applyDirection(style,headInfo); getParSc().applyStyle(headInfo,heading); - } + }*/ - getParSc().setHeadingStyle(nLevel,sStyleName); - // Prepend asapNode prependAsapNode(heading); @@ -573,7 +578,7 @@ public class TextConverter extends ConverterHelper { // Add to real toc TocEntry entry = new TocEntry(); - entry.onode = (Element) onode; + entry.onode = onode; entry.sLabel = sLabel; entry.nFileIndex = converter.getOutFileIndex(); entry.nOutlineLevel = nLevel; @@ -581,7 +586,16 @@ public class TextConverter extends ConverterHelper { tocEntries.add(entry); } - traverseInlineText(onode,heading); + // Convert content + StyleInfo innerInfo = new StyleInfo(); + getHeadingSc().applyInnerStyle(nLevel, sStyleName, innerInfo); + Element content = heading; + if (innerInfo.sTagName!=null && innerInfo.sTagName.length()>0) { + content = converter.createElement(innerInfo.sTagName); + heading.appendChild(content); + applyStyle(innerInfo, content); + } + traverseInlineText(onode,content); // Keep track of current headings for split output currentHeading[nLevel] = heading; @@ -627,7 +641,7 @@ public class TextConverter extends ConverterHelper { if (!bIsEmpty) { par = createTextBackground(par, sStyleName); - if (config.useHardListNumbering()) { + if (config.listFormatting()==XhtmlConfig.HARD_LABELS) { insertListLabel(currentListStyle, nCurrentListLevel, "ItemNumber", sCurrentListLabel, par); } sCurrentListLabel = null; @@ -682,16 +696,19 @@ public class TextConverter extends ConverterHelper { // Helper: Insert a list label formatted with a list style private void insertListLabel(ListStyle style, int nLevel, String sDefaultStyle, String sLabel, Element hnode) { if (sLabel!=null && sLabel.length()>0) { - Element span = converter.createElement("span"); StyleInfo info = new StyleInfo(); - info.sClass = sDefaultStyle; if (style!=null) { String sTextStyleName = style.getLevelProperty(nLevel,XMLString.TEXT_STYLE_NAME); getTextSc().applyStyle(sTextStyleName, info); } - getTextSc().applyStyle(info, span); - hnode.appendChild(span); - span.appendChild( converter.createTextNode(sLabel) ); + + if (info.sTagName==null) { info.sTagName = "span"; } + if (info.sClass==null) { info.sClass = sDefaultStyle; } + + Element content = converter.createElement(info.sTagName); + getTextSc().applyStyle(info, content); + hnode.appendChild(content); + content.appendChild( converter.createTextNode(sLabel) ); } } @@ -775,7 +792,7 @@ public class TextConverter extends ConverterHelper { if (!bContinueNumbering && counter!=null) { counter.restart(nLevel); } - if (config.xhtmlUseListHack() && !config.useHardListNumbering() && counter.getValue(nLevel)>0) { + if (config.listFormatting()==XhtmlConfig.CSS1_HACK && counter.getValue(nLevel)>0) { hnode.setAttribute("start",Integer.toString(counter.getValue(nLevel)+1)); } } @@ -800,7 +817,7 @@ public class TextConverter extends ConverterHelper { bIsImmediateNestedList = true; } - if (config.xhtmlUseListHack() && bIsImmediateNestedList) { + if (config.listFormatting()==XhtmlConfig.CSS1_HACK && bIsImmediateNestedList) { traverseListItem(child,nLevel,styleName,hnode); } else { @@ -813,7 +830,7 @@ public class TextConverter extends ConverterHelper { getPresentationSc().applyOutlineStyle(nLevel,info); applyStyle(info,item); hnode.appendChild(item); - if (config.xhtmlUseListHack() && !config.useHardListNumbering()) { + if (config.listFormatting()==XhtmlConfig.CSS1_HACK) { boolean bRestart = "true".equals(Misc.getAttribute(child, XMLString.TEXT_RESTART_NUMBERING)); int nStartValue = Misc.getPosInteger(Misc.getAttribute(child, @@ -1001,7 +1018,7 @@ public class TextConverter extends ConverterHelper { int nOutlineLevel = getOutlineLevel((Element)onode); Node rememberNode = hnode; hnode = maybeSplit(hnode,nOutlineLevel,bAfterHeading); - handleHeading(child, hnode, rememberNode!=hnode, + handleHeading((Element)child, hnode, rememberNode!=hnode, ofr.getListStyle(sStyleName), nLevel, bUnNumbered, bRestart, nStartValue); nDontSplitLevel--; diff --git a/source/java/writer2latex/xhtml/XhtmlConfig.java b/source/java/writer2latex/xhtml/XhtmlConfig.java index 498d7f0..a8cf0c1 100644 --- a/source/java/writer2latex/xhtml/XhtmlConfig.java +++ b/source/java/writer2latex/xhtml/XhtmlConfig.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2010-05-04) + * Version 1.2 (2010-05-09) * */ @@ -41,7 +41,7 @@ import writer2latex.util.Misc; public class XhtmlConfig extends writer2latex.base.ConfigBase { // Implement configuration methods - protected int getOptionCount() { return 43; } + protected int getOptionCount() { return 42; } protected String getDefaultConfigPath() { return "/writer2latex/xhtml/config/"; } // Override setOption: To be backwards compatible, we must accept options @@ -50,6 +50,12 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { if (sName.startsWith("xhtml_")) { sName = sName.substring(6); } // this option has been renamed: if (sName.equals("keep_image_size")) { sName = "original_image_size"; } + // this option has been renamed and extended: + if (sName.equals("use_list_hack")) { + sName = "list_formatting"; + if (sValue.equals("true")) { sValue = "css1_hack"; } + else { sValue = "css1"; } + } super.setOption(sName, sValue); } @@ -59,12 +65,17 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public static final int IGNORE_HARD = 2; public static final int CONVERT_ALL = 3; + // List formatting + public static final int CSS1 = 0; + public static final int CSS1_HACK = 1; + public static final int HARD_LABELS = 2; + // Formulas (for xhtml 1.0 strict) public static final int STARMATH = 0; public static final int LATEX = 1; public static final int IMAGE_STARMATH = 2; public static final int IMAGE_LATEX = 3; - + // Options private static final int IGNORE_HARD_LINE_BREAKS = 0; private static final int IGNORE_EMPTY_PARAGRAPHS = 1; @@ -85,31 +96,31 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { private static final int SECTION_FORMATTING = 16; private static final int TABLE_FORMATTING = 17; private static final int IGNORE_TABLE_DIMENSIONS = 18; - private static final int USE_DUBLIN_CORE = 19; - private static final int NOTES = 20; - private static final int CONVERT_TO_PX = 21; - private static final int SCALING = 22; - private static final int COLUMN_SCALING = 23; - private static final int FLOAT_OBJECTS = 24; - private static final int TABSTOP_STYLE = 25; - private static final int USE_LIST_HACK = 26; - private static final int USE_HARD_LIST_NUMBERING = 27; - private static final int FORMULAS = 28; - private static final int SPLIT_LEVEL = 29; - private static final int REPEAT_LEVELS = 30; - private static final int CALC_SPLIT = 31; - private static final int DISPLAY_HIDDEN_SHEETS = 32; - private static final int DISPLAY_HIDDEN_ROWS_COLS = 33; - private static final int DISPLAY_FILTERED_ROWS_COLS = 34; - private static final int APPLY_PRINT_RANGES = 35; - private static final int USE_TITLE_AS_HEADING = 36; - private static final int USE_SHEET_NAMES_AS_HEADINGS = 37; - private static final int XSLT_PATH = 38; - private static final int SAVE_IMAGES_IN_SUBDIR = 39; - private static final int UPLINK = 40; - private static final int DIRECTORY_ICON = 41; - private static final int DOCUMENT_ICON = 42; + private static final int LIST_FORMATTING = 19; + private static final int USE_DUBLIN_CORE = 20; + private static final int NOTES = 21; + private static final int CONVERT_TO_PX = 22; + private static final int SCALING = 23; + private static final int COLUMN_SCALING = 24; + private static final int FLOAT_OBJECTS = 25; + private static final int TABSTOP_STYLE = 26; + private static final int FORMULAS = 27; + private static final int SPLIT_LEVEL = 28; + private static final int REPEAT_LEVELS = 29; + private static final int CALC_SPLIT = 30; + private static final int DISPLAY_HIDDEN_SHEETS = 31; + private static final int DISPLAY_HIDDEN_ROWS_COLS = 32; + private static final int DISPLAY_FILTERED_ROWS_COLS = 33; + private static final int APPLY_PRINT_RANGES = 34; + private static final int USE_TITLE_AS_HEADING = 35; + private static final int USE_SHEET_NAMES_AS_HEADINGS = 36; + private static final int XSLT_PATH = 37; + private static final int SAVE_IMAGES_IN_SUBDIR = 38; + private static final int UPLINK = 39; + private static final int DIRECTORY_ICON = 40; + private static final int DOCUMENT_ICON = 41; + protected ComplexOption xheading = addComplexOption("heading-map"); protected ComplexOption xpar = addComplexOption("paragraph-map"); protected ComplexOption xtext = addComplexOption("text-map"); protected ComplexOption xframe = addComplexOption("frame-map"); @@ -138,6 +149,14 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { options[SECTION_FORMATTING] = new XhtmlFormatOption("section_formatting","convert_all"); options[TABLE_FORMATTING] = new XhtmlFormatOption("table_formatting","convert_all"); options[IGNORE_TABLE_DIMENSIONS] = new BooleanOption("ignore_table_dimensions","false"); + options[LIST_FORMATTING] = new IntegerOption("list_formatting","css1") { + @Override public void setString(String sValue) { + super.setString(sValue); + if ("css1_hack".equals(sValue)) { nValue = CSS1_HACK; } + else if ("hard_labels".equals(sValue)) { nValue = HARD_LABELS; } + else { nValue = CSS1; } + } + }; options[USE_DUBLIN_CORE] = new BooleanOption("use_dublin_core","true"); options[NOTES] = new BooleanOption("notes","true"); options[CONVERT_TO_PX] = new BooleanOption("convert_to_px","true"); @@ -145,10 +164,8 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { options[COLUMN_SCALING] = new Option("column_scaling","100%"); options[FLOAT_OBJECTS] = new BooleanOption("float_objects","true"); options[TABSTOP_STYLE] = new Option("tabstop_style",""); - options[USE_LIST_HACK] = new BooleanOption("use_list_hack","false"); - options[USE_HARD_LIST_NUMBERING] = new BooleanOption("use_hard_list_numbering","false"); options[FORMULAS] = new IntegerOption("formulas","starmath") { - public void setString(String sValue) { + @Override public void setString(String sValue) { super.setString(sValue); if ("latex".equals(sValue)) { nValue = LATEX; } else if ("image+latex".equals(sValue)) { nValue = IMAGE_LATEX; } @@ -157,13 +174,13 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { } }; options[SPLIT_LEVEL] = new IntegerOption("split_level","0") { - public void setString(String sValue) { + @Override public void setString(String sValue) { super.setString(sValue); nValue = Misc.getPosInteger(sValue,0); } }; options[REPEAT_LEVELS] = new IntegerOption("repeat_levels","5") { - public void setString(String sValue) { + @Override public void setString(String sValue) { super.setString(sValue); nValue = Misc.getPosInteger(sValue,0); } @@ -195,10 +212,16 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { Map attr = new HashMap(); attr.put("element", sElement); attr.put("css", sCss); + String sBlockElement = elm.getAttribute("block-element"); + String sBlockCss = elm.getAttribute("block-css"); + if (sBlockCss.length()==0) { sBlockCss="(none)"; } + + if ("heading".equals(sFamily)) { + attr.put("block-element", sBlockElement); + attr.put("block-css", sBlockCss); + xheading.put(sName,attr); + } if ("paragraph".equals(sFamily)) { - String sBlockElement = elm.getAttribute("block-element"); - String sBlockCss = elm.getAttribute("block-css"); - if (sBlockCss.length()==0) { sBlockCss="(none)"; } attr.put("block-element", sBlockElement); attr.put("block-css", sBlockCss); xpar.put(sName,attr); @@ -219,6 +242,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { } protected void writeInner(Document dom) { + writeXStyleMap(dom,xheading,"heading"); writeXStyleMap(dom,xpar,"paragraph"); writeXStyleMap(dom,xtext,"text"); writeXStyleMap(dom,xlist,"list"); @@ -262,6 +286,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public int xhtmlSectionFormatting() { return ((XhtmlFormatOption) options[SECTION_FORMATTING]).getValue(); } public int xhtmlTableFormatting() { return ((XhtmlFormatOption) options[TABLE_FORMATTING]).getValue(); } public boolean xhtmlIgnoreTableDimensions() { return ((BooleanOption) options[IGNORE_TABLE_DIMENSIONS]).getValue(); } + public int listFormatting() { return ((IntegerOption) options[LIST_FORMATTING]).getValue(); } public boolean xhtmlUseDublinCore() { return ((BooleanOption) options[USE_DUBLIN_CORE]).getValue(); } public boolean xhtmlNotes() { return ((BooleanOption) options[NOTES]).getValue(); } public boolean xhtmlConvertToPx() { return ((BooleanOption) options[CONVERT_TO_PX]).getValue(); } @@ -269,8 +294,6 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public String getXhtmlColumnScaling() { return options[COLUMN_SCALING].getString(); } public boolean xhtmlFloatObjects() { return ((BooleanOption) options[FLOAT_OBJECTS]).getValue(); } public String getXhtmlTabstopStyle() { return options[TABSTOP_STYLE].getString(); } - public boolean xhtmlUseListHack() { return ((BooleanOption) options[USE_LIST_HACK]).getValue(); } - public boolean useHardListNumbering() { return ((BooleanOption) options[USE_HARD_LIST_NUMBERING]).getValue(); } public int formulas() { return ((IntegerOption) options[FORMULAS]).getValue(); } public int getXhtmlSplitLevel() { return ((IntegerOption) options[SPLIT_LEVEL]).getValue(); } public int getXhtmlRepeatLevels() { return ((IntegerOption) options[REPEAT_LEVELS]).getValue(); } @@ -288,6 +311,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public String getXhtmlDocumentIcon() { return options[DOCUMENT_ICON].getString(); } public XhtmlStyleMap getXParStyleMap() { return getStyleMap(xpar); } + public XhtmlStyleMap getXHeadingStyleMap() { return getStyleMap(xheading); } public XhtmlStyleMap getXTextStyleMap() { return getStyleMap(xtext); } public XhtmlStyleMap getXFrameStyleMap() { return getStyleMap(xframe); } public XhtmlStyleMap getXListStyleMap() { return getStyleMap(xlist); } diff --git a/source/oxt/writer2latex/W2LDialogs/LaTeXOptions.xdl b/source/oxt/writer2latex/W2LDialogs/LaTeXOptions.xdl index a74761a..ee0730c 100644 --- a/source/oxt/writer2latex/W2LDialogs/LaTeXOptions.xdl +++ b/source/oxt/writer2latex/W2LDialogs/LaTeXOptions.xdl @@ -66,7 +66,7 @@ - + diff --git a/source/oxt/writer2xhtml/W2XDialogs2/Formatting.xdl b/source/oxt/writer2xhtml/W2XDialogs2/Formatting.xdl index d28f09a..829ec58 100644 --- a/source/oxt/writer2xhtml/W2XDialogs2/Formatting.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/Formatting.xdl @@ -23,9 +23,15 @@ - - - - + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2xhtml/W2XDialogs2/Styles1.xdl b/source/oxt/writer2xhtml/W2XDialogs2/Styles1.xdl index 79435eb..59a7e40 100644 --- a/source/oxt/writer2xhtml/W2XDialogs2/Styles1.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/Styles1.xdl @@ -4,10 +4,11 @@ - + +