From 96b65f32d922a989131ae91798801ea54c4e8b10 Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Sun, 28 Oct 2007 16:03:07 +0000 Subject: LPE: implement 'edit next LPE parameter'. Accessible through key '7'. (bzr r3968) --- src/live_effects/effect.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/live_effects/effect.cpp') 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 %s."), 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 */ -- cgit v1.2.3