index 55cf42b2f13ee6ff963d813587707fd966f4315d..1fef1a9db9f0f8032099dd84a45504417cf13636 100644 (file)
--- a/src/extension/effect.cpp
+++ b/src/extension/effect.cpp
if (!strcmp(this->get_id(), "org.inkscape.filter.dropshadow"))
return;
+ bool hidden = false;
+
+ no_doc = false;
+
if (repr != NULL) {
- Inkscape::XML::Node * child_repr;
- for (child_repr = sp_repr_children(repr); child_repr != NULL; child_repr = child_repr->next()) {
- if (!strcmp(child_repr->name(), "effect")) {
- for (child_repr = sp_repr_children(child_repr); child_repr != NULL; child_repr = child_repr->next()) {
- if (!strcmp(child_repr->name(), "effects-menu")) {
+ for (Inkscape::XML::Node *child = sp_repr_children(repr); child != NULL; child = child->next()) {
+ if (!strcmp(child->name(), "effect")) {
+ if (child->attribute("needs-document") && !strcmp(child->attribute("needs-document"), "no")) {
+ no_doc = true;
+ }
+ for (Inkscape::XML::Node *effect_child = sp_repr_children(child); effect_child != NULL; effect_child = effect_child->next()) {
+ if (!strcmp(effect_child->name(), "effects-menu")) {
// printf("Found local effects menu in %s\n", this->get_name());
- local_effects_menu = sp_repr_children(child_repr);
+ local_effects_menu = sp_repr_children(effect_child);
+ if (effect_child->attribute("hidden") && !strcmp(effect_child->attribute("hidden"), "yes")) {
+ hidden = true;
+ }
}
- if (!strcmp(child_repr->name(), "menu-name")) {
+ if (!strcmp(effect_child->name(), "menu-name") ||
+ !strcmp(effect_child->name(), "_menu-name")) {
// printf("Found local effects menu in %s\n", this->get_name());
- _verb.set_name(sp_repr_children(child_repr)->content());
+ _verb.set_name(sp_repr_children(effect_child)->content());
}
- if (!strcmp(child_repr->name(), "menu-tip")) {
+ if (!strcmp(effect_child->name(), "menu-tip") ||
+ !strcmp(effect_child->name(), "_menu-tip")) {
// printf("Found local effects menu in %s\n", this->get_name());
- _verb.set_tip(sp_repr_children(child_repr)->content());
+ _verb.set_tip(sp_repr_children(effect_child)->content());
}
} // children of "effect"
break; // there can only be one effect
find_effects_list(inkscape_get_menus(INKSCAPE));
if (_effects_list != NULL) {
- _menu_node = sp_repr_new("verb");
+ Inkscape::XML::Document *xml_doc;
+ xml_doc = _effects_list->document();
+ _menu_node = xml_doc->createElement("verb");
_menu_node->setAttribute("verb-id", this->get_id(), false);
- merge_menu(_effects_list->parent(), _effects_list, local_effects_menu, _menu_node);
+ if (!hidden)
+ merge_menu(_effects_list->parent(), _effects_list, local_effects_menu, _menu_node);
}
return;
gchar const * menuname = patern->attribute("name");
if (menuname == NULL) menuname = patern->attribute("_name");
if (menuname == NULL) return;
-
- tomerge = sp_repr_new("submenu");
+
+ Inkscape::XML::Document *xml_doc;
+ xml_doc = base->document();
+ tomerge = xml_doc->createElement("submenu");
tomerge->setAttribute("name", menuname, false);
mergename = _(menuname);
set_last_effect(this);
imp->effect(this, doc);
- sp_document_done(doc->doc());
+ sp_document_done(doc->doc(), SP_VERB_NONE, _(this->get_name()));
return;
}
return false;
}
+Gtk::VBox *
+Effect::get_info_widget(void)
+{
+ return Extension::get_info_widget();
+}
+
/** \brief Create an action for a \c EffectVerb
\param view Which view the action should be created for
\return The built action.
* is called.
*/
SPActionEventVector Effect::EffectVerb::vector =
- {{NULL},Effect::EffectVerb::perform, NULL, NULL, NULL};
+ {{NULL}, Effect::EffectVerb::perform, NULL, NULL, NULL, NULL};
} } /* namespace Inkscape, Extension */