diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index 74f0482..ce62479 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,6 +2,16 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 ---------- version 1.1.1 ---------- +[w2x] Use svg:title as alternative text on graphics if svg:desc is not present + +[all] Bugfix: Filtername (Writer2LaTeX/Writer2xhtml) was not displayed in error messages + +[w2x] New option hexadecimal_entities with values true (default) and false. + When this option is set to true, numeric character entities are exported + using hexadecimal numbers, otherwise decimal numbers are used + +[w2x] Export tabs as ASCII TAB rather than space + [w2l] Allow additional characters in bibliography keys (_, - and :) [w2l] Bugfix: Fixed crash when using the option external_bibtex_files diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index bf4212d..9b2ba57 100644 Binary files a/source/distro/doc/user-manual.odt and b/source/distro/doc/user-manual.odt differ diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java index c76cf30..633f5aa 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java @@ -26,7 +26,7 @@ package org.openoffice.da.comp.w2lcommon.filter; -// This class is based on these java uno adapter classes: +// This class is based on these java uno adapter classes: // com.sun.star.lib.uno.adapter.ByteArrayToXInputStreamAdapter; // com.sun.star.lib.uno.adapter.XOutputStreamToByteArrayAdapter; // See http://go-oo.org/lxr/source/udk/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToByteArrayAdapter.java diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java index 745a7f5..95c0ac6 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java @@ -29,7 +29,7 @@ package org.openoffice.da.comp.w2lcommon.filter; * See the issue http://qa.openoffice.org/issues/show_bug.cgi?id=25256 * According to this message http://markmail.org/message/dc6rprmtktxuq35v * on dev@openoffice.org the binary data is an EPSI preview in TIFF format - * TODO: Is it possible to avoid this export? + * TODO: Is it possible to avoid this export? */ public class EPSCleaner { diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java index 5af207f..de7459f 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2009-04-25) + * Version 1.2 (2009-09-06) * */ @@ -82,7 +82,7 @@ public abstract class ExportFilterBase implements public static final String __implementationName = ""; /** Filter name to include in error messages */ - public static final String __displayName = ""; + public String __displayName = ""; private static XComponentContext xComponentContext = null; protected static XMultiServiceFactory xMSF; @@ -94,7 +94,6 @@ public abstract class ExportFilterBase implements private Object filterData; private XSimpleFileAccess2 sfa2; - /** We need to get the Service Manager from the Component context to * instantiate certain services, hence this constructor. diff --git a/source/java/org/openoffice/da/comp/w2lcommon/helper/DialogAccess.java b/source/java/org/openoffice/da/comp/w2lcommon/helper/DialogAccess.java new file mode 100644 index 0000000..daefbcb --- /dev/null +++ b/source/java/org/openoffice/da/comp/w2lcommon/helper/DialogAccess.java @@ -0,0 +1,269 @@ +/************************************************************************ + * + * DialogAccess.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-2009 by Henrik Just + * + * All Rights Reserved. + * + * Version 1.2 (2009-09-06) + * + */ + +package org.openoffice.da.comp.w2lcommon.helper; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlContainer; +import com.sun.star.awt.XControlModel; +import com.sun.star.awt.XDialog; +import com.sun.star.beans.XPropertySet; +import com.sun.star.uno.UnoRuntime; + + +/** This class provides some convenient methods to access a uno dialog + */ +public class DialogAccess { + + /** The XDialog containing the controls. The subclass must override this */ + private Object xDialog = null; + + // State of a checkbox + + public static final short CHECKBOX_NOT_CHECKED = 0; + public static final short CHECKBOX_CHECKED = 1; + public static final short CHECKBOX_DONT_KNOW = 2; + + public DialogAccess(XDialog xDialog) { + this.xDialog = xDialog; + } + + ////////////////////////////////////////////////////////////////////////// + // Helpers to access controls in the dialog (to be used by the subclass) + // Note: The helpers fail silently if an exception occurs. Could query the + // the ClassId property for the control type and check that the property + // exists to ensure a correct behaviour in all cases, but as long as the + // helpers are used correctly, this doesn't really matter. + + // Get the properties of a named control in the dialog + public XPropertySet getControlProperties(String sControlName) { + XControlContainer xContainer = (XControlContainer) + UnoRuntime.queryInterface(XControlContainer.class, xDialog); + XControl xControl = xContainer.getControl(sControlName); + XControlModel xModel = xControl.getModel(); + XPropertySet xPropertySet = (XPropertySet) + UnoRuntime.queryInterface(XPropertySet.class, xModel); + return xPropertySet; + } + + + public void setControlEnabled(String sControlName, boolean bEnabled) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Enabled", new Boolean(bEnabled)); + } + catch (Exception e) { + // Will fail if the control does not exist + } + } + + public short getCheckBoxState(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return ((Short) xPropertySet.getPropertyValue("State")).shortValue(); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a checkbox + return CHECKBOX_DONT_KNOW; + } + } + + public boolean getCheckBoxStateAsBoolean(String sControlName) { + return getCheckBoxState(sControlName)==CHECKBOX_CHECKED; + } + + public void setCheckBoxState(String sControlName, short nState) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("State",new Short(nState)); + } + catch (Exception e) { + // will fail if the control does not exist or is not a checkbox or + // nState has an illegal value + } + } + + public void setCheckBoxStateAsBoolean(String sControlName, boolean bChecked) { + setCheckBoxState(sControlName,bChecked ? CHECKBOX_CHECKED : CHECKBOX_NOT_CHECKED); + } + + public String[] getListBoxStringItemList(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String[]) xPropertySet.getPropertyValue("StringItemList"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + return new String[0]; + } + } + + public void setListBoxStringItemList(String sControlName, String[] items) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("StringItemList",items); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + } + } + + public short getListBoxSelectedItem(String sControlName) { + // Returns the first selected element in case of a multiselection + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + short[] selection = (short[]) xPropertySet.getPropertyValue("SelectedItems"); + return selection[0]; + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + return -1; + } + } + + public void setListBoxSelectedItem(String sControlName, short nIndex) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + short[] selection = new short[1]; + selection[0] = nIndex; + xPropertySet.setPropertyValue("SelectedItems",selection); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box or + // nIndex is an illegal value + } + } + + public short getListBoxLineCount(String sControlName) { + // Returns the first selected element in case of a multiselection + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return ((Short) xPropertySet.getPropertyValue("LineCount")).shortValue(); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + return 0; + } + } + + public void setListBoxLineCount(String sControlName, short nLineCount) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("LineCount",new Short(nLineCount)); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box or + // nLineCount is an illegal value + } + } + + public String getComboBoxText(String sControlName) { + // Returns the text of a combobox + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String) xPropertySet.getPropertyValue("Text"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a combo + return ""; + } + } + + public void setComboBoxText(String sControlName, String sText) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Text", sText); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a combo box or + // nText is an illegal value + } + } + + public String getTextFieldText(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String) xPropertySet.getPropertyValue("Text"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a text field + return ""; + } + } + + public void setTextFieldText(String sControlName, String sText) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Text",sText); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a text field + } + } + + public String getFormattedFieldText(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String) xPropertySet.getPropertyValue("Text"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a formatted field + return ""; + } + } + + public void setFormattedFieldText(String sControlName, String sText) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Text",sText); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a formatted field + } + } + + public int getNumericFieldValue(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return ((Double) xPropertySet.getPropertyValue("Value")).intValue(); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a numeric field + return 0; + } + } + + public void setNumericFieldValue(String sControlName, int nValue) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Value",new Double(nValue)); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a numeric field + } + } + +} \ No newline at end of file diff --git a/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java b/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java index d930b83..44e63c5 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java @@ -38,7 +38,7 @@ import com.sun.star.frame.XFrame; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XComponentContext; -/** This class provides simple access to a uno awt message box +/** This class provides simple access to a uno awt message box */ public class MessageBox { diff --git a/source/java/org/openoffice/da/comp/writer2latex/ConfigurationDialog.java b/source/java/org/openoffice/da/comp/writer2latex/ConfigurationDialog.java new file mode 100644 index 0000000..d165f8a --- /dev/null +++ b/source/java/org/openoffice/da/comp/writer2latex/ConfigurationDialog.java @@ -0,0 +1,396 @@ +/************************************************************************ + * + * ConfigurationDialog.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-2009 by Henrik Just + * + * All Rights Reserved. + * + * Version 1.2 (2009-09-06) + * + */ + +package org.openoffice.da.comp.writer2latex; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URI; +import java.util.Vector; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlContainer; +import com.sun.star.awt.XControlModel; +import com.sun.star.awt.XContainerWindowEventHandler; +import com.sun.star.awt.XDialog; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.XPropertySet; +import com.sun.star.io.NotConnectedException; +import com.sun.star.io.XInputStream; +import com.sun.star.io.XOutputStream; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.ucb.CommandAbortedException; +import com.sun.star.ucb.XSimpleFileAccess2; +import com.sun.star.ui.dialogs.ExecutableDialogResults; +import com.sun.star.ui.dialogs.XExecutableDialog; +import com.sun.star.ui.dialogs.XFilePicker; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.util.XStringSubstitution; + +import com.sun.star.lib.uno.helper.WeakBase; +import com.sun.star.lib.uno.adapter.XInputStreamToInputStreamAdapter; +import com.sun.star.lib.uno.adapter.XOutputStreamToOutputStreamAdapter; + +import writer2latex.api.Config; +import writer2latex.api.ConverterFactory; + +import org.openoffice.da.comp.w2lcommon.helper.DialogAccess; + +/** This class provides a uno component which implements the configuration + * of Writer2LaTeX. The same component is used for all pages - using the + * dialog title to distinguish between tha pages. + */ +public final class ConfigurationDialog extends WeakBase + implements XServiceInfo, XContainerWindowEventHandler { + + //private XComponentContext xContext; + private XSimpleFileAccess2 sfa2; + private String sConfigFileName = null; + Config config; + private String sTitle = null; + private DialogAccess dlg = null; + + /** The component will be registered under this name. + */ + public static String __serviceName = "org.openoffice.da.writer2latex.ConfigurationDialog"; + + /** The component should also have an implementation name. + */ + public static String __implementationName = "org.openoffice.da.comp.writer2latex.ConfigurationDialog"; + + /** Create a new ConfigurationDialog */ + public ConfigurationDialog(XComponentContext xContext) { + //this.xContext = xContext; + + // Get the SimpleFileAccess service + sfa2 = null; + try { + Object sfaObject = xContext.getServiceManager().createInstanceWithContext( + "com.sun.star.ucb.SimpleFileAccess", xContext); + sfa2 = (XSimpleFileAccess2) UnoRuntime.queryInterface(XSimpleFileAccess2.class, sfaObject); + } + catch (com.sun.star.uno.Exception e) { + // failed to get SimpleFileAccess service (should not happen) + } + + // Create the config file name + XStringSubstitution xPathSub = null; + try { + Object psObject = xContext.getServiceManager().createInstanceWithContext( + "com.sun.star.util.PathSubstitution", xContext); + xPathSub = (XStringSubstitution) UnoRuntime.queryInterface(XStringSubstitution.class, psObject); + sConfigFileName = xPathSub.substituteVariables("$(user)/writer2latex.xml", false); + } + catch (com.sun.star.uno.Exception e) { + // failed to get PathSubstitution service (should not happen) + } + + // Create the configuration + config = ConverterFactory.createConverter("application/x-latex").getConfig(); + } + + // Implement XContainerWindowEventHandler + public boolean callHandlerMethod(XWindow xWindow, Object event, String sMethod) + throws com.sun.star.lang.WrappedTargetException { + XDialog xDialog = (XDialog)UnoRuntime.queryInterface(XDialog.class, xWindow); + sTitle = xDialog.getTitle(); + dlg = new DialogAccess(xDialog); + + try { + if (sMethod.equals("external_event") ){ + return handleExternalEvent(event); + } + else if (sMethod.equals("NoPreambleChange")) { + enableDocumentclassControls(); + return true; + } + else if (sMethod.equals("ExportGeometryChange")) { + enablePagesControls(); + return true; + } + else if (sMethod.equals("ExportHeaderAndFooterChange")) { + enablePagesControls(); + return true; + } + else if (sMethod.equals("NoTablesChange")) { + enableTablesControls(); + return true; + } + else if (sMethod.equals("UseSupertabularChange")) { + enableTablesControls(); + return true; + } + else if (sMethod.equals("UseLongtableChange")) { + enableTablesControls(); + return true; + } + } + catch (com.sun.star.uno.RuntimeException e) { + throw e; + } + catch (com.sun.star.uno.Exception e) { + throw new com.sun.star.lang.WrappedTargetException(sMethod, this, e); + } + return false; + } + + public String[] getSupportedMethodNames() { + String[] sNames = { "external_event", "NoPreambleChange", "ExportGeometryChange", "ExportHeaderAndFooterChange", "NoTablesChange", "UseSupertabularChange", "UseLongtableChange" }; + return sNames; + } + + // Implement the interface XServiceInfo + public boolean supportsService(String sServiceName) { + return sServiceName.equals(__serviceName); + } + + public String getImplementationName() { + return __implementationName; + } + + public String[] getSupportedServiceNames() { + String[] sSupportedServiceNames = { __serviceName }; + return sSupportedServiceNames; + } + + // Private stuff + private boolean handleExternalEvent(Object aEventObject) + throws com.sun.star.uno.Exception { + try { + String sMethod = AnyConverter.toString(aEventObject); + if (sMethod.equals("ok")) { + loadConfig(); + getControls(); + saveConfig(); + return true; + } else if (sMethod.equals("back") || sMethod.equals("initialize")) { + loadConfig(); + setControls(); + return true; + } + } + catch (com.sun.star.lang.IllegalArgumentException e) { + throw new com.sun.star.lang.IllegalArgumentException( + "Method external_event requires a string in the event object argument.", this,(short) -1); + } + return false; + } + + // Load the user configuration from file + private void loadConfig() { + if (sfa2!=null && sConfigFileName!=null) { + try { + XInputStream xIs = sfa2.openFileRead(sConfigFileName); + if (xIs!=null) { + InputStream is = new XInputStreamToInputStreamAdapter(xIs); + config.read(is); + is.close(); + xIs.closeInput(); + } + } + catch (IOException e) { + // ignore + } + catch (NotConnectedException e) { + // ignore + } + catch (CommandAbortedException e) { + // ignore + } + catch (com.sun.star.uno.Exception e) { + // ignore + } + } + } + + // Save the user configuration + private void saveConfig() { + if (sfa2!=null && sConfigFileName!=null) { + try { + // Remove the file if it exists + if (sfa2.exists(sConfigFileName)) { + sfa2.kill(sConfigFileName); + } + // Then write the new contents + XOutputStream xOs = sfa2.openFileWrite(sConfigFileName); + if (xOs!=null) { + OutputStream os = new XOutputStreamToOutputStreamAdapter(xOs); + config.write(os); + os.close(); + xOs.closeOutput(); + } + } + catch (IOException e) { + // ignore + } + catch (NotConnectedException e) { + // ignore + } + catch (CommandAbortedException e) { + // ignore + } + catch (com.sun.star.uno.Exception e) { + // ignore + } + } + } + + // Set controls based on the config + private void setControls() { + if ("Documentclass".equals(sTitle)) { + loadDocumentclass(); + } + else if ("Pages".equals(sTitle)) { + loadPages(); + } + else if ("Tables".equals(sTitle)) { + loadTables(); + } + } + + // Change the config based on the controls + private void getControls() { + if ("Documentclass".equals(sTitle)) { + saveDocumentclass(); + } + else if ("Pages".equals(sTitle)) { + savePages(); + } + else if ("Tables".equals(sTitle)) { + saveTables(); + } + } + + // The page "Documentclass" + // This page handles the options no_preamble, documentclass, global_options and the custom-preamble + + private void loadDocumentclass() { + dlg.setCheckBoxStateAsBoolean("NoPreamble","true".equals(config.getOption("no_preamble"))); + dlg.setTextFieldText("Documentclass",config.getOption("documentclass")); + dlg.setTextFieldText("GlobalOptions",config.getOption("global_options")); + //dlg.setTextFieldText("CustomPreamble",config.getLongOption("custom-preamble")); + enableDocumentclassControls(); + } + + private void saveDocumentclass() { + config.setOption("no_preamble", Boolean.toString(dlg.getCheckBoxStateAsBoolean("NoPreamble"))); + config.setOption("documentclass", dlg.getTextFieldText("Documentclass")); + config.setOption("global_options", dlg.getTextFieldText("GlobalOptions")); + //config.setLongOption("custom-preamble", dlg.getTextFieldText("CustomPreamble")); + } + + private void enableDocumentclassControls() { + boolean bPreamble = !dlg.getCheckBoxStateAsBoolean("NoPreamble"); + dlg.setControlEnabled("DocumentclassLabel",bPreamble); + dlg.setControlEnabled("Documentclass",bPreamble); + dlg.setControlEnabled("GlobalOptionsLabel",bPreamble); + dlg.setControlEnabled("GlobalOptions",bPreamble); + dlg.setControlEnabled("CustomPreambleLabel",bPreamble); + dlg.setControlEnabled("CustomPreamble",bPreamble); + } + + // The page "Pages" + // This page handles the options page_formatting, use_geometry, use_fancyhdr, use_lastpage and use_endnotes + + private void loadPages() { + enablePagesControls(); + } + + private void savePages() { + + } + + private void enablePagesControls() { + boolean bExportGeometry = dlg.getCheckBoxStateAsBoolean("ExportGeometry"); + dlg.setControlEnabled("UseGeometry",bExportGeometry); + + boolean bExport = dlg.getCheckBoxStateAsBoolean("ExportHeaderAndFooter"); + dlg.setControlEnabled("UseFancyhdr",bExport); + } + + // The page "Tables" + // This page handles the options table_content, use_tabulary, use_colortbl, use_multirow, use_supertabular, use_longtable, + // table_first_head_style, table_head_style, table_foot_style, table_last_foot_style + // Limitation: Cannot handle the values "error" and "warning" for table_content + + private void loadTables() { + dlg.setCheckBoxStateAsBoolean("NoTables", !"accept".equals(config.getOption("table_content"))); + dlg.setCheckBoxStateAsBoolean("UseTabulary", "true".equals(config.getOption("use_tabulary"))); + //dlg.setCheckBoxStateAsBoolean("UseMultirow", "true".equals(config.getOption("use_multirow"))); + dlg.setCheckBoxStateAsBoolean("UseSupertabular","true".equals(config.getOption("use_supertabular"))); + dlg.setCheckBoxStateAsBoolean("UseLongtable", "true".equals(config.getOption("use_longtable"))); + dlg.setTextFieldText("TableFirstHeadStyle", config.getOption("table_first_head_style")); + dlg.setTextFieldText("TableHeadStyle", config.getOption("table_head_style")); + dlg.setTextFieldText("TableFootStyle", config.getOption("table_foot_style")); + dlg.setTextFieldText("TableLastFootStyle", config.getOption("table_last_foot_style")); + dlg.setTextFieldText("TableSequenceName", config.getOption("table_sequence_name")); + enableTablesControls(); + } + + private void saveTables() { + config.setOption("table_content", dlg.getCheckBoxStateAsBoolean("NoTables") ? "ignore" : "accept"); + config.setOption("use_tabulary", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseTabulary"))); + //config.setOption("use_multirow", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseMultirow"))); + config.setOption("use_supertabular", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseSupertabular"))); + config.setOption("use_longtable", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseLongtable"))); + config.setOption("table_first_head_style", dlg.getTextFieldText("TableFirstHeadStyle")); + config.setOption("table_head_style", dlg.getTextFieldText("TableHeadStyle")); + config.setOption("table_foot_style", dlg.getTextFieldText("TableFootStyle")); + config.setOption("table_last_foot_style", dlg.getTextFieldText("TableLastFootStyle")); + config.setOption("table_sequence_name", dlg.getTextFieldText("TableSequenceName")); + } + + private void enableTablesControls() { + boolean bNoTables = dlg.getCheckBoxStateAsBoolean("NoTables"); + boolean bSupertabular = dlg.getCheckBoxStateAsBoolean("UseSupertabular"); + boolean bLongtable = dlg.getCheckBoxStateAsBoolean("UseLongtable"); + dlg.setControlEnabled("UseTabulary", !bNoTables); + dlg.setControlEnabled("UseMultirow", false); + dlg.setControlEnabled("UseSupertabular", !bNoTables); + dlg.setControlEnabled("UseLongtable", !bNoTables && !bSupertabular); + dlg.setControlEnabled("TableFirstHeadLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableFirstHeadStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableHeadLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableHeadStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableFootLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableFootStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableLastFootLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableLastFootStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableSequenceLabel", !bNoTables); + dlg.setControlEnabled("TableSequenceName", !bNoTables); + + } + + +} + + + diff --git a/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.java b/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.java index 330eaea..8d4adc0 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.java +++ b/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.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-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-07-21) + * Version 1.2 (2009-09-06) * */ @@ -42,7 +42,7 @@ public class W2LExportFilter extends ExportFilterBase { public static final String __implementationName = "org.openoffice.da.comp.writer2latex.W2LExportFilter"; /** Filter name to include in error messages */ - public static final String __displayName = "Writer2LaTeX"; + public final String __displayName = "Writer2LaTeX"; public W2LExportFilter(XComponentContext xComponentContext1) { super(xComponentContext1); diff --git a/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.java b/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.java index c67b7d7..c1cda7d 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.java +++ b/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.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-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-07-21) + * Version 1.2 (2009-09-06) * */ @@ -78,6 +78,12 @@ public class W2LRegistration { multiFactory, regKey); } + else if (implName.equals(ConfigurationDialog.__implementationName)) { + xSingleServiceFactory = FactoryHelper.getServiceFactory(ConfigurationDialog.class, + ConfigurationDialog.__serviceName, + multiFactory, + regKey); + } return xSingleServiceFactory; } @@ -97,7 +103,9 @@ public class W2LRegistration { FactoryHelper.writeRegistryServiceInfo(LaTeXOptionsDialog.__implementationName, LaTeXOptionsDialog.__serviceName, regKey) & FactoryHelper.writeRegistryServiceInfo(W2LStarMathConverter.__implementationName, - W2LStarMathConverter.__serviceName, regKey); + W2LStarMathConverter.__serviceName, regKey) & + FactoryHelper.writeRegistryServiceInfo(ConfigurationDialog.__implementationName, + ConfigurationDialog.__serviceName, regKey); } } diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.java b/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.java index 0278890..1f59f07 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.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-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-07-21) + * Version 1.2 (2009-09-06) * */ @@ -42,7 +42,7 @@ public class W2XExportFilter extends ExportFilterBase { public static final String __implementationName = "org.openoffice.da.comp.writer2xhtml.W2XExportFilter"; /** Filter name to include in error messages */ - public static final String __displayName = "Writer2xhtml"; + public final String __displayName = "Writer2xhtml"; public W2XExportFilter(XComponentContext xComponentContext1) { super(xComponentContext1); diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index e65aedb..a5b3483 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.1.1"; - private static final String DATE = "2008-08-31"; + private static final String DATE = "2008-09-07"; /** Return version information * @return the Writer2LaTeX version in the form diff --git a/source/java/writer2latex/api/GraphicConverter.java b/source/java/writer2latex/api/GraphicConverter.java index 8ccb426..b1ce03b 100644 --- a/source/java/writer2latex/api/GraphicConverter.java +++ b/source/java/writer2latex/api/GraphicConverter.java @@ -27,7 +27,7 @@ package writer2latex.api; /** A simple interface for a graphic converter which converts between various - * graphics formats + * graphics formats */ public interface GraphicConverter { diff --git a/source/java/writer2latex/api/IndexPageEntry.java b/source/java/writer2latex/api/IndexPageEntry.java index 6d28423..8f9f28c 100644 --- a/source/java/writer2latex/api/IndexPageEntry.java +++ b/source/java/writer2latex/api/IndexPageEntry.java @@ -26,7 +26,7 @@ package writer2latex.api; -/** This class represents a single entry on an index page created by a batch converter +/** This class represents a single entry on an index page created by a batch converter */ public class IndexPageEntry { diff --git a/source/java/writer2latex/base/Option.java b/source/java/writer2latex/base/Option.java index 458ef50..c5443c3 100644 --- a/source/java/writer2latex/base/Option.java +++ b/source/java/writer2latex/base/Option.java @@ -26,7 +26,7 @@ package writer2latex.base; -// The mother of all options; reads and writes string values +// The mother of all options; reads and writes string values public class Option { protected String sValue; private String sName; diff --git a/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java b/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java index 1e6a05f..f7c1d7d 100644 --- a/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java +++ b/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java @@ -26,7 +26,7 @@ package writer2latex.latex.i18n; -/** This class contains a node in a trie of string -> LaTeX code replacements +/** This class contains a node in a trie of string -> LaTeX code replacements */ public class ReplacementTrieNode { diff --git a/source/java/writer2latex/latex/i18n/UnicodeCharacter.java b/source/java/writer2latex/latex/i18n/UnicodeCharacter.java index 7e8217e..aa34938 100644 --- a/source/java/writer2latex/latex/i18n/UnicodeCharacter.java +++ b/source/java/writer2latex/latex/i18n/UnicodeCharacter.java @@ -26,7 +26,7 @@ package writer2latex.latex.i18n; -// Helper class: A struct to hold the LaTeX representations of a unicode character +// Helper class: A struct to hold the LaTeX representations of a unicode character class UnicodeCharacter implements Cloneable { final static int NORMAL = 0; // this is a normal character final static int COMBINING = 1; // this character should be ignored diff --git a/source/java/writer2latex/latex/i18n/UnicodeStringParser.java b/source/java/writer2latex/latex/i18n/UnicodeStringParser.java index 1a7b037..f437152 100644 --- a/source/java/writer2latex/latex/i18n/UnicodeStringParser.java +++ b/source/java/writer2latex/latex/i18n/UnicodeStringParser.java @@ -29,7 +29,7 @@ package writer2latex.latex.i18n; // Helper class: Parse a unicode string. // Note: Some 8-bit fonts have additional "spacer" characters that are used // for manual placement of accents. These are ignored between the base character -// and the combining character, thus we are parsing according to the rule +// and the combining character, thus we are parsing according to the rule // * ? class UnicodeStringParser { private UnicodeTable table; // the table to use diff --git a/source/java/writer2latex/latex/i18n/UnicodeTable.java b/source/java/writer2latex/latex/i18n/UnicodeTable.java index d7d3893..3158aeb 100644 --- a/source/java/writer2latex/latex/i18n/UnicodeTable.java +++ b/source/java/writer2latex/latex/i18n/UnicodeTable.java @@ -18,7 +18,7 @@ * * Copyright: 2002-2007 by Henrik Just * - * All Rights Reserved. + * All Rights Reserved. * * Version 0.5 (2007-07-24) * diff --git a/source/java/writer2latex/latex/util/BeforeAfter.java b/source/java/writer2latex/latex/util/BeforeAfter.java index 3cd211e..c87c8c1 100644 --- a/source/java/writer2latex/latex/util/BeforeAfter.java +++ b/source/java/writer2latex/latex/util/BeforeAfter.java @@ -26,7 +26,7 @@ package writer2latex.latex.util; -/** Utility class to hold LaTeX code to put before/after other LaTeX code +/** Utility class to hold LaTeX code to put before/after other LaTeX code */ public class BeforeAfter { private String sBefore=""; diff --git a/source/java/writer2latex/latex/util/HeadingMap.java b/source/java/writer2latex/latex/util/HeadingMap.java index 2637c75..4fc6b03 100644 --- a/source/java/writer2latex/latex/util/HeadingMap.java +++ b/source/java/writer2latex/latex/util/HeadingMap.java @@ -27,7 +27,7 @@ package writer2latex.latex.util; /** This class contains data for the mapping of OOo headings to LaTeX headings. - A LaTeX heading is characterized by a name and a level. + A LaTeX heading is characterized by a name and a level. The heading is inserted with \name{...} or \name[...]{...} The headings are supposed to be "normal" LaTeX headings, ie. the names are also counter names, and the headings diff --git a/source/java/writer2latex/latex/util/StyleMapItem.java b/source/java/writer2latex/latex/util/StyleMapItem.java index a4ecb61..8055b5c 100644 --- a/source/java/writer2latex/latex/util/StyleMapItem.java +++ b/source/java/writer2latex/latex/util/StyleMapItem.java @@ -26,7 +26,7 @@ package writer2latex.latex.util; -// A struct to hold data about a style map +// A struct to hold data about a style map class StyleMapItem { String sBefore; String sAfter; diff --git a/source/java/writer2latex/office/CellView.java b/source/java/writer2latex/office/CellView.java index 62aefbc..c132f91 100644 --- a/source/java/writer2latex/office/CellView.java +++ b/source/java/writer2latex/office/CellView.java @@ -29,7 +29,7 @@ package writer2latex.office; import org.w3c.dom.Element; /** - * This class represent a cell in a table view

+ * This class represent a cell in a table view */ public class CellView { public Element cell = null; diff --git a/source/java/writer2latex/office/XMLString.java b/source/java/writer2latex/office/XMLString.java index 0b259d9..f9b158e 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 (2009-03-27) + * Version 1.2 (2009-09-07) * */ @@ -440,6 +440,7 @@ public class XMLString { // svg namespace public static final String SVG_DESC="svg:desc"; + public static final String SVG_TITLE="svg:title"; public static final String SVG_FONT_FAMILY="svg:font-family"; // oasis (font declarations only) public static final String SVG_X="svg:x"; diff --git a/source/java/writer2latex/util/Base64.java b/source/java/writer2latex/util/Base64.java index 39d77a0..6f2d03c 100644 --- a/source/java/writer2latex/util/Base64.java +++ b/source/java/writer2latex/util/Base64.java @@ -1,5 +1,5 @@ /** - * This is Robert Harders public domain Base64 class. It is unmodified, except for the package name. + * This is Robert Harders public domain Base64 class. It is unmodified, except for the package name. * *

Encodes and decodes to and from Base64 notation.

*

Homepage: http://iharder.net/base64.

diff --git a/source/java/writer2latex/util/CSVList.java b/source/java/writer2latex/util/CSVList.java index 858286d..b232f14 100644 --- a/source/java/writer2latex/util/CSVList.java +++ b/source/java/writer2latex/util/CSVList.java @@ -26,7 +26,7 @@ package writer2latex.util; -// Create a list of values separated by commas or another seperation character +// Create a list of values separated by commas or another seperation character public class CSVList{ private String sSep; private String sNameValueSep; diff --git a/source/java/writer2latex/util/Misc.java b/source/java/writer2latex/util/Misc.java index d368585..41b3813 100644 --- a/source/java/writer2latex/util/Misc.java +++ b/source/java/writer2latex/util/Misc.java @@ -39,7 +39,7 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.NamedNodeMap; -// This class contains some usefull, but unrelated static methods +// This class contains some usefull, but unrelated static methods public class Misc{ private final static int BUFFERSIZE = 1024; diff --git a/source/java/writer2latex/util/SimpleInputBuffer.java b/source/java/writer2latex/util/SimpleInputBuffer.java index a511577..60c7062 100644 --- a/source/java/writer2latex/util/SimpleInputBuffer.java +++ b/source/java/writer2latex/util/SimpleInputBuffer.java @@ -27,7 +27,7 @@ package writer2latex.util; /** This class provides a simple string input buffer; it can be used as the - * basis of a tokenizer. + * basis of a tokenizer. */ public class SimpleInputBuffer { diff --git a/source/java/writer2latex/xhtml/BatchConverterImpl.java b/source/java/writer2latex/xhtml/BatchConverterImpl.java index 4cbe639..eb25912 100644 --- a/source/java/writer2latex/xhtml/BatchConverterImpl.java +++ b/source/java/writer2latex/xhtml/BatchConverterImpl.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-02-08) + * Version 1.2 (2009-09-05) * */ @@ -94,6 +94,7 @@ public class BatchConverterImpl extends BatchConverterBase { htmlDoc.setNoDoctype(config.xhtmlNoDoctype()); htmlDoc.setAddBOM(config.xhtmlAddBOM()); htmlDoc.setUseNamedEntities(config.useNamedEntities()); + htmlDoc.setHexadecimalEntities(config.hexadecimalEntities()); if (template!=null) { htmlDoc.readFromTemplate(template); } else { htmlDoc.createHeaderFooter(); } diff --git a/source/java/writer2latex/xhtml/Converter.java b/source/java/writer2latex/xhtml/Converter.java index 8297178..c0b31b4 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 (2009-05-29) + * Version 1.2 (2009-09-05) * */ @@ -446,6 +446,7 @@ public class Converter extends ConverterBase { htmlDoc.setNoDoctype(config.xhtmlNoDoctype()); htmlDoc.setAddBOM(config.xhtmlAddBOM()); htmlDoc.setUseNamedEntities(config.useNamedEntities()); + htmlDoc.setHexadecimalEntities(config.hexadecimalEntities()); htmlDoc.setXsltPath(config.getXsltPath()); if (template!=null) { htmlDoc.readFromTemplate(template); } else if (bNeedHeaderFooter) { htmlDoc.createHeaderFooter(); } diff --git a/source/java/writer2latex/xhtml/DrawConverter.java b/source/java/writer2latex/xhtml/DrawConverter.java index 1bc9060..395ac60 100644 --- a/source/java/writer2latex/xhtml/DrawConverter.java +++ b/source/java/writer2latex/xhtml/DrawConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-03-08) + * Version 1.0 (2009-09-07) * */ @@ -391,6 +391,9 @@ public class DrawConverter extends ConverterHelper { // Add alternative text, using either alt.text, name or file name Element frame = getFrame(onode); Element desc = Misc.getChildByTagName(frame,XMLString.SVG_DESC); + if (desc==null) { + desc = Misc.getChildByTagName(frame,XMLString.SVG_TITLE); + } String sAltText = desc!=null ? Misc.getPCDATA(desc) : (sName!=null ? sName : sFileName); image.setAttribute("alt",sAltText); diff --git a/source/java/writer2latex/xhtml/LinkDescriptor.java b/source/java/writer2latex/xhtml/LinkDescriptor.java index 26e3ffc..8672e6c 100644 --- a/source/java/writer2latex/xhtml/LinkDescriptor.java +++ b/source/java/writer2latex/xhtml/LinkDescriptor.java @@ -30,7 +30,7 @@ import org.w3c.dom.Element; /** * Helper class (a struct) to contain information about a Link (used to manage - * links to be resolved later) + * links to be resolved later) */ final class LinkDescriptor { Element element; // the a-element diff --git a/source/java/writer2latex/xhtml/TextConverter.java b/source/java/writer2latex/xhtml/TextConverter.java index bcd603b..c379dc5 100644 --- a/source/java/writer2latex/xhtml/TextConverter.java +++ b/source/java/writer2latex/xhtml/TextConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-03-10) + * Version 1.0 (2009-09-05) * */ @@ -1456,16 +1456,16 @@ public class TextConverter extends ConverterHelper { } private void handleTabStop(Node onode, Node hnode) { - // xhtml does not have tab stops, we export a space, which the + // xhtml does not have tab stops, but we export and ASCII TAB character, which the // user may choose to format if (config.getXhtmlTabstopStyle().length()>0) { Element span = converter.createElement("span"); hnode.appendChild(span); span.setAttribute("class",config.getXhtmlTabstopStyle()); - span.appendChild(converter.createTextNode(" ")); + span.appendChild(converter.createTextNode("\t")); } else { - hnode.appendChild(converter.createTextNode(" ")); + hnode.appendChild(converter.createTextNode("\t")); } } diff --git a/source/java/writer2latex/xhtml/XhtmlConfig.java b/source/java/writer2latex/xhtml/XhtmlConfig.java index 06896f6..b82e98f 100644 --- a/source/java/writer2latex/xhtml/XhtmlConfig.java +++ b/source/java/writer2latex/xhtml/XhtmlConfig.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-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-11-14) + * Version 1.2 (2009-09-05) * */ @@ -38,7 +38,7 @@ import writer2latex.util.Misc; public class XhtmlConfig extends writer2latex.base.ConfigBase { // Implement configuration methods - protected int getOptionCount() { return 36; } + protected int getOptionCount() { return 37; } protected String getDefaultConfigPath() { return "/writer2latex/xhtml/config/"; } // Override setOption: To be backwards compatible, we must accept options @@ -65,34 +65,35 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { private static final int ADD_BOM = 5; private static final int ENCODING = 6; private static final int USE_NAMED_ENTITIES = 7; - private static final int CUSTOM_STYLESHEET = 8; - private static final int FORMATTING = 9; - private static final int FRAME_FORMATTING = 10; - private static final int SECTION_FORMATTING = 11; - private static final int TABLE_FORMATTING = 12; - private static final int IGNORE_TABLE_DIMENSIONS = 13; - private static final int USE_DUBLIN_CORE = 14; - private static final int NOTES = 15; - private static final int CONVERT_TO_PX = 16; - private static final int SCALING = 17; - private static final int COLUMN_SCALING = 18; - private static final int FLOAT_OBJECTS = 19; - private static final int TABSTOP_STYLE = 20; - private static final int USE_LIST_HACK = 21; - private static final int SPLIT_LEVEL = 22; - private static final int REPEAT_LEVELS = 23; - private static final int CALC_SPLIT = 24; - private static final int DISPLAY_HIDDEN_SHEETS = 25; - private static final int DISPLAY_HIDDEN_ROWS_COLS = 26; - private static final int DISPLAY_FILTERED_ROWS_COLS = 27; - private static final int APPLY_PRINT_RANGES = 28; - private static final int USE_TITLE_AS_HEADING = 29; - private static final int USE_SHEET_NAMES_AS_HEADINGS = 30; - private static final int XSLT_PATH = 31; - private static final int SAVE_IMAGES_IN_SUBDIR = 32; - private static final int UPLINK = 33; - private static final int DIRECTORY_ICON = 34; - private static final int DOCUMENT_ICON = 35; + private static final int HEXADECIMAL_ENTITIES = 8; + private static final int CUSTOM_STYLESHEET = 9; + private static final int FORMATTING = 10; + private static final int FRAME_FORMATTING = 11; + private static final int SECTION_FORMATTING = 12; + private static final int TABLE_FORMATTING = 13; + private static final int IGNORE_TABLE_DIMENSIONS = 14; + private static final int USE_DUBLIN_CORE = 15; + private static final int NOTES = 16; + private static final int CONVERT_TO_PX = 17; + private static final int SCALING = 18; + private static final int COLUMN_SCALING = 19; + private static final int FLOAT_OBJECTS = 20; + private static final int TABSTOP_STYLE = 21; + private static final int USE_LIST_HACK = 22; + private static final int SPLIT_LEVEL = 23; + private static final int REPEAT_LEVELS = 24; + private static final int CALC_SPLIT = 25; + private static final int DISPLAY_HIDDEN_SHEETS = 26; + private static final int DISPLAY_HIDDEN_ROWS_COLS = 27; + private static final int DISPLAY_FILTERED_ROWS_COLS = 28; + private static final int APPLY_PRINT_RANGES = 29; + private static final int USE_TITLE_AS_HEADING = 30; + private static final int USE_SHEET_NAMES_AS_HEADINGS = 31; + private static final int XSLT_PATH = 32; + private static final int SAVE_IMAGES_IN_SUBDIR = 33; + private static final int UPLINK = 34; + private static final int DIRECTORY_ICON = 35; + private static final int DOCUMENT_ICON = 36; protected XhtmlStyleMap xpar = new XhtmlStyleMap(); protected XhtmlStyleMap xtext = new XhtmlStyleMap(); @@ -111,6 +112,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { options[ADD_BOM] = new BooleanOption("add_bom","false"); options[ENCODING] = new Option("encoding","UTF-8"); options[USE_NAMED_ENTITIES] = new BooleanOption("use_named_entities","false"); + options[HEXADECIMAL_ENTITIES] = new BooleanOption("hexadecimal_entities","true"); options[CUSTOM_STYLESHEET] = new Option("custom_stylesheet",""); options[FORMATTING] = new XhtmlFormatOption("formatting","convert_all"); options[FRAME_FORMATTING] = new XhtmlFormatOption("frame_formatting","convert_all"); @@ -216,6 +218,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public boolean xhtmlAddBOM() { return ((BooleanOption) options[ADD_BOM]).getValue(); } public String xhtmlEncoding() { return options[ENCODING].getString(); } public boolean useNamedEntities() { return ((BooleanOption) options[USE_NAMED_ENTITIES]).getValue(); } + public boolean hexadecimalEntities() { return ((BooleanOption) options[HEXADECIMAL_ENTITIES]).getValue(); } public String xhtmlCustomStylesheet() { return options[CUSTOM_STYLESHEET].getString(); } public int xhtmlFormatting() { return ((XhtmlFormatOption) options[FORMATTING]).getValue(); } public int xhtmlFrameFormatting() { return ((XhtmlFormatOption) options[FRAME_FORMATTING]).getValue(); } diff --git a/source/java/writer2latex/xhtml/XhtmlDocument.java b/source/java/writer2latex/xhtml/XhtmlDocument.java index c1a4367..4d3b276 100644 --- a/source/java/writer2latex/xhtml/XhtmlDocument.java +++ b/source/java/writer2latex/xhtml/XhtmlDocument.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-05-29) + * Version 1.2 (2009-09-05) * */ @@ -82,6 +82,7 @@ public class XhtmlDocument extends DOMDocument { // Configuration private String sEncoding = "UTF-8"; private boolean bUseNamedEntities = false; + private boolean bHexadecimalEntities = true; private char cLimit = 65535; private boolean bNoDoctype = false; private boolean bAddBOM = false; @@ -292,6 +293,10 @@ public class XhtmlDocument extends DOMDocument { bUseNamedEntities = b; } + public void setHexadecimalEntities(boolean b) { + bHexadecimalEntities = b; + } + public void setXsltPath(String s) { sXsltPath = s; } public String getFileExtension() { return super.getFileExtension(); } @@ -474,7 +479,12 @@ public class XhtmlDocument extends DOMDocument { } } if (c>cLimit) { - osw.write("&#x"+Integer.toHexString(c).toUpperCase()+";"); + if (bHexadecimalEntities) { + osw.write("&#x"+Integer.toHexString(c).toUpperCase()+";"); + } + else { + osw.write("&#"+Integer.toString(c).toUpperCase()+";"); + } } else { osw.write(c); diff --git a/source/java/writer2latex/xmerge/OfficeConstants.java b/source/java/writer2latex/xmerge/OfficeConstants.java index 37ca471..2fb0af1 100644 --- a/source/java/writer2latex/xmerge/OfficeConstants.java +++ b/source/java/writer2latex/xmerge/OfficeConstants.java @@ -42,7 +42,7 @@ package writer2latex.xmerge; /** * This interface contains constants for StarOffice XML tags, - * attributes (StarCalc cell types, etc.). + * attributes (StarCalc cell types, etc.). * * @author Herbie Ong, Paul Rank, Martin Maher */ diff --git a/source/java/writer2latex/xmerge/OfficeDocumentException.java b/source/java/writer2latex/xmerge/OfficeDocumentException.java index f3549a3..c03cfb4 100644 --- a/source/java/writer2latex/xmerge/OfficeDocumentException.java +++ b/source/java/writer2latex/xmerge/OfficeDocumentException.java @@ -52,7 +52,7 @@ import org.xml.sax.SAXParseException; /** * Used by OfficeDocument to encapsulate exceptions. It will add * more details to the message string if it is of type - * SAXParseException. + * SAXParseException. * * @author Herbie Ong */ diff --git a/source/oxt/writer2latex/OptionPages.xcu b/source/oxt/writer2latex/OptionPages.xcu index 755a7d5..784473b 100644 --- a/source/oxt/writer2latex/OptionPages.xcu +++ b/source/oxt/writer2latex/OptionPages.xcu @@ -17,52 +17,155 @@ + + - org.openoffice.da.writer2latex.configuration + org.openoffice.da.writer2latex/configuration Writer2LaTeX - %origin%/W2LDialogs2/Configuration1.xdl + %origin%/W2LDialogs2/ConfigurationRoot.xdl org.openoffice.da.writer2latex.ConfigurationDialog + - + + - org.openoffice.da.writer2latex.configuration.subpage1 + org.openoffice.da.writer2latex/configuration/documentclass - Subpage + Documentclass - %origin%/W2LDialogs2/Configuration2.xdl + %origin%/W2LDialogs2/Documentclass.xdl org.openoffice.da.writer2latex.ConfigurationDialog - - org.openoffice.da.writer2latex.configuration.subpage2 + org.openoffice.da.writer2latex.configuration.styles - Subpage + Styles - %origin%/W2LDialogs2/Configuration1.xdl + %origin%/W2LDialogs2/Styles.xdl org.openoffice.da.writer2latex.ConfigurationDialog - + + + + org.openoffice.da.writer2latex.configuration.formatting + + + Formatting + + + %origin%/W2LDialogs2/Formatting.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.fonts + + + Fonts + + + %origin%/W2LDialogs2/Fonts.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.pages + + + Pages + + + %origin%/W2LDialogs2/Pages.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.tables + + + Tables + + + %origin%/W2LDialogs2/Tables.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.figures + + + Figures + + + %origin%/W2LDialogs2/Figures.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.textandmath + + + Text and math + + + %origin%/W2LDialogs2/TextAndMath.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + diff --git a/source/oxt/writer2latex/W2LDialogs2/Configuration1.xdl b/source/oxt/writer2latex/W2LDialogs2/Configuration1.xdl deleted file mode 100644 index 6a0367b..0000000 --- a/source/oxt/writer2latex/W2LDialogs2/Configuration1.xdl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Configuration2.xdl b/source/oxt/writer2latex/W2LDialogs2/Configuration2.xdl deleted file mode 100644 index 0fac530..0000000 --- a/source/oxt/writer2latex/W2LDialogs2/Configuration2.xdl +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/ConfigurationRoot.xdl b/source/oxt/writer2latex/W2LDialogs2/ConfigurationRoot.xdl new file mode 100644 index 0000000..817f307 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/ConfigurationRoot.xdl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Documentclass.xdl b/source/oxt/writer2latex/W2LDialogs2/Documentclass.xdl new file mode 100644 index 0000000..92258d9 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Documentclass.xdl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Figures.xdl b/source/oxt/writer2latex/W2LDialogs2/Figures.xdl new file mode 100644 index 0000000..1cdf349 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Figures.xdl @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Fonts.xdl b/source/oxt/writer2latex/W2LDialogs2/Fonts.xdl new file mode 100644 index 0000000..ddf9bdc --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Fonts.xdl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Formatting.xdl b/source/oxt/writer2latex/W2LDialogs2/Formatting.xdl new file mode 100644 index 0000000..10369ff --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Formatting.xdl @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Pages.xdl b/source/oxt/writer2latex/W2LDialogs2/Pages.xdl new file mode 100644 index 0000000..3edb8c0 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Pages.xdl @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Styles.xdl b/source/oxt/writer2latex/W2LDialogs2/Styles.xdl new file mode 100644 index 0000000..063a244 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Styles.xdl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Tables.xdl b/source/oxt/writer2latex/W2LDialogs2/Tables.xdl new file mode 100644 index 0000000..f41c548 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Tables.xdl @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/TextAndMath.xdl b/source/oxt/writer2latex/W2LDialogs2/TextAndMath.xdl new file mode 100644 index 0000000..309b41f --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/TextAndMath.xdl @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/dialog.xlb b/source/oxt/writer2latex/W2LDialogs2/dialog.xlb index cbcedd2..eead70f 100644 --- a/source/oxt/writer2latex/W2LDialogs2/dialog.xlb +++ b/source/oxt/writer2latex/W2LDialogs2/dialog.xlb @@ -1,6 +1,13 @@ - - + + + + + + + + + \ No newline at end of file