summaryrefslogtreecommitdiffstats
path: root/src/live_effects/effect.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2007-10-28 16:03:07 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2007-10-28 16:03:07 +0000
commit96b65f32d922a989131ae91798801ea54c4e8b10 (patch)
tree627327d9468b399e064111734831864c4730bc2a /src/live_effects/effect.cpp
parentadded perfectboundcover.inx to translatable extensions (diff)
downloadinkscape-96b65f32d922a989131ae91798801ea54c4e8b10.tar.gz
inkscape-96b65f32d922a989131ae91798801ea54c4e8b10.zip
LPE: implement 'edit next LPE parameter'. Accessible through key '7'.
(bzr r3968)
Diffstat (limited to 'src/live_effects/effect.cpp')
-rw-r--r--src/live_effects/effect.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp
index cfabc88b4..3802066ec 100644
--- a/src/live_effects/effect.cpp
+++ b/src/live_effects/effect.cpp
@@ -90,6 +90,7 @@ Effect::Effect(LivePathEffectObject *lpeobject)
vbox = NULL;
tooltips = NULL;
lpeobj = lpeobject;
+ oncanvasedit_it = param_map.begin();
}
Effect::~Effect()
@@ -261,6 +262,46 @@ Effect::getSPDoc()
return SP_OBJECT_DOCUMENT(lpeobj);
}
+Parameter *
+Effect::getNextOncanvasEditableParam()
+{
+ oncanvasedit_it++;
+ if (oncanvasedit_it == param_map.end()) {
+ oncanvasedit_it = param_map.begin();
+ }
+ param_map_type::iterator old_it = oncanvasedit_it;
+
+ do {
+ Parameter * param = oncanvasedit_it->second;
+ if(param->oncanvas_editable) {
+ return param;
+ } else {
+ oncanvasedit_it++;
+ if (oncanvasedit_it == param_map.end()) { // loop round the map
+ oncanvasedit_it = param_map.begin();
+ }
+ }
+ } while (oncanvasedit_it != old_it); // iterate until complete loop through map has been made
+
+ return NULL;
+}
+
+void
+Effect::editNextParamOncanvas(SPItem * item, SPDesktop * desktop)
+{
+ if (!desktop) return;
+
+ Parameter * param = getNextOncanvasEditableParam();
+ if (param) {
+ param->param_editOncanvas(item, desktop);
+ gchar *message = g_strdup_printf(_("Editing parameter <b>%s</b>."), param->param_label.c_str());
+ desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, message);
+ g_free(message);
+ } else {
+ desktop->messageStack()->flash( Inkscape::WARNING_MESSAGE,
+ _("None of the applied path effect's parameters can be edited on-canvas.") );
+ }
+}
} /* namespace LivePathEffect */