X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetInclude.cpp;h=89f304db7ea84cb79243da885e46448ecbaee30c;hb=2c357c1d23b7b83839a9beb8225d4f1ae4f793b4;hp=c917a3d7d19dbf01e8285d9ed495582e67969c48;hpb=c81fd7337d725cbc6b1db6d88e827d3b4f87f995;p=lyx.git diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index c917a3d7d1..89f304db7e 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -19,20 +19,18 @@ #include "BufferParams.h" #include "BufferView.h" #include "Cursor.h" -#include "support/debug.h" #include "DispatchResult.h" #include "Exporter.h" #include "FuncRequest.h" #include "FuncStatus.h" -#include "support/gettext.h" #include "LaTeXFeatures.h" #include "LyX.h" #include "LyXRC.h" #include "Lexer.h" #include "MetricsInfo.h" #include "OutputParams.h" -#include "TocBackend.h" #include "TextClass.h" +#include "TocBackend.h" #include "frontends/alert.h" #include "frontends/Painter.h" @@ -43,10 +41,12 @@ #include "insets/RenderPreview.h" #include "insets/InsetListingsParams.h" +#include "support/debug.h" #include "support/docstream.h" #include "support/ExceptionMessage.h" #include "support/FileNameList.h" #include "support/filetools.h" +#include "support/gettext.h" #include "support/lstrings.h" // contains #include "support/lyxalgo.h" #include "support/convert.h" @@ -140,8 +140,8 @@ EmbeddedFile const includedFilename(Buffer const & buffer, // each time, but there seems to be no easy way around. EmbeddedFile file(to_utf8(params["filename"]), onlyPath(parentFilename(buffer))); - file.setEmbed(params["embed"] == _("true") ? true : false); - file.enable(buffer.embeddedFiles().enabled(), &buffer); + file.setEmbed(!params["embed"].empty()); + file.enable(buffer.embedded(), &buffer); return file; } @@ -202,6 +202,13 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd) REF_CODE); } try { + // the embed parameter passed back from the dialog + // is "true" or "false", we need to change it. + if (p["embed"] == _("false")) + p["embed"].clear(); + else + p["embed"] = from_utf8(EmbeddedFile(to_utf8(p["filename"]), + onlyPath(parentFilename(cur.buffer()))).inzipName()); // test parameter includedFilename(cur.buffer(), p); } catch (ExceptionMessage const & message) { @@ -274,7 +281,7 @@ docstring const InsetInclude::getScreenLabel(Buffer const & buf) const else temp += from_utf8(onlyFilename(to_utf8(params()["filename"]))); - if (params()["embed"] == _("true")) + if (!params()["embed"].empty()) temp += _(" (embedded)"); return temp; } @@ -713,17 +720,17 @@ void InsetInclude::updateBibfilesCache(Buffer const & buffer) } -FileNameList const & +EmbeddedFileList const & InsetInclude::getBibfilesCache(Buffer const & buffer) const { Buffer * const tmp = getChildBuffer(buffer, params()); if (tmp) { tmp->setParent(0); - FileNameList const & cache = tmp->getBibfilesCache(); + EmbeddedFileList const & cache = tmp->getBibfilesCache(); tmp->setParent(&buffer); return cache; } - static FileNameList const empty; + static EmbeddedFileList const empty; return empty; } @@ -838,27 +845,27 @@ void add_preview(RenderMonitoredPreview & renderer, InsetInclude const & inset, void InsetInclude::addPreview(graphics::PreviewLoader & ploader) const { Buffer const & buffer = ploader.buffer(); - if (preview_wanted(params(), buffer)) { - preview_->setAbsFile(includedFilename(buffer, params())); - docstring const snippet = latex_string(*this, buffer); - preview_->addPreview(snippet, ploader); - } + if (!preview_wanted(params(), buffer)) + return; + preview_->setAbsFile(includedFilename(buffer, params())); + docstring const snippet = latex_string(*this, buffer); + preview_->addPreview(snippet, ploader); } -void InsetInclude::addToToc(TocList & toclist, Buffer const & buffer, - ParConstIterator const & pit) const +void InsetInclude::addToToc(Buffer const & buffer, + ParConstIterator const & cpit) const { if (isListings(params())) { InsetListingsParams p(to_utf8(params()["lstparams"])); string caption = p.getParamValue("caption"); if (caption.empty()) return; - Toc & toc = toclist["listing"]; + Toc & toc = buffer.tocBackend().toc("listing"); docstring const str = convert(toc.size() + 1) + ". " + from_utf8(caption); - // This inset does not have a valid ParConstIterator - // so it has to use the iterator of its parent paragraph + ParConstIterator pit = cpit; + pit.push_back(*this); toc.push_back(TocItem(pit, 0, str)); return; } @@ -866,6 +873,7 @@ void InsetInclude::addToToc(TocList & toclist, Buffer const & buffer, if (!childbuffer) return; + TocList & toclist = buffer.tocBackend().tocs(); TocList const & childtoclist = childbuffer->tocBackend().tocs(); TocList::const_iterator it = childtoclist.begin(); TocList::const_iterator const end = childtoclist.end(); @@ -878,30 +886,32 @@ void InsetInclude::addToToc(TocList & toclist, Buffer const & buffer, void InsetInclude::updateLabels(Buffer const & buffer, ParIterator const &) { Buffer const * const childbuffer = getChildBuffer(buffer, params()); - if (childbuffer) + if (childbuffer) { lyx::updateLabels(*childbuffer, true); - else if (isListings(params())) { - InsetListingsParams const par(to_utf8(params()["lstparams"])); - if (par.getParamValue("caption").empty()) - listings_label_.clear(); - else { - Counters & counters = buffer.params().getTextClass().counters(); - docstring const cnt = from_ascii("listing"); - if (counters.hasCounter(cnt)) { - counters.step(cnt); - listings_label_ = buffer.B_("Program Listing ") - + convert(counters.value(cnt)); - } else - listings_label_ = buffer.B_("Program Listing"); - } + return; + } + if (!isListings(params())) + return; + + InsetListingsParams const par(to_utf8(params()["lstparams"])); + if (par.getParamValue("caption").empty()) { + listings_label_.clear(); + return; + } + Counters & counters = buffer.params().getTextClass().counters(); + docstring const cnt = from_ascii("listing"); + listings_label_ = buffer.B_("Program Listing"); + if (counters.hasCounter(cnt)) { + counters.step(cnt); + listings_label_ += " " + convert(counters.value(cnt)); } } void InsetInclude::registerEmbeddedFiles(Buffer const & buffer, - EmbeddedFiles & files) const + EmbeddedFileList & files) const { - files.registerFile(includedFilename(buffer, params()), this); + files.registerFile(includedFilename(buffer, params()), this, buffer); } @@ -910,7 +920,7 @@ void InsetInclude::updateEmbeddedFile(Buffer const & buf, { InsetCommandParams p = params(); p["filename"] = from_utf8(file.outputFilename()); - p["embedded"] = file.embedded() ? _("true") : _("false"); + p["embed"] = file.embedded() ? from_utf8(file.inzipName()) : docstring(); set(p, buf); }