]> git.lyx.org Git - features.git/commitdiff
Embedding: prepare params()[embed] in GuiInclude rather than InsetInclude
authorBo Peng <bpeng@lyx.org>
Thu, 13 Mar 2008 14:16:47 +0000 (14:16 +0000)
committerBo Peng <bpeng@lyx.org>
Thu, 13 Mar 2008 14:16:47 +0000 (14:16 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23708 a592a061-630c-0410-9148-cb99ea01b6c8

src/EmbeddedFiles.cpp
src/frontends/qt4/GuiInclude.cpp
src/insets/InsetInclude.cpp

index b9f3c2a111004c1c2193eed24d3431a97c389ce8..e3bbeb90c4d1a5753f9dc48c3c392431c901b222 100644 (file)
@@ -131,7 +131,9 @@ void EmbeddedFile::enable(bool flag, Buffer const * buf, bool updateFile)
                if (embedded() && updateFile)
                        updateFromExternalFile();
        } else {
-               if (embedded() && updateFile)
+               // when a new embeddeed file is created, it is not enabled, and 
+               // there is no need to extract.
+               if (enabled() && embedded() && updateFile)
                        extract();
                temp_path_ = "";
        }
index b728efcafe2a708d5b8d2a4c8345d839883f2380..eedc1536b00a30b7d410b403249d73f6f15ccd29 100644 (file)
@@ -15,6 +15,7 @@
 #include "GuiInclude.h"
 
 #include "Buffer.h"
+#include "EmbeddedFiles.h"
 #include "Format.h"
 #include "FuncRequest.h"
 #include "support/gettext.h"
 #include "qt_helpers.h"
 #include "LyXRC.h"
 
+#include "frontends/alert.h"
+
 #include "support/os.h"
 #include "support/lstrings.h"
+#include "support/ExceptionMessage.h"
 #include "support/FileFilterList.h"
 #include "support/filetools.h"
 
@@ -240,7 +244,19 @@ void GuiInclude::updateContents()
 void GuiInclude::applyView()
 {
        params_["filename"] = from_utf8(internal_path(fromqstr(filenameED->text())));
-       params_["embed"] = embedCB->checkState() == Qt::Checked ? _("true") : _("false");
+       params_["embed"].clear();
+       try {
+               Buffer & buf = buffer();
+               EmbeddedFile file(to_utf8(params_["filename"]), buf.filePath());
+               file.setEmbed(embedCB->checkState() == Qt::Checked);
+               // move file around if needed, an exception may be raised.
+               file.enable(buf.embedded(), &buf, true);
+               // if things are OK..., set params_["embed"]
+               params_["embed"] = file.embedded() ? from_utf8(file.inzipName()) : docstring();
+       } catch (ExceptionMessage const & message) {
+               Alert::error(message.title_, message.details_);
+               // params_["embed"] will be empty if a file is failed to embed
+       }
        params_.preview(previewCB->isChecked());
 
        int const item = typeCO->currentIndex();
index 140fe76cc2efb1aef9e9655244bd853ac52167f5..f50241795e12dc28adb24e761cabc82520eee6ad 100644 (file)
@@ -47,7 +47,6 @@
 
 #include "support/debug.h"
 #include "support/docstream.h"
-#include "support/ExceptionMessage.h"
 #include "support/FileNameList.h"
 #include "support/filetools.h"
 #include "support/gettext.h"
@@ -267,24 +266,6 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd)
                                        label_->initView();
                                }
                        }
-                       try {
-                               // the embed parameter passed back from the dialog
-                               // is "true" or "false", we need to change it.
-                               EmbeddedFile file = EmbeddedFile(to_utf8(p["filename"]),
-                                       onlyPath(parentFilename(buf)));
-                               file.setEmbed(p["embed"] == _("true"));
-                               // move file around if needed, an exception may be raised.
-                               file.enable(buf.embedded(), &buf, true);
-                               // if things are OK..., set p["embed"]
-                               if (file.embedded())
-                                       p["embed"] = from_utf8(file.inzipName());
-                               else
-                                       p["embed"].clear();
-                       } catch (ExceptionMessage const & message) {
-                               Alert::error(message.title_, message.details_);
-                               // do not set parameter if an error happens
-                               break;
-                       }
                        setParams(p);
                        buffer().updateBibfilesCache();
                } else