Code

r16395@tres: ted | 2007-08-27 19:41:32 -0700
authorgouldtj <gouldtj@users.sourceforge.net>
Sat, 1 Sep 2007 04:33:12 +0000 (04:33 +0000)
committergouldtj <gouldtj@users.sourceforge.net>
Sat, 1 Sep 2007 04:33:12 +0000 (04:33 +0000)
 This is a good stopping point.  I think things are working...  more
 testing.

src/extension/effect.cpp
src/extension/execution-env.cpp
src/extension/execution-env.h

index aa702a1aeba7f0e322e5c16208d466dd35ea8d5f..fc8715248edc09f14cac2a4a8fbdbda2d0da75b2 100644 (file)
@@ -238,6 +238,7 @@ Effect::prefs (Inkscape::UI::View::View * doc)
 void
 Effect::effect (Inkscape::UI::View::View * doc)
 {
+    printf("Execute effect\n");
     if (!loaded())
         set_state(Extension::STATE_LOADED);
     if (!loaded()) return;
index be3abcd410a362635c2c39bac33682a6341a80a1..fcf60cdcbb3f6d8a61dff054ac3a675b3186fc4b 100644 (file)
@@ -71,7 +71,8 @@ ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk
 }
 
 ExecutionEnv::~ExecutionEnv (void) {
-    if (_visibleDialog != NULL) {
+    _dialogsig.disconnect();
+    if (_visibleDialog != NULL && !_shutdown) {
         delete _visibleDialog;
     }
     return;
@@ -101,6 +102,7 @@ ExecutionEnv::createPrefsDialog (Gtk::Widget * controls) {
     _visibleDialog = new PrefDialog(_effect->get_name(), _effect->get_help(), controls, this, _effect);
     _visibleDialog->signal_response().connect(sigc::mem_fun(this, &ExecutionEnv::preferencesResponse));
     _visibleDialog->show();
+    _dialogsig = _visibleDialog->signal_response().connect(sigc::mem_fun(this, &ExecutionEnv::preferencesResponse));
 
     _prefsVisible = true;
     return;
@@ -108,6 +110,7 @@ ExecutionEnv::createPrefsDialog (Gtk::Widget * controls) {
 
 void
 ExecutionEnv::createWorkingDialog (void) {
+    printf("Create working dialog\n");
     if (_visibleDialog != NULL) {
         delete _visibleDialog;
     }
@@ -118,7 +121,7 @@ ExecutionEnv::createWorkingDialog (void) {
                                Gtk::MESSAGE_INFO,
                                Gtk::BUTTONS_CANCEL,
                                true); // modal
-    _visibleDialog->signal_response().connect(sigc::mem_fun(this, &ExecutionEnv::workingCanceled));
+    _dialogsig = _visibleDialog->signal_response().connect(sigc::mem_fun(this, &ExecutionEnv::workingCanceled));
     g_free(dlgmessage);
     _visibleDialog->show();
 
@@ -222,6 +225,7 @@ ExecutionEnv::run (void) {
             reselect();
         }
     }
+    printf("Execution environment done running\n");
     return;
 }
 
@@ -247,6 +251,9 @@ ExecutionEnv::shutdown (void) {
     _visibleDialog = NULL;
 }
 
+    return;
+}
+
 } }  /* namespace Inkscape, Extension */
 
 
index e46aafc074496a47a3a00cb3dc0672d1600b345b..a3938be3d3c608742ae726cd932b715c14fa733b 100644 (file)
@@ -35,6 +35,7 @@ private:
     Glib::RefPtr<Glib::MainLoop> _mainloop;
     Inkscape::UI::View::View * _doc;
     std::list<Glib::ustring> _selected;
+    sigc::connection _dialogsig;
 
 public:
     Effect * _effect;