]> git.lyx.org Git - features.git/commitdiff
Embedding: move file validation from InsetExternal to GuiExternal
authorBo Peng <bpeng@lyx.org>
Thu, 13 Mar 2008 17:27:20 +0000 (17:27 +0000)
committerBo Peng <bpeng@lyx.org>
Thu, 13 Mar 2008 17:27:20 +0000 (17:27 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23711 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/GuiExternal.cpp
src/insets/InsetExternal.cpp

index 8f6d54f2bdd7adb2f9f6f6ba4398dc753461221d..412f16275c005429456333a5bbaabf1f8ca7562b 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "GuiExternal.h"
 
+#include "Buffer.h"
 #include "FuncRequest.h"
 #include "support/gettext.h"
 #include "Length.h"
 #include "graphics/GraphicsCacheItem.h"
 #include "graphics/GraphicsImage.h"
 
+#include "frontends/alert.h"
+
 #include "support/convert.h"
+#include "support/ExceptionMessage.h"
 #include "support/FileFilterList.h"
 #include "support/filetools.h"
 #include "support/lstrings.h"
@@ -633,8 +637,21 @@ void GuiExternal::updateTemplate()
 void GuiExternal::applyView()
 {
        params_.filename.set(fromqstr(fileED->text()), fromqstr(bufferFilepath()));
-       params_.filename.setEmbed(embedCB->checkState() == Qt::Checked);
 
+       try {
+               Buffer & buf = buffer();
+               EmbeddedFile file(fromqstr(fileED->text()), 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..., embed params_.filename
+               params_.filename.setEmbed(file.embedded());
+       } catch (ExceptionMessage const & message) {
+               Alert::error(message.title_, message.details_);
+               // failed to embed
+               params_.filename.setEmbed(false);
+       }
+       
        params_.settemplate(getTemplate(externalCO->currentIndex()).lyxName);
 
        params_.draft = draftCB->isChecked();
index d9d210107ecd5afb5c575ec4ea9604cc97998274..c6f1142bc92119e291345833cc9f19cc0a7d4535 100644 (file)
 #include "MetricsInfo.h"
 #include "OutputParams.h"
 
-#include "frontends/alert.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"
@@ -63,8 +60,6 @@ string defaultTemplateName;
 
 namespace lyx {
 
-namespace Alert = frontend::Alert;
-
 namespace external {
 
 TempName::TempName()
@@ -444,15 +439,6 @@ void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_INSET_MODIFY: {
                InsetExternalParams p;
                InsetExternalMailer::string2params(to_utf8(cmd.argument()), buffer(), p);
-               if (!p.filename.empty()) {
-                       try {
-                               p.filename.enable(buffer().embedded(), &buffer(), true);
-                       } catch (ExceptionMessage const & message) {
-                               Alert::error(message.title_, message.details_);
-                               // do not set parameter if an error happens
-                               break;
-                       }
-               }
                setParams(p);
                break;
        }