From: gouldtj Date: Thu, 1 Mar 2007 07:14:41 +0000 (+0000) Subject: r14584@tres: ted | 2007-02-28 20:01:52 -0800 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=d8e3f581e7503f277c1421f88018cb2606cb6c77;p=inkscape.git r14584@tres: ted | 2007-02-28 20:01:52 -0800 Effects now register two different verbs. One is the same one they've always registered and one is the same ID with ".nopref" added to it. This one executes the effect without the prefrences dialog. Default values will be used. --- diff --git a/src/extension/effect.cpp b/src/extension/effect.cpp index 0f9434c17..10ac493b5 100644 --- a/src/extension/effect.cpp +++ b/src/extension/effect.cpp @@ -24,7 +24,12 @@ Effect * Effect::_last_effect = NULL; Inkscape::XML::Node * Effect::_effects_list = NULL; Effect::Effect (Inkscape::XML::Node * in_repr, Implementation::Implementation * in_imp) - : Extension(in_repr, in_imp), _verb(get_id(), get_name(), NULL, NULL, this), _menu_node(NULL) + : Extension(in_repr, in_imp), + _id_noprefs(Glib::ustring(get_id()) + ".noprefs"), + _name_noprefs(Glib::ustring(get_name()) + _(" (No preferences)")), + _verb(get_id(), get_name(), NULL, NULL, this, true), + _verb_nopref(_id_noprefs.c_str(), _name_noprefs.c_str(), NULL, NULL, this, false), + _menu_node(NULL) { Inkscape::XML::Node * local_effects_menu = NULL; @@ -293,7 +298,7 @@ Effect::get_info_widget(void) SPAction * Effect::EffectVerb::make_action (Inkscape::UI::View::View * view) { - return make_action_helper(view, &vector, static_cast(_effect)); + return make_action_helper(view, &vector, static_cast(this)); } /** \brief Decode the verb code and take appropriate action */ @@ -302,13 +307,18 @@ Effect::EffectVerb::perform (SPAction *action, void * data, void *pdata) { Inkscape::UI::View::View * current_view = sp_action_get_view(action); // SPDocument * current_document = current_view->doc; - Effect * effect = reinterpret_cast(data); + Effect::EffectVerb * ev = reinterpret_cast(data); + Effect * effect = ev->_effect; if (effect == NULL) return; if (current_view == NULL) return; // std::cout << "Executing: " << effect->get_name() << std::endl; - if (effect->prefs(current_view)) + bool execute = true; + + if (ev->_showPrefs) + execute = effect->prefs(current_view); + if (execute) effect->effect(current_view); return; diff --git a/src/extension/effect.h b/src/extension/effect.h index c0231eac4..b6fc80aa5 100644 --- a/src/extension/effect.h +++ b/src/extension/effect.h @@ -56,6 +56,8 @@ class Effect : public Extension { /** \brief The effect that this verb represents. */ Effect * _effect; + /** \brief Whether or not to show preferences on display */ + bool _showPrefs; protected: virtual SPAction * make_action (Inkscape::UI::View::View * view); public: @@ -64,15 +66,23 @@ class Effect : public Extension { gchar const * name, gchar const * tip, gchar const * image, - Effect * effect) : - Verb(id, _(name), _(tip), image), _effect(effect) { + Effect * effect, + bool showPrefs) : + Verb(id, _(name), _(tip), image), _effect(effect), _showPrefs(showPrefs) { /* No clue why, but this is required */ this->set_default_sensitive(true); } }; + /** \brief ID used for the verb without preferences */ + Glib::ustring _id_noprefs; + /** \brief Name used for the verb without preferences */ + Glib::ustring _name_noprefs; + /** \brief The verb representing this effect. */ EffectVerb _verb; + /** \brief The verb representing this effect. Without preferences. */ + EffectVerb _verb_nopref; /** \brief Menu node created for this effect */ Inkscape::XML::Node * _menu_node; public: