X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetGraphics.cpp;h=70cfe9767d719a3d35a8a24788fe9cca231b2310;hb=3189e7b5dd438876016091463b8e66b134295fb5;hp=1203d27188d0403ead0365ea58b68ae39c4416e7;hpb=2caa98bee0f735a515f0cdbef6116fceed24a085;p=lyx.git diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp index 1203d27188..70cfe9767d 100644 --- a/src/insets/InsetGraphics.cpp +++ b/src/insets/InsetGraphics.cpp @@ -71,6 +71,7 @@ TODO #include "Mover.h" #include "OutputParams.h" #include "sgml.h" +#include "EmbeddedFiles.h" #include "frontends/alert.h" @@ -112,7 +113,6 @@ using support::unzippedFileName; using std::endl; using std::string; -using std::auto_ptr; using std::istringstream; using std::ostream; using std::ostringstream; @@ -165,9 +165,9 @@ InsetGraphics::InsetGraphics(InsetGraphics const & ig) } -auto_ptr InsetGraphics::doClone() const +Inset * InsetGraphics::clone() const { - return auto_ptr(new InsetGraphics(*this)); + return new InsetGraphics(*this); } @@ -181,7 +181,7 @@ void InsetGraphics::doDispatch(Cursor & cur, FuncRequest & cmd) { 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); @@ -231,6 +231,14 @@ bool InsetGraphics::getStatus(Cursor & cur, FuncRequest const & cmd, } +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()); @@ -262,7 +270,7 @@ Inset::EDITABLE InsetGraphics::editable() const void InsetGraphics::write(Buffer const & buf, ostream & os) const { os << "Graphics\n"; - params().Write(os, buf.filePath()); + params().Write(os, buf); } @@ -275,6 +283,16 @@ void InsetGraphics::read(Buffer const & buf, Lexer & lex) 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()); } @@ -1008,7 +1026,7 @@ InsetGraphicsMailer::params2string(InsetGraphicsParams const & params, { ostringstream data; data << name_ << ' '; - params.Write(data, buffer.filePath()); + params.Write(data, buffer); data << "\\end_inset\n"; return data.str(); }