InsetInclude::InsetInclude(Buffer * buf, InsetCommandParams const & p)
- : InsetCommand(buf, p, "include"), include_label(uniqueID()),
+ : InsetCommand(buf, p), include_label(uniqueID()),
preview_(new RenderMonitoredPreview(this)), failedtoload_(false),
set_label_(false), label_(0), child_buffer_(0)
{
InsetInclude::~InsetInclude()
{
+ if (isBufferLoaded())
+ buffer().invalidateBibfileCache();
delete label_;
}
}
case LFUN_INSET_MODIFY: {
- // It should be OK just to invalidate the cache is setParams()
+ // It should be OK just to invalidate the cache in setParams()
// If not....
// child_buffer_ = 0;
InsetCommandParams p(INCLUDE_CODE);
InsetCommand::doDispatch(cur, cmd);
p = params();
} else
- InsetCommand::string2params("include", to_utf8(cmd.argument()), p);
+ InsetCommand::string2params(to_utf8(cmd.argument()), p);
if (!p.getCmdName().empty()) {
if (isListings(p)){
InsetListingsParams new_params(to_utf8(p["lstparams"]));
}
}
setParams(p);
+ cur.forceBufferUpdate();
} else
- cur.noUpdate();
+ cur.noScreenUpdate();
break;
}
if (type(params()) == INPUT)
add_preview(*preview_, *this, buffer());
- buffer().updateBibfilesCache();
+ buffer().invalidateBibfileCache();
}
// Buffer creation is not possible.
return 0;
- if (!child->loadLyXFile(included_file)) {
+ if (child->loadLyXFile(included_file) != Buffer::ReadSuccess) {
failedtoload_ = true;
//close the buffer we just opened
theBufferList().release(child);
incfile = mangled;
else if (!isValidLaTeXFileName(incfile)) {
frontend::Alert::warning(_("Invalid filename"),
- _("The following filename is likely to cause trouble "
- "when running the exported file through LaTeX: ") +
- from_utf8(incfile));
+ _("The following filename will cause troubles "
+ "when running the exported file through LaTeX: ") +
+ from_utf8(incfile));
+ }
+ else if (!isValidDVIFileName(incfile)) {
+ frontend::Alert::warning(_("Problematic filename for DVI"),
+ _("The following filename can cause troubles "
+ "when running the exported file through LaTeX "
+ "and opening the resulting DVI: ") +
+ from_utf8(incfile), true);
}
LYXERR(Debug::LATEX, "incfile:" << incfile);
LYXERR(Debug::LATEX, "exportfile:" << exportfile);
//in a comment or doing a dryrun
} else if (isInputOrInclude(params()) &&
isLyXFileName(included_file.absFileName())) {
- //if it's a LyX file and we're inputting or including,
- //try to load it so we can write the associated latex
- if (!loadIfNeeded())
+ // if it's a LyX file and we're inputting or including,
+ // try to load it so we can write the associated latex
+
+ Buffer * tmp = loadIfNeeded();
+ if (!tmp)
return false;
- Buffer * tmp = theBufferList().getBuffer(included_file);
-
if (tmp->params().baseClass() != masterBuffer->params().baseClass()) {
// FIXME UNICODE
docstring text = bformat(_("Included file `%1$s'\n"
string const exportfile = changeExtension(incfile, ".sgml");
DocFileName writefile(changeExtension(included_file, ".sgml"));
- if (loadIfNeeded()) {
- Buffer * tmp = theBufferList().getBuffer(FileName(included_file));
-
+ Buffer * tmp = loadIfNeeded();
+ if (tmp) {
string const mangled = writefile.mangledFileName();
writefile = makeAbsPath(mangled,
buffer().masterBuffer()->temppath());
// Here we must do the fun stuff...
// Load the file in the include if it needs
// to be loaded:
- if (loadIfNeeded()) {
- // a file got loaded
- Buffer * const tmp = theBufferList().getBuffer(FileName(included_file));
+ Buffer * const tmp = loadIfNeeded();
+ if (tmp) {
+ // the file is loaded
// make sure the buffer isn't us
// FIXME RECURSIVE INCLUDES
// This is not sufficient, as recursive includes could be
void InsetInclude::fillWithBibKeys(BiblioInfo & keys,
InsetIterator const & /*di*/) const
{
- if (loadIfNeeded()) {
- string const included_file = includedFileName(buffer(), params()).absFileName();
- Buffer * tmp = theBufferList().getBuffer(FileName(included_file));
- BiblioInfo const & newkeys = tmp->localBibInfo();
- keys.mergeBiblioInfo(newkeys);
- }
-}
-
-
-void InsetInclude::updateBibfilesCache()
-{
- Buffer const * const child = getChildBuffer();
- if (child)
- child->updateBibfilesCache(Buffer::UpdateChildOnly);
-}
-
-
-support::FileNameList const &
- InsetInclude::getBibfilesCache() const
-{
- Buffer const * const child = getChildBuffer();
- if (child)
- return child->getBibfilesCache(Buffer::UpdateChildOnly);
-
- static support::FileNameList const empty;
- return empty;
+ Buffer * child = loadIfNeeded();
+ if (!child)
+ return;
+ child->fillWithBibKeys(keys);
}