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.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/src/extension/implementation/script.cpp b/src/extension/implementation/script.cpp
index 2f3e2cd65..0a0282284 100644
--- a/src/extension/implementation/script.cpp
+++ b/src/extension/implementation/script.cpp
@@ -149,7 +149,8 @@ std::string Script::resolveInterpreterExecutable(const Glib::ustring &interpName
of memory in the unloaded state.
*/
Script::Script() :
- Implementation()
+ Implementation(),
+ _canceled(false)
{
}
@@ -177,8 +178,7 @@ Script::~Script()
string. This means that the caller of this function can always
free what they are given (and should do it too!).
*/
-std::string
-Script::solve_reldir(Inkscape::XML::Node *reprin) {
+std::string Script::solve_reldir(Inkscape::XML::Node *reprin) {
gchar const *s = reprin->attribute("reldir");
@@ -361,8 +361,7 @@ void Script::unload(Inkscape::Extension::Extension */*module*/)
\param module The Extension in question
*/
-bool
-Script::check(Inkscape::Extension::Extension *module)
+bool Script::check(Inkscape::Extension::Extension *module)
{
int script_count = 0;
Inkscape::XML::Node *child_repr = sp_repr_children(module->get_repr());
@@ -729,8 +728,26 @@ void Script::effect(Inkscape::Extension::Effect *module,
doc->doc()->emitReconstructionStart();
copy_doc(doc->doc()->rroot, mydoc->rroot);
doc->doc()->emitReconstructionFinish();
- mydoc->release();
+ SPObject *layer = NULL;
+ SPObject *obj = mydoc->getObjectById("base");
+
+ // Getting the named view from the document generated by the extension
+ SPNamedView *nv = (SPNamedView *) obj;
+
+ //Check if it has a default layer set up
+ if ( nv != NULL and nv->default_layer_id != 0 ) {
+ SPDocument *document = desktop->doc();
+ //If so, get that layer
+ layer = document->getObjectById(g_quark_to_string(nv->default_layer_id));
+ }
+
sp_namedview_update_layers_from_document(desktop);
+ //If that layer exists,
+ if (layer) {
+ //set the current layer
+ desktop->setCurrentLayer(layer);
+ }
+ mydoc->release();
}
return;
@@ -803,7 +820,7 @@ void Script::copy_doc (Inkscape::XML::Node * oldroot, Inkscape::XML::Node * newr
}
// Delete the attributes of the old root nodes.
- for (std::vector<gchar const *>::const_iterator it = attribs.begin(); it != attribs.end(); it++) {
+ for (std::vector<gchar const *>::const_iterator it = attribs.begin(); it != attribs.end(); ++it) {
oldroot->setAttribute(*it, NULL);
}
@@ -954,7 +971,7 @@ int Script::execute (const std::list<std::string> &in_command,
NULL, // STDIN
&stdout_pipe, // STDOUT
&stderr_pipe); // STDERR
- } catch (Glib::Error e) {
+ } catch (Glib::Error &e) {
printf("Can't Spawn!!! spawn returns: %s\n", e.what().data());
return 0;
}