#include "insets/InsetListingsParams.h"
#include "support/docstream.h"
+#include "support/ExceptionMessage.h"
#include "support/FileNameList.h"
#include "support/filetools.h"
#include "support/lstrings.h" // contains
return t == INPUT || t == INCLUDE;
}
+
+FileName const masterFileName(Buffer const & buffer)
+{
+ return buffer.masterBuffer()->fileName();
+}
+
+
+void add_preview(RenderMonitoredPreview &, InsetInclude const &, Buffer const &);
+
+
+string const parentFilename(Buffer const & buffer)
+{
+ return buffer.absFileName();
+}
+
+
+EmbeddedFile const includedFilename(Buffer const & buffer,
+ InsetCommandParams const & params)
+{
+ // it is not a good idea to create this EmbeddedFile object
+ // 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.embedded(), &buffer);
+ return file;
+}
+
} // namespace anon
// FIXME
// This is only correct for the case of listings, but it'll do for now.
// In the other cases, this second parameter should just be empty.
- static const char * const paramnames[] = {"filename", "lstparams", ""};
- static const bool isoptional[] = {false, true};
- static const CommandInfo info = {2, paramnames, isoptional};
+ static const char * const paramnames[] = {"filename", "embed", "lstparams", ""};
+ static const bool isoptional[] = {false, false, true};
+ static const CommandInfo info = {3, paramnames, isoptional};
return &info;
}
from_utf8(par_new.getParamValue("label")),
REF_CODE);
}
+ try {
+ // test parameter
+ includedFilename(cur.buffer(), p);
+ } catch (ExceptionMessage const & message) {
+ Alert::error(message.title_, message.details_);
+ // do not set parameter if an error happens
+ break;
+ }
set(p, cur.buffer());
cur.buffer().updateBibfilesCache();
} else
}
-namespace {
-
-FileName const masterFileName(Buffer const & buffer)
-{
- return buffer.masterBuffer()->fileName();
-}
-
-
-string const parentFilename(Buffer const & buffer)
-{
- return buffer.absFileName();
-}
-
-
-FileName const includedFilename(Buffer const & buffer,
- InsetCommandParams const & params)
-{
- return makeAbsPath(to_utf8(params["filename"]),
- onlyPath(parentFilename(buffer)));
-}
-
-
-void add_preview(RenderMonitoredPreview &, InsetInclude const &, Buffer const &);
-
-} // namespace anon
-
-
void InsetInclude::set(InsetCommandParams const & p, Buffer const & buffer)
{
setParams(p);
else
temp += from_utf8(onlyFilename(to_utf8(params()["filename"])));
+ if (params()["embed"] == _("true"))
+ temp += _(" (embedded)");
return temp;
}
-namespace {
-
-/// return the child buffer if the file is a LyX doc and is loaded
+ /// return the child buffer if the file is a LyX doc and is loaded
Buffer * getChildBuffer(Buffer const & buffer, InsetCommandParams const & params)
{
if (isVerbatim(params) || isListings(params))
return childBuffer;
}
-} // namespace anon
-
-
/// return true if the file is or got loaded.
Buffer * loadIfNeeded(Buffer const & parent, InsetCommandParams const & params)
{
if (incfile.empty())
return 0;
- FileName const included_file = includedFilename(buffer, params());
+ FileName const included_file = includedFilename(buffer, params()).availableFile();
//Check we're not trying to include ourselves.
//FIXME RECURSIVE INCLUDE
Buffer const & buffer = features.buffer();
- string const included_file = includedFilename(buffer, params()).absFilename();
+ string const included_file = includedFilename(buffer, params()).availableFile().absFilename();
if (isLyXFilename(included_file))
writefile = changeExtension(included_file, ".sgml");
}
-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;
}
void InsetInclude::registerEmbeddedFiles(Buffer const & buffer,
- EmbeddedFiles & files) const
+ EmbeddedFileList & files) const
{
- // include and input are temprarily not considered.
- if (isVerbatim(params()) || isListings(params()))
- files.registerFile(includedFilename(buffer, params()).absFilename(),
- false, this);
+ files.registerFile(includedFilename(buffer, params()), this, buffer);
}
+
+void InsetInclude::updateEmbeddedFile(Buffer const & buf,
+ EmbeddedFile const & file)
+{
+ InsetCommandParams p = params();
+ p["filename"] = from_utf8(file.outputFilename());
+ p["embedded"] = file.embedded() ? _("true") : _("false");
+ set(p, buf);
+}
+
+
} // namespace lyx