]> git.lyx.org Git - features.git/commitdiff
Allow LyX format to be shown in View>Source.
authorRichard Heck <rgheck@lyx.org>
Wed, 11 Jul 2012 15:20:15 +0000 (11:20 -0400)
committerRichard Heck <rgheck@lyx.org>
Wed, 11 Jul 2012 15:39:07 +0000 (11:39 -0400)
Cherry-picked from b7ac2d69e7125bbe6b0bcc7a226cf8245773122a.

src/Buffer.cpp
src/BufferParams.cpp
src/OutputParams.h
src/frontends/qt4/GuiViewSource.cpp
src/insets/InsetExternal.cpp
status.20x

index ec525f7f71c0dbb56baf2872313710e84292afaf..97ed9d81fd61dd277386e37b6d09659dab3cab1b 100644 (file)
@@ -3215,14 +3215,14 @@ void Buffer::getSourceCode(odocstream & os, string const format,
                                        convert<docstring>(par_end - 1))
                           << "\n\n";
                }
-               TexRow texrow;
-               texrow.reset();
-               texrow.newline();
-               texrow.newline();
                // output paragraphs
-               if (params().isDocBook())
-                       docbookParagraphs(text(), *this, os, runparams);
-               else if (runparams.flavor == OutputParams::HTML) {
+               if (runparams.flavor == OutputParams::LYX) {
+                       Paragraph const & par = text().paragraphs()[par_begin];
+                       ostringstream ods;
+                       depth_type dt = par.getDepth();
+                       par.write(ods, params(), dt);
+                       os << from_utf8(ods.str());
+               } else if (runparams.flavor == OutputParams::HTML) {
                        XHTMLStream xs(os);
                        setMathFlavor(runparams);
                        xhtmlParagraphs(text(), *this, xs, runparams);
@@ -3232,6 +3232,8 @@ void Buffer::getSourceCode(odocstream & os, string const format,
                        // Probably should have some routine with a signature like them.
                        writePlaintextParagraph(*this,
                                text().paragraphs()[par_begin], os, runparams, dummy);
+               } else if (params().isDocBook()) {
+                       docbookParagraphs(text(), *this, os, runparams);
                } else {
                        // We need to validate the Buffer params' features here
                        // in order to know if we should output polyglossia
@@ -3239,28 +3241,46 @@ void Buffer::getSourceCode(odocstream & os, string const format,
                        LaTeXFeatures features(*this, params(), runparams);
                        params().validate(features);
                        runparams.use_polyglossia = features.usePolyglossia();
+                       TexRow texrow;
+                       texrow.reset();
+                       texrow.newline();
+                       texrow.newline();
                        // latex or literate
                        otexstream ots(os, texrow);
                        latexParagraphs(*this, text(), ots, runparams);
                }
        } else {
                os << "% ";
-               if (output == FullSource) 
+               if (output == FullSource)
                        os << _("Preview source code");
                else if (output == OnlyPreamble)
                        os << _("Preview preamble");
                else if (output == OnlyBody)
                        os << _("Preview body");
                os << "\n\n";
-               d->texrow.reset();
-               d->texrow.newline();
-               d->texrow.newline();
-               if (params().isDocBook())
-                       writeDocBookSource(os, absFileName(), runparams, output);
-               else if (runparams.flavor == OutputParams::HTML)
+               if (runparams.flavor == OutputParams::LYX) {
+                       ostringstream ods;
+                       if (output == FullSource)
+                               write(ods);
+                       else if (output == OnlyPreamble)
+                               params().writeFile(ods);
+                       else if (output == OnlyBody)
+                               text().write(ods);
+                       os << from_utf8(ods.str());
+               } else if (runparams.flavor == OutputParams::HTML) {
                        writeLyXHTMLSource(os, runparams, output);
-               else {
+               } else if (runparams.flavor == OutputParams::TEXT) {
+                       if (output == OnlyPreamble) {
+                               os << _("% Plaintext does not have a preamble.");
+                       } else
+                               writePlaintextFile(*this, os, runparams);
+               } else if (params().isDocBook()) {
+                               writeDocBookSource(os, absFileName(), runparams, output);
+               } else {
                        // latex or literate
+                       d->texrow.reset();
+                       d->texrow.newline();
+                       d->texrow.newline();
                        otexstream ots(os, d->texrow);
                        writeLaTeXSource(ots, string(), runparams, output);
                }
index 3a07c0160bbcf1c7d21cd2ac619a72fbdba3b950..a22487469ce1e7e02145e964a2ef972f2086484c 100644 (file)
@@ -2181,6 +2181,8 @@ OutputParams::FLAVOR BufferParams::getOutputFlavor(string const format) const
                result = OutputParams::LUATEX;
        else if (dformat == "dviluatex")
                result = OutputParams::DVILUATEX;
+       else if (dformat == "lyx")
+               result = OutputParams::LYX;
        else {
                // Try to determine flavor of default output format
                vector<string> backs = backends();
index 1a7326ddd8b52bb1a2d893e92456db816bbbc661..97f4661bf33982fa1105c4ef7c6e42e879e7a52e 100644 (file)
@@ -35,7 +35,8 @@ public:
                XETEX,
                XML,
                HTML,
-               TEXT
+               TEXT,
+               LYX
        };
        
        enum MathFlavor {
index 6a49febd7de3dd552c656263472a606ab13bdd8d..83114eb7f237e39dc5576461d765a769e88dc40a 100644 (file)
@@ -203,11 +203,10 @@ void ViewSourceWidget::updateDefaultFormat()
        for (; it != en; ++it) {
                string const format = *it;
                Format const * fmt = formats.getFormat(format);
-               if (!fmt)
+               if (!fmt) {
                        LYXERR0("Can't find format for backend " << format << "!");
-               else if (fmt->name() == "lyx")
-                       // we can't presently display the LyX format itself
                        continue;
+               }
 
                QString const pretty =
                        fmt ? qt_(fmt->prettyname()) : toqstr(format);
index 6b1913530936c44f6842eba48698c48e0ee3da18..464353b324b7d4d19a795babc042f0845005b0f7 100644 (file)
@@ -746,6 +746,9 @@ void InsetExternal::validate(LaTeXFeatures & features) const
        case OutputParams::TEXT:
                format = "text";
                break;
+       case OutputParams::LYX:
+               format = "lyx";
+               break;
        }
        external::Template::Formats::const_iterator cit =
                et.formats.find(format);
index 54d1ff345345b469c7e8bc05ef690172c615b949..db0b8601d36672bfb35faa16dd9475adf5da359d 100644 (file)
@@ -43,6 +43,8 @@ What's new
 
 - Show backends, not formats, in View>Source (bug #7652).
 
+- Allow native LyX format to be shown in View>Source.
+
 
 * DOCUMENTATION AND LOCALIZATION
 
@@ -90,6 +92,8 @@ What's new
 
 - Fix enumitem module translation (bug #8201).
 
+- Set math display format when showing XHTML in View>Source.
+
 
 * DOCUMENTATION AND LOCALIZATION