Author: rgheck
Date: Sat Oct 29 22:14:48 2011
New Revision: 40069
URL: http://www.lyx.org/trac/changeset/40069
Log:
Improve argument handling for the source generation routines.
Modified:
lyx-devel/trunk/src/Buffer.cpp
lyx-devel/trunk/src/Buffer.h
lyx-devel/trunk/src/BufferList.cpp
lyx-devel/trunk/src/graphics/PreviewLoader.cpp
lyx-devel/trunk/src/insets/InsetInclude.cpp
Modified: lyx-devel/trunk/src/Buffer.cpp
==============================================================================
--- lyx-devel/trunk/src/Buffer.cpp Sat Oct 29 22:14:43 2011 (r40068)
+++ lyx-devel/trunk/src/Buffer.cpp Sat Oct 29 22:14:48 2011 (r40069)
@@ -1301,7 +1301,7 @@
bool Buffer::makeLaTeXFile(FileName const & fname,
string const & original_path,
OutputParams const & runparams_in,
- bool output_preamble, bool output_body) const
+ OutputWhat output) const
{
OutputParams runparams = runparams_in;
@@ -1340,8 +1340,7 @@
try {
os.texrow().reset();
- writeLaTeXSource(os, original_path,
- runparams, output_preamble, output_body);
+ writeLaTeXSource(os, original_path, runparams, output);
}
catch (EncodingException & e) {
odocstringstream ods;
@@ -1386,7 +1385,7 @@
void Buffer::writeLaTeXSource(otexstream & os,
string const & original_path,
OutputParams const & runparams_in,
- bool const output_preamble, bool const output_body)
const
+ OutputWhat output) const
{
// The child documents, if any, shall be already loaded at this point.
@@ -1401,6 +1400,11 @@
validate(features);
LYXERR(Debug::LATEX, " Buffer validation done.");
+ bool const output_preamble =
+ output == FullSource || output == OnlyPreamble;
+ bool const output_body =
+ output == FullSource || output == OnlyBody;
+
// The starting paragraph of the coming rows is the
// first paragraph of the document. (Asger)
if (output_preamble && runparams.nice) {
@@ -1562,7 +1566,7 @@
void Buffer::makeDocBookFile(FileName const & fname,
OutputParams const & runparams,
- bool const body_only) const
+ OutputWhat output) const
{
LYXERR(Debug::LATEX, "makeDocBookFile...");
@@ -1575,7 +1579,7 @@
updateBuffer();
updateMacroInstances(OutputUpdate);
- writeDocBookSource(ofs, fname.absFileName(), runparams, body_only);
+ writeDocBookSource(ofs, fname.absFileName(), runparams, output);
ofs.close();
if (ofs.fail())
@@ -1585,7 +1589,7 @@
void Buffer::writeDocBookSource(odocstream & os, string const & fname,
OutputParams const & runparams,
- bool const only_body) const
+ OutputWhat output) const
{
LaTeXFeatures features(*this, params(), runparams);
validate(features);
@@ -1595,7 +1599,12 @@
DocumentClass const & tclass = params().documentClass();
string const top_element = tclass.latexname();
- if (!only_body) {
+ bool const output_preamble =
+ output == FullSource || output == OnlyPreamble;
+ bool const output_body =
+ output == FullSource || output == OnlyBody;
+
+ if (output_preamble) {
if (runparams.flavor == OutputParams::XML)
os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
@@ -1670,7 +1679,7 @@
updateBuffer(UpdateMaster, OutputUpdate);
updateMacroInstances(OutputUpdate);
- writeLyXHTMLSource(ofs, runparams);
+ writeLyXHTMLSource(ofs, runparams, FullSource);
ofs.close();
if (ofs.fail())
@@ -1680,13 +1689,18 @@
void Buffer::writeLyXHTMLSource(odocstream & os,
OutputParams const & runparams,
- bool const only_body) const
+ OutputWhat output) const
{
LaTeXFeatures features(*this, params(), runparams);
validate(features);
d->bibinfo_.makeCitationLabels(*this);
- if (!only_body) {
+ bool const output_preamble =
+ output == FullSource || output == OnlyPreamble;
+ bool const output_body =
+ output == FullSource || output == OnlyBody;
+
+ if (output_preamble) {
os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
<< "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus
MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd\">\n"
// FIXME Language should be set properly.
@@ -1734,7 +1748,7 @@
XHTMLStream xs(os);
params().documentClass().counters().reset();
xhtmlParagraphs(text(), *this, xs, runparams);
- if (!only_body)
+ if (output_preamble)
os << "</body>\n</html>\n";
}
@@ -3180,13 +3194,13 @@
d->texrow.newline();
d->texrow.newline();
if (params().isDocBook())
- writeDocBookSource(os, absFileName(), runparams, false);
+ writeDocBookSource(os, absFileName(), runparams,
FullSource);
else if (runparams.flavor == OutputParams::HTML)
- writeLyXHTMLSource(os, runparams, false);
+ writeLyXHTMLSource(os, runparams, FullSource);
else {
// latex or literate
otexstream ots(os, d->texrow);
- writeLaTeXSource(ots, string(), runparams, true, true);
+ writeLaTeXSource(ots, string(), runparams, FullSource);
}
} else {
runparams.par_begin = par_begin;
Modified: lyx-devel/trunk/src/Buffer.h
==============================================================================
--- lyx-devel/trunk/src/Buffer.h Sat Oct 29 22:14:43 2011 (r40068)
+++ lyx-devel/trunk/src/Buffer.h Sat Oct 29 22:14:48 2011 (r40069)
@@ -285,12 +285,17 @@
/// Fill in the ErrorList with the TeXErrors
void bufferErrors(TeXErrors const &, ErrorList &) const;
+ enum OutputWhat {
+ FullSource,
+ OnlyBody,
+ OnlyPreamble
+ };
+
/// Just a wrapper for writeLaTeXSource, first creating the ofstream.
bool makeLaTeXFile(support::FileName const & filename,
std::string const & original_path,
OutputParams const &,
- bool output_preamble = true,
- bool output_body = true) const;
+ OutputWhat output = FullSource) const;
/** Export the buffer to LaTeX.
If \p os is a file stream, and params().inputenc is "auto" or
"default", and the buffer contains text in different languages
@@ -316,23 +321,22 @@
void writeLaTeXSource(otexstream & os,
std::string const & original_path,
OutputParams const &,
- bool output_preamble = true,
- bool output_body = true) const;
+ OutputWhat output = FullSource) const;
///
void makeDocBookFile(support::FileName const & filename,
OutputParams const & runparams_in,
- bool only_body = false) const;
+ OutputWhat output = FullSource) const;
///
void writeDocBookSource(odocstream & os, std::string const & filename,
OutputParams const & runparams_in,
- bool only_body = false) const;
+ OutputWhat output = FullSource) const;
///
void makeLyXHTMLFile(support::FileName const & filename,
OutputParams const & runparams_in) const;
///
void writeLyXHTMLSource(odocstream & os,
OutputParams const & runparams_in,
- bool only_body = false) const;
+ OutputWhat output = FullSource) const;
/// returns the main language for the buffer (document)
Language const * language() const;
/// get l10n translated to the buffers language
Modified: lyx-devel/trunk/src/BufferList.cpp
==============================================================================
--- lyx-devel/trunk/src/BufferList.cpp Sat Oct 29 22:14:43 2011 (r40068)
+++ lyx-devel/trunk/src/BufferList.cpp Sat Oct 29 22:14:48 2011 (r40069)
@@ -213,7 +213,7 @@
if (!(*it)->isDepClean(masterTmpDir)) {
string writefile = addName(masterTmpDir,
(*it)->latexName());
(*it)->makeLaTeXFile(FileName(writefile), masterTmpDir,
- runparams, false);
+ runparams, Buffer::OnlyBody);
(*it)->markDepClean(masterTmpDir);
}
}
Modified: lyx-devel/trunk/src/graphics/PreviewLoader.cpp
==============================================================================
--- lyx-devel/trunk/src/graphics/PreviewLoader.cpp Sat Oct 29 22:14:43
2011 (r40068)
+++ lyx-devel/trunk/src/graphics/PreviewLoader.cpp Sat Oct 29 22:14:48
2011 (r40069)
@@ -716,7 +716,7 @@
runparams.nice = true;
runparams.moving_arg = true;
runparams.free_spacing = true;
- buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams, true,
false);
+ buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams,
Buffer::OnlyPreamble);
// FIXME! This is a HACK! The proper fix is to control the 'true'
// passed to WriteStream below:
Modified: lyx-devel/trunk/src/insets/InsetInclude.cpp
==============================================================================
--- lyx-devel/trunk/src/insets/InsetInclude.cpp Sat Oct 29 22:14:43 2011
(r40068)
+++ lyx-devel/trunk/src/insets/InsetInclude.cpp Sat Oct 29 22:14:48 2011
(r40069)
@@ -624,7 +624,7 @@
runparams.par_begin = 0;
runparams.par_end = tmp->paragraphs().size();
if (!tmp->makeLaTeXFile(tmpwritefile, masterFileName(buffer()).
- onlyPath().absFileName(), runparams, false)) {
+ onlyPath().absFileName(), runparams,
Buffer::OnlyBody)) {
docstring msg = bformat(_("Included file `%1$s' "
"was not exported correctly.\nWarning: "
"LaTeX export is probably incomplete."),
@@ -793,7 +793,7 @@
if (all_pars) {
op.par_begin = 0;
op.par_end = 0;
- ibuf->writeLyXHTMLSource(xs.os(), op, true);
+ ibuf->writeLyXHTMLSource(xs.os(), op, Buffer::OnlyBody);
} else
xs << XHTMLStream::ESCAPE_NONE
<< "<!-- Included file: "
@@ -863,7 +863,7 @@
LYXERR(Debug::LATEX, "exportfile:" << exportfile);
LYXERR(Debug::LATEX, "writefile:" << writefile);
- tmp->makeDocBookFile(writefile, runparams, true);
+ tmp->makeDocBookFile(writefile, runparams, Buffer::OnlyBody);
}
runparams.exportdata->addExternalFile("docbook", writefile,