Writer2xhtml custom config ui + EPUB export

git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@55 f0f2a975-2e09-46c8-9428-3b39399b9f3c
This commit is contained in:
henrikjust 2010-03-29 11:07:24 +00:00
parent a58ea7fa19
commit ce61f7bc3b
41 changed files with 1118 additions and 212 deletions

View file

@ -20,7 +20,7 @@
*
* All Rights Reserved.
*
* Version 1.2 (2010-03-15)
* Version 1.2 (2010-03-25)
*
*/
@ -44,8 +44,10 @@ import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import writer2latex.api.Config;
import writer2latex.api.ContentEntry;
import writer2latex.api.ConverterFactory;
//import writer2latex.api.ConverterResult;
import writer2latex.base.ContentEntryImpl;
import writer2latex.base.ConverterBase;
//import writer2latex.latex.LaTeXDocumentPortion;
//import writer2latex.latex.util.Context;
@ -57,7 +59,7 @@ import writer2latex.util.ExportNameCollection;
import writer2latex.util.Misc;
/**
* <p>This class converts an OpenDocument file to an XHTML(+MathML) document<.</p>
* <p>This class converts an OpenDocument file to an XHTML(+MathML) document.</p>
*
*/
public class Converter extends ConverterBase {
@ -86,6 +88,8 @@ public class Converter extends ConverterBase {
private XhtmlDocument htmlDoc; // current outfile
private Document htmlDOM; // current DOM, usually within htmlDoc
private boolean bNeedHeaderFooter = false;
private int nTocFileIndex = -1;
private int nAlphabeticalIndex = -1;
// Hyperlinks
Hashtable<String, Integer> targets = new Hashtable<String, Integer>();
@ -123,6 +127,28 @@ public class Converter extends ConverterBase {
protected int getType() { return nType; }
protected int getOutFileIndex() { return nOutFileIndex; }
protected void addContentEntry(String sTitle, int nLevel, String sTarget) {
converterResult.addContentEntry(new ContentEntryImpl(sTitle,nLevel,htmlDoc,sTarget));
}
protected void setTocFile(String sTarget) {
converterResult.setTocFile(new ContentEntryImpl(l10n.get(L10n.CONTENTS),1,htmlDoc,sTarget));
nTocFileIndex = nOutFileIndex;
}
protected void setLofFile(String sTarget) {
converterResult.setLofFile(new ContentEntryImpl("Figures",1,htmlDoc,sTarget));
}
protected void setLotFile(String sTarget) {
converterResult.setLotFile(new ContentEntryImpl("Tables",1,htmlDoc,sTarget));
}
protected void setIndexFile(String sTarget) {
converterResult.setIndexFile(new ContentEntryImpl(l10n.get(L10n.INDEX),1,htmlDoc,sTarget));
nAlphabeticalIndex = nOutFileIndex;
}
protected Element createElement(String s) { return htmlDOM.createElement(s); }
@ -327,13 +353,14 @@ public class Converter extends ConverterBase {
}
}
}
}
private void addNavigationLink(Document dom, Node node, String s, int nIndex) {
if (nIndex>=0 && nIndex<=nOutFileIndex) {
Element a = dom.createElement("a");
a.setAttribute("href",Misc.makeHref(getOutFileName(nIndex,true)));
a.setAttribute("href",getOutFileName(nIndex,true));
a.appendChild(dom.createTextNode(s));
//node.appendChild(dom.createTextNode("["));
node.appendChild(a);
@ -446,7 +473,7 @@ public class Converter extends ConverterBase {
if (template!=null) { htmlDoc.readFromTemplate(template); }
else if (bNeedHeaderFooter) { htmlDoc.createHeaderFooter(); }
outFiles.add(nOutFileIndex,htmlDoc);
convertData.addDocument(htmlDoc);
converterResult.addDocument(htmlDoc);
// Create head + body
htmlDOM = htmlDoc.getContentDOM();

View file

@ -20,7 +20,7 @@
*
* All Rights Reserved.
*
* Version 1.2 (2010-03-12)
* Version 1.2 (2010-03-26)
*
*/
@ -568,10 +568,17 @@ public class TextConverter extends ConverterHelper {
heading.appendChild(span);
span.appendChild( converter.createTextNode(sLabel) );
}
// Add to toc
if (!bInToc) {
converter.addTarget(heading,"toc"+(++nTocIndex));
// Add in external content
if (nLevel<=nSplit) {
converter.addContentEntry(sLabel+(sLabel.length()>0 ? " " : "")+Misc.getPCDATA(onode), nLevel, null);
}
// Add to real toc
TocEntry entry = new TocEntry();
entry.onode = (Element) onode;
entry.sLabel = sLabel;
@ -1014,6 +1021,8 @@ public class TextConverter extends ConverterHelper {
if (!ofr.getTocReader((Element)onode).isByChapter()) {
nTocFileIndex = converter.getOutFileIndex();
}
converter.setTocFile(null);
Element div = converter.createElement("div");
hnode.appendChild(div);
@ -1175,6 +1184,8 @@ public class TextConverter extends ConverterHelper {
*/
private void handleAlphabeticalIndex (Node onode, Node hnode) {
nAlphabeticalIndex = converter.getOutFileIndex();
converter.setIndexFile(null);
Node source = Misc.getChildByTagName(onode,XMLString.TEXT_ALPHABETICAL_INDEX_SOURCE);
if (source!=null) {
Element div = converter.createElement("div");

View file

@ -173,6 +173,10 @@ public class XhtmlDocument extends DOMDocument {
return "";
}
@Override public boolean isMasterDocument() {
return true;
}
public Element getHeadNode() { return headNode; }
public Element getBodyNode() { return bodyNode; }