summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMaximilian Albert <maximilian.albert@gmail.com>2008-06-04 13:12:05 +0000
committercilix42 <cilix42@users.sourceforge.net>2008-06-04 13:12:05 +0000
commit86fc050f0b6eabd1ddf706661b968588f24b0367 (patch)
treeccc3ddd0bef90b12454826295e59b3e60e4a47d6 /src
parentC++ify knotholders (diff)
downloadinkscape-86fc050f0b6eabd1ddf706661b968588f24b0367.tar.gz
inkscape-86fc050f0b6eabd1ddf706661b968588f24b0367.zip
Factor out 'create and apply' code for LPEs so that it can be called from everywhere
(bzr r5798)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/effect.cpp28
-rw-r--r--src/live_effects/effect.h2
-rw-r--r--src/ui/dialog/livepatheffect-editor.cpp19
3 files changed, 32 insertions, 17 deletions
diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp
index 639ad93a4..765d0a59b 100644
--- a/src/live_effects/effect.cpp
+++ b/src/live_effects/effect.cpp
@@ -16,6 +16,8 @@
#include "desktop.h"
#include "inkscape.h"
#include "document.h"
+#include "document-private.h"
+#include "xml/document.h"
#include <glibmm/i18n.h>
#include "live_effects/lpeobject.h"
@@ -147,6 +149,32 @@ Effect::New(EffectType lpenr, LivePathEffectObject *lpeobj)
return neweffect;
}
+void
+Effect::createAndApply(const char* name, SPDocument *doc, SPItem *item)
+{
+ // Path effect definition
+ Inkscape::XML::Document *xml_doc = sp_document_repr_doc(doc);
+ Inkscape::XML::Node *repr = xml_doc->createElement("inkscape:path-effect");
+ repr->setAttribute("effect", name);
+
+ SP_OBJECT_REPR(SP_DOCUMENT_DEFS(doc))->addChild(repr, NULL); // adds to <defs> and assigns the 'id' attribute
+ const gchar * repr_id = repr->attribute("id");
+ Inkscape::GC::release(repr);
+
+ gchar *href = g_strdup_printf("#%s", repr_id);
+ sp_lpe_item_add_path_effect(SP_LPE_ITEM(item), href, true);
+ g_free(href);
+
+ sp_document_done(doc, SP_VERB_DIALOG_LIVE_PATH_EFFECT,
+ _("Create and apply path effect"));
+}
+
+void
+Effect::createAndApply(EffectType type, SPDocument *doc, SPItem *item)
+{
+ createAndApply(LPETypeConverter.get_key(type).c_str(), doc, item);
+}
+
Effect::Effect(LivePathEffectObject *lpeobject)
: oncanvasedit_it(0),
is_visible(_("Is visible?"), _("If unchecked, the effect remains applied to the object but is temporarily disabled on canvas"), "is_visible", &wr, this, true),
diff --git a/src/live_effects/effect.h b/src/live_effects/effect.h
index 6d72a5615..c04f248e3 100644
--- a/src/live_effects/effect.h
+++ b/src/live_effects/effect.h
@@ -80,6 +80,8 @@ extern const Util::EnumDataConverter<EffectType> LPETypeConverter;
class Effect {
public:
static Effect* New(EffectType lpenr, LivePathEffectObject *lpeobj);
+ static void createAndApply(const char* name, SPDocument *doc, SPItem *item);
+ static void createAndApply(EffectType type, SPDocument *doc, SPItem *item);
virtual ~Effect();
diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp
index c92d015f5..2dc4fda71 100644
--- a/src/ui/dialog/livepatheffect-editor.cpp
+++ b/src/ui/dialog/livepatheffect-editor.cpp
@@ -32,9 +32,8 @@
#include "inkscape.h"
#include "desktop-handles.h"
#include "desktop.h"
-#include "document-private.h"
+#include "document.h"
#include "xml/node.h"
-#include "xml/document.h"
#include <gtkmm/stock.h>
#include <gtkmm/toolbar.h>
@@ -320,21 +319,7 @@ LivePathEffectEditor::onApply()
item = sel->singleItem(); // get new item
}
- // Path effect definition
- Inkscape::XML::Document *xml_doc = sp_document_repr_doc(doc);
- Inkscape::XML::Node *repr = xml_doc->createElement("inkscape:path-effect");
- repr->setAttribute("effect", data->key.c_str() );
-
- SP_OBJECT_REPR(SP_DOCUMENT_DEFS(doc))->addChild(repr, NULL); // adds to <defs> and assigns the 'id' attribute
- const gchar * repr_id = repr->attribute("id");
- Inkscape::GC::release(repr);
-
- gchar *href = g_strdup_printf("#%s", repr_id);
- sp_lpe_item_add_path_effect(SP_LPE_ITEM(item), href, true);
- g_free(href);
-
- sp_document_done(doc, SP_VERB_DIALOG_LIVE_PATH_EFFECT,
- _("Create and apply path effect"));
+ LivePathEffect::Effect::createAndApply(data->key.c_str(), doc, item);
onSelectionChanged(sel);
}