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,

Reply via email to