summaryrefslogtreecommitdiffstats
path: root/src/extension/implementation/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/implementation/script.cpp')
-rw-r--r--src/extension/implementation/script.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/extension/implementation/script.cpp b/src/extension/implementation/script.cpp
index eabf147f6..5f1bef8d1 100644
--- a/src/extension/implementation/script.cpp
+++ b/src/extension/implementation/script.cpp
@@ -63,7 +63,7 @@ namespace Extension {
namespace Implementation {
/** \brief Make GTK+ events continue to come through a little bit
-
+
This just keeps coming the events through so that we'll make the GUI
update and look pretty.
*/
@@ -477,7 +477,7 @@ ScriptDocCache::ScriptDocCache (Inkscape::UI::View::View * view) :
Inkscape::Extension::save(
Inkscape::Extension::db.get(SP_MODULE_KEY_OUTPUT_SVG_INKSCAPE),
- view->doc(), _filename.c_str(), false, false, false);
+ view->doc(), _filename.c_str(), false, false, false, Inkscape::Extension::FILE_SAVE_METHOD_TEMPORARY);
return;
}
@@ -604,6 +604,7 @@ Script::open(Inkscape::Extension::Input *module,
\param module Extention to be used
\param doc Document to be saved
\param filename The name to save the final file as
+ \return false in case of any failure writing the file, otherwise true
Well, at some point people need to save - it is really what makes
the entire application useful. And, it is possible that someone
@@ -634,17 +635,19 @@ Script::save(Inkscape::Extension::Output *module,
tempfd_in = Inkscape::IO::file_open_tmp(tempfilename_in, "ink_ext_XXXXXX.svg");
} catch (...) {
/// \todo Popup dialog here
- return;
+ throw Inkscape::Extension::Output::save_failed();
}
if (helper_extension.size() == 0) {
Inkscape::Extension::save(
Inkscape::Extension::db.get(SP_MODULE_KEY_OUTPUT_SVG_INKSCAPE),
- doc, tempfilename_in.c_str(), false, false, false);
+ doc, tempfilename_in.c_str(), false, false, false,
+ Inkscape::Extension::FILE_SAVE_METHOD_TEMPORARY);
} else {
Inkscape::Extension::save(
Inkscape::Extension::db.get(helper_extension.c_str()),
- doc, tempfilename_in.c_str(), false, false, false);
+ doc, tempfilename_in.c_str(), false, false, false,
+ Inkscape::Extension::FILE_SAVE_METHOD_TEMPORARY);
}
@@ -652,13 +655,17 @@ Script::save(Inkscape::Extension::Output *module,
execute(command, params, tempfilename_in, fileout);
std::string lfilename = Glib::filename_from_utf8(filenameArg);
- fileout.toFile(lfilename);
+ bool success = fileout.toFile(lfilename);
// make sure we don't leak file descriptors from g_file_open_tmp
close(tempfd_in);
// FIXME: convert to utf8 (from "filename encoding") and unlink_utf8name
unlink(tempfilename_in.c_str());
+ if(success == false) {
+ throw Inkscape::Extension::Output::save_failed();
+ }
+
return;
}
@@ -709,8 +716,6 @@ Script::effect(Inkscape::Extension::Effect *module,
SPDesktop *desktop = (SPDesktop *)doc;
sp_namedview_document_from_window(desktop);
- gchar * orig_output_extension = g_strdup(sp_document_repr_root(desktop->doc())->attribute("inkscape:output_extension"));
-
std::list<std::string> params;
module->paramListString(params);
@@ -774,10 +779,7 @@ Script::effect(Inkscape::Extension::Effect *module,
doc->doc()->emitReconstructionFinish();
mydoc->release();
sp_namedview_update_layers_from_document(desktop);
-
- sp_document_repr_root(desktop->doc())->setAttribute("inkscape:output_extension", orig_output_extension);
}
- g_free(orig_output_extension);
return;
}
@@ -840,7 +842,7 @@ Script::copy_doc (Inkscape::XML::Node * oldroot, Inkscape::XML::Node * newroot)
{
using Inkscape::Util::List;
- using Inkscape::XML::AttributeRecord;
+ using Inkscape::XML::AttributeRecord;
std::vector<gchar const *> attribs;
// Make a list of all attributes of the old root node.
@@ -1007,7 +1009,7 @@ Script::execute (const std::list<std::string> &in_command,
for (std::list<std::string>::const_iterator i = in_params.begin();
i != in_params.end(); i++) {
//g_message("Script parameter: %s",(*i)g.c_str());
- argv.push_back(*i);
+ argv.push_back(*i);
}
if (!(filein.empty())) {