]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetExternal.cpp
This should be the last of the commits refactoring the InsetLayout code.
[lyx.git] / src / insets / InsetExternal.cpp
index 38801381fb5902f04494d284b66af1efa7309330..102fb5398d0f38a320e900dc9048cecbce50b8a2 100644 (file)
 
 #include "Buffer.h"
 #include "Cursor.h"
-#include "support/debug.h"
 #include "DispatchResult.h"
 #include "Exporter.h"
 #include "FuncStatus.h"
 #include "FuncRequest.h"
-#include "support/gettext.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
+#include "LyX.h" // use_gui
 #include "LyXRC.h"
 #include "MetricsInfo.h"
 #include "OutputParams.h"
 
 #include "graphics/PreviewLoader.h"
 
+#include "support/debug.h"
 #include "support/ExceptionMessage.h"
 #include "support/filetools.h"
+#include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/lyxlib.h"
 #include "support/convert.h"
@@ -64,8 +65,6 @@ namespace lyx {
 
 namespace Alert = frontend::Alert;
 
-extern bool use_gui;
-
 namespace external {
 
 TempName::TempName()
@@ -189,7 +188,7 @@ void InsetExternalParams::write(Buffer const & buffer, ostream & os) const
 
        if (!filename.empty()) {
                os << "\tfilename " << filename.outputFilename(buffer.filePath()) << '\n';
-               os << "\tembed " << (filename.embedded() ? "true" : "false") << '\n';
+               os << "\tembed " << (filename.embedded() ? filename.inzipName() : "\"\"") << '\n';
        }
        if (display != defaultDisplayType)
                os << "\tdisplay "
@@ -269,9 +268,9 @@ bool InsetExternalParams::read(Buffer const & buffer, Lexer & lex)
                { "clip",            EX_CLIP },
                { "display",         EX_DISPLAY},
                { "draft",           EX_DRAFT},
+               { "embed",           EX_EMBED},
                { "extra",           EX_EXTRA },
                { "filename",        EX_FILENAME},
-               { "embed",           EX_EMBED},
                { "height",          EX_HEIGHT },
                { "keepAspectRatio", EX_KEEPASPECTRATIO },
                { "lyxscale",        EX_LYXSCALE},
@@ -303,7 +302,9 @@ bool InsetExternalParams::read(Buffer const & buffer, Lexer & lex)
                
                case EX_EMBED: {
                        lex.next();
-                       filename.setEmbed(lex.getBool());
+                       string const name = lex.getString();
+                       filename.setInzipName(name);
+                       filename.setEmbed(!name.empty());
                        break;
                }
 
@@ -453,7 +454,7 @@ void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd)
                InsetExternalMailer::string2params(to_utf8(cmd.argument()), buffer, p);
                if (!p.filename.empty()) {
                        try {
-                               p.filename.enable(buffer.embeddedFiles().enabled(), &buffer);
+                               p.filename.enable(buffer.embedded(), &buffer);
                        } catch (ExceptionMessage const & message) {
                                Alert::error(message.title_, message.details_);
                                // do not set parameter if an error happens
@@ -496,10 +497,10 @@ bool InsetExternal::getStatus(Cursor & cur, FuncRequest const & cmd,
 }
 
 
-void InsetExternal::registerEmbeddedFiles(Buffer const &,
-       EmbeddedFiles & files) const
+void InsetExternal::registerEmbeddedFiles(Buffer const & buffer,
+       EmbeddedFileList & files) const
 {
-       files.registerFile(params_.filename, this);
+       files.registerFile(params_.filename, this, buffer);
 }
 
 
@@ -508,13 +509,13 @@ void InsetExternal::updateEmbeddedFile(Buffer const & buf,
 {
        // when embedding is enabled, change of embedding status leads to actions
        EmbeddedFile temp = file;
-       temp.enable(buf.embeddedFiles().enabled(), &buf);
+       temp.enable(buf.embedded(), &buf);
        // this will not be set if an exception is thorwn in enable()
        params_.filename = temp;
 }
 
 
-void InsetExternal::edit(Cursor & cur, bool)
+void InsetExternal::edit(Cursor & cur, bool, EntryDirection)
 {
        InsetExternalMailer(*this).showDialog(&cur.bv());
 }
@@ -707,7 +708,7 @@ void InsetExternal::read(Buffer const & buffer, Lexer & lex)
        InsetExternalParams params;
        if (params.read(buffer, lex)) {
                // exception handling is not needed as long as embedded files are in place.
-               params.filename.enable(buffer.embeddedFiles().enabled(), & buffer);
+               params.filename.enable(buffer.embedded(), & buffer);
                setParams(params, buffer);
        }
 }