#include "Mover.h"
#include "OutputParams.h"
#include "sgml.h"
+#include "EmbeddedFiles.h"
#include "frontends/alert.h"
#include "support/convert.h"
#include "support/filetools.h"
-#include "support/lyxalgo.h" // count
#include "support/lyxlib.h" // sum
#include "support/lstrings.h"
#include "support/os.h"
#include <boost/bind.hpp>
#include <boost/tuple/tuple.hpp>
+#include <algorithm>
#include <sstream>
using support::float_equal;
using support::getExtension;
using support::isFileReadable;
+using support::isValidLaTeXFilename;
using support::latex_path;
using support::onlyFilename;
using support::removeExtension;
using std::endl;
using std::string;
-using std::auto_ptr;
using std::istringstream;
using std::ostream;
using std::ostringstream;
}
-auto_ptr<Inset> InsetGraphics::doClone() const
+Inset * InsetGraphics::clone() const
{
- return auto_ptr<Inset>(new InsetGraphics(*this));
+ return new InsetGraphics(*this);
}
{
switch (cmd.action) {
case LFUN_GRAPHICS_EDIT: {
- Buffer const & buffer = *cur.bv().buffer();
+ Buffer const & buffer = cur.bv().buffer();
InsetGraphicsParams p;
InsetGraphicsMailer::string2params(to_utf8(cmd.argument()), buffer, p);
editGraphics(p, buffer);
}
+void InsetGraphics::registerEmbeddedFiles(Buffer const &,
+ EmbeddedFiles & files) const
+{
+ files.registerFile(params().filename.absFilename(),
+ false, this);
+}
+
+
void InsetGraphics::edit(Cursor & cur, bool)
{
InsetGraphicsMailer(*this).showDialog(&cur.bv());
void InsetGraphics::write(Buffer const & buf, ostream & os) const
{
os << "Graphics\n";
- params().Write(os, buf.filePath());
+ params().Write(os, buf);
}
else
LYXERR(Debug::GRAPHICS) << "Not a Graphics inset!" << endl;
+ // InsetGraphics is read, with filename in params_. We do not know if this file actually
+ // exists or is embedded so we need to get the 'availableFile' from buf.embeddedFiles()
+ if (buf.embeddedFiles().enabled()) {
+ EmbeddedFiles::EmbeddedFileList::const_iterator it =
+ buf.embeddedFiles().find(params_.filename.toFilesystemEncoding());
+ if (it != buf.embeddedFiles().end())
+ // using available file, embedded or external, depending on file availability and
+ // embedding status.
+ params_.filename = DocFileName(it->availableFile(&buf));
+ }
graphic_->update(params().as_grfxParams());
}
string output_file = support::os::external_path(runparams.nice ?
params().filename.outputFilename(m_buffer->filePath()) :
onlyFilename(temp_file.absFilename()));
+
+ if (runparams.nice && !isValidLaTeXFilename(output_file)) {
+ frontend::Alert::warning(_("Invalid filename"),
+ _("The following filename is likely to cause trouble "
+ "when running the exported file through LaTeX: ") +
+ from_utf8(output_file));
+ }
+
FileName source_file = runparams.nice ? FileName(params().filename) : temp_file;
string const tex_format = (runparams.flavor == OutputParams::LATEX) ?
"latex" : "pdflatex";
LYXERR(Debug::GRAPHICS) << "InsetGraphics::latex outputting:\n"
<< latex_str << endl;
// Return how many newlines we issued.
- return int(lyx::count(latex_str.begin(), latex_str.end(),'\n'));
+ return int(std::count(latex_str.begin(), latex_str.end(),'\n'));
}
namespace {
-int writeImageObject(char * format, odocstream & os, OutputParams const & runparams,
- docstring const graphic_label, docstring const attributes)
+int writeImageObject(char const * format,
+ odocstream & os,
+ OutputParams const & runparams,
+ docstring const & graphic_label,
+ docstring const & attributes)
{
if (runparams.flavor != OutputParams::XML) {
os << "<![ %output.print."
{
ostringstream data;
data << name_ << ' ';
- params.Write(data, buffer.filePath());
+ params.Write(data, buffer);
data << "\\end_inset\n";
return data.str();
}