]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetexternal.C
* In the process of fixing the math background color bug, this commit transfer backgr...
[lyx.git] / src / insets / insetexternal.C
index d93fab6063374adcb7a8d12f6aa7c77182a418a0..588dabc39969747a563997b3ae28e1ad6b4a506a 100644 (file)
@@ -70,11 +70,11 @@ namespace external {
 
 TempName::TempName()
 {
-       tempname_ = support::tempName(string(), "lyxext");
+       support::FileName const tempname(support::tempName(support::FileName(), "lyxext"));
        // FIXME: This is unsafe
-       support::unlink(tempname_);
+       support::unlink(tempname);
        // must have an extension for the converter code to work correctly.
-       tempname_ += ".tmp";
+       tempname_ = support::FileName(tempname.absFilename() + ".tmp");
 }
 
 
@@ -290,7 +290,7 @@ bool InsetExternalParams::read(Buffer const & buffer, LyXLex & lex)
                        break;
 
                case EX_FILENAME: {
-                       lex.next();
+                       lex.eatLine();
                        string const name = lex.getString();
                        filename.set(name, buffer.filePath());
                        break;
@@ -482,10 +482,12 @@ void InsetExternal::edit(LCursor & cur, bool)
 }
 
 
-void InsetExternal::metrics(MetricsInfo & mi, Dimension & dim) const
+bool InsetExternal::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        renderer_->metrics(mi, dim);
+       bool const changed = dim_ != dim;
        dim_ = dim;
+       return changed;
 }
 
 
@@ -529,7 +531,7 @@ graphics::Params get_grfx_params(InsetExternalParams const & eparams)
 {
        graphics::Params gparams;
 
-       gparams.filename = eparams.filename.absFilename();
+       gparams.filename = eparams.filename;
        gparams.scale = eparams.lyxscale;
        if (eparams.clipdata.clip)
                gparams.bb = eparams.clipdata.bbox;
@@ -672,7 +674,7 @@ void InsetExternal::read(Buffer const & buffer, LyXLex & lex)
 
 
 int InsetExternal::latex(Buffer const & buf, odocstream & os,
-                        OutputParams const & runparams) const
+                         OutputParams const & runparams) const
 {
        if (params_.draft) {
                // FIXME UNICODE
@@ -685,8 +687,9 @@ int InsetExternal::latex(Buffer const & buf, odocstream & os,
        // "nice" means that the buffer is exported to LaTeX format but not
        // run through the LaTeX compiler.
        // If we're running through the LaTeX compiler, we should write the
-       // generated files in the bufer's temporary directory.
-       bool const external_in_tmpdir = !runparams.nice && !runparams.dryrun;
+       // generated files in the buffer's temporary directory.
+       bool const external_in_tmpdir = !runparams.nice;
+       bool const dryrun = runparams.dryrun || runparams.inComment;
 
        // If the template has specified a PDFLaTeX output, then we try and
        // use that.
@@ -705,33 +708,34 @@ int InsetExternal::latex(Buffer const & buf, odocstream & os,
                                                        buf, os,
                                                        *(runparams.exportdata),
                                                        external_in_tmpdir,
-                                                       runparams.inComment);
+                                                       dryrun);
                 }
-                
        }
-        
+
        return external::writeExternal(params_, "LaTeX", buf, os,
                                        *(runparams.exportdata),
                                        external_in_tmpdir,
-                                       runparams.inComment);
+                                       dryrun);
 }
 
 
 int InsetExternal::plaintext(Buffer const & buf, odocstream & os,
-                        OutputParams const & runparams) const
+                             OutputParams const & runparams) const
 {
-       return external::writeExternal(params_, "Ascii", buf, os,
-                                      *(runparams.exportdata), false,
-                                      runparams.inComment);
+       os << '\n'; // output external material on a new line
+       external::writeExternal(params_, "Ascii", buf, os,
+                               *(runparams.exportdata), false,
+                               runparams.dryrun || runparams.inComment);
+       return PLAINTEXT_NEWLINE;
 }
 
 
 int InsetExternal::docbook(Buffer const & buf, odocstream & os,
-                          OutputParams const & runparams) const
+                           OutputParams const & runparams) const
 {
        return external::writeExternal(params_, "DocBook", buf, os,
                                       *(runparams.exportdata), false,
-                                      runparams.inComment);
+                                      runparams.dryrun || runparams.inComment);
 }
 
 
@@ -778,7 +782,7 @@ void InsetExternal::validate(LaTeXFeatures & features) const
        for (; it != end; ++it) {
                string const preamble = etm.getPreambleDefByName(*it);
                if (!preamble.empty())
-                       features.addExternalPreamble(preamble);
+                       features.addPreambleSnippet(preamble);
        }
 }
 
@@ -791,16 +795,17 @@ namespace {
 
 bool preview_wanted(InsetExternalParams const & params)
 {
-       string const included_file = params.filename.absFilename();
        return params.display == external::PreviewDisplay &&
-               support::isFileReadable(included_file);
+               support::isFileReadable(params.filename);
 }
 
 
 docstring const latex_string(InsetExternal const & inset, Buffer const & buffer)
 {
        odocstringstream os;
-       OutputParams runparams;
+       // We don't need to set runparams.encoding since it is not used by
+       // latex().
+       OutputParams runparams(0);
        runparams.flavor = OutputParams::LATEX;
        inset.latex(buffer, os, runparams);
        return os.str();
@@ -815,7 +820,7 @@ void add_preview_and_start_loading(RenderMonitoredPreview & renderer,
 
        if (RenderPreview::status() != LyXRC::PREVIEW_OFF &&
            preview_wanted(params)) {
-               renderer.setAbsFile(params.filename.absFilename());
+               renderer.setAbsFile(params.filename);
                docstring const snippet = latex_string(inset, buffer);
                renderer.addPreview(snippet, buffer);
                renderer.startLoading(buffer);
@@ -832,7 +837,7 @@ void InsetExternal::addPreview(graphics::PreviewLoader & ploader) const
                return;
 
        if (preview_wanted(params())) {
-               ptr->setAbsFile(params_.filename.absFilename());
+               ptr->setAbsFile(params_.filename);
                docstring const snippet = latex_string(*this, ploader.buffer());
                ptr->addPreview(snippet, ploader);
        }