summaryrefslogtreecommitdiffstats
path: root/src/extension/execution-env.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/execution-env.cpp')
-rw-r--r--src/extension/execution-env.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/extension/execution-env.cpp b/src/extension/execution-env.cpp
index 666270d5f..caef5033a 100644
--- a/src/extension/execution-env.cpp
+++ b/src/extension/execution-env.cpp
@@ -28,7 +28,7 @@ namespace Inkscape {
namespace Extension {
-ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk::Widget * controls, Gtk::Dialog * prefDialog) :
+ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk::Widget * controls, sigc::signal<void> * changeSignal, Gtk::Dialog * prefDialog) :
_visibleDialog(NULL),
_effect(effect),
_prefsVisible(false),
@@ -38,6 +38,7 @@ ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk
_prefsChanged(false),
_livePreview(true),
_selfdelete(false),
+ _changeSignal(changeSignal),
_doc(doc) {
SPDesktop *desktop = (SPDesktop *)_doc;
@@ -67,15 +68,23 @@ ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk
_visibleDialog = prefDialog;
_prefsVisible = true;
}
+
+ if (_changeSignal != NULL) {
+ _changesig = _changeSignal->connect(sigc::mem_fun(this, &ExecutionEnv::preferencesChange));
+ }
return;
}
ExecutionEnv::~ExecutionEnv (void) {
_dialogsig.disconnect();
+ _changesig.disconnect();
if (_visibleDialog != NULL && !_shutdown) {
delete _visibleDialog;
}
+ if (_changeSignal != NULL && !_shutdown) {
+ delete _changeSignal;
+ }
return;
}
@@ -96,11 +105,7 @@ ExecutionEnv::preferencesChange (void) {
void
ExecutionEnv::createPrefsDialog (Gtk::Widget * controls) {
- if (_visibleDialog != NULL) {
- delete _visibleDialog;
- }
-
- _visibleDialog = new PrefDialog(_effect->get_name(), _effect->get_help(), controls, this, _effect);
+ _visibleDialog = new PrefDialog(_effect->get_name(), _effect->get_help(), controls, this, _effect, _changeSignal);
_visibleDialog->signal_response().connect(sigc::mem_fun(this, &ExecutionEnv::preferencesResponse));
_visibleDialog->show();
_dialogsig = _visibleDialog->signal_response().connect(sigc::mem_fun(this, &ExecutionEnv::preferencesResponse));
@@ -114,6 +119,9 @@ ExecutionEnv::createWorkingDialog (void) {
if (_visibleDialog != NULL) {
delete _visibleDialog;
}
+ if (_changeSignal != NULL) {
+ delete _changeSignal;
+ }
gchar * dlgmessage = g_strdup_printf(_("'%s' working, please wait..."), _effect->get_name());
_visibleDialog = new Gtk::MessageDialog(dlgmessage,