Code

r17821@shi: ted | 2008-01-31 12:59:57 -0800
authorgouldtj <gouldtj@users.sourceforge.net>
Mon, 4 Feb 2008 17:56:01 +0000 (17:56 +0000)
committergouldtj <gouldtj@users.sourceforge.net>
Mon, 4 Feb 2008 17:56:01 +0000 (17:56 +0000)
 Okay, I'm not 100% sure what all these changes are but I want to start working on this again from a checked in point.  I'll fix the bugs from here.

src/extension/execution-env.cpp
src/extension/prefdialog.cpp

index ea04a8f09ebc50c53388cab386a54c66740c761d..a978ec7cb4ba7a3873065af3c6c1e6ed6ce6dba2 100644 (file)
@@ -89,7 +89,7 @@ ExecutionEnv::~ExecutionEnv (void) {
     if (_prefsVisible) {
         _changesig.disconnect();
     }
-    if (_visibleDialog != NULL && !_shutdown) {
+    if (_visibleDialog != NULL && !_shutdown && !_prefsVisible) {
         delete _visibleDialog;
     }
     if (_changeSignal != NULL && !_shutdown) {
@@ -101,7 +101,7 @@ ExecutionEnv::~ExecutionEnv (void) {
 
 void
 ExecutionEnv::genDocCache (void) {
-       if (_docCache == NULL) {
+if (_docCache == NULL) {
                // printf("Gen Doc Cache\n");
                _docCache = _effect->get_imp()->newDocCache(_effect, _doc);
        }
@@ -178,6 +178,7 @@ ExecutionEnv::createWorkingDialog (void) {
 
 void
 ExecutionEnv::workingCanceled( const int /*resp*/ ) {
+       printf("Working Canceled\n");
     processingCancel();
     documentCancel();
     _finished = true;
index d9596986de0765bbc18a7c0c6746661698514c23..5a3204967a239ffd45d1bbd400df00fca2c2e3f8 100644 (file)
@@ -47,9 +47,7 @@ PrefDialog::PrefDialog (Glib::ustring name, gchar const * help, Gtk::Widget * co
     _button_ok(NULL),
     _button_cancel(NULL),
     _button_preview(NULL),
-    _button_pinned(NULL),
     _param_preview(NULL),
-    _param_pinned(NULL),
     _signal_param_change(changeSignal),
     _effect(effect)
 {
@@ -63,7 +61,7 @@ PrefDialog::PrefDialog (Glib::ustring name, gchar const * help, Gtk::Widget * co
     if (_help == NULL)
         help_button->set_sensitive(false);
     */
-    _button_cancel = add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
+    _button_cancel = add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CANCEL);
     _button_cancel->set_use_stock(true);
 
     _button_ok = add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
@@ -78,10 +76,6 @@ PrefDialog::PrefDialog (Glib::ustring name, gchar const * help, Gtk::Widget * co
             XML::Document * doc = sp_repr_read_mem(live_param_xml, strlen(live_param_xml), NULL);
             _param_preview = Parameter::make(doc->root(), _exEnv->_effect);
         }
-        if (_param_pinned == NULL) {
-            XML::Document * doc = sp_repr_read_mem(pinned_param_xml, strlen(pinned_param_xml), NULL);
-            _param_pinned = Parameter::make(doc->root(), _exEnv->_effect);
-        }
 
         Gtk::HSeparator * sep = Gtk::manage(new Gtk::HSeparator());
         sep->show();
@@ -90,17 +84,12 @@ PrefDialog::PrefDialog (Glib::ustring name, gchar const * help, Gtk::Widget * co
         hbox = Gtk::manage(new Gtk::HBox());
         _button_preview = _param_preview->get_widget(NULL, NULL, &_signal_preview);
         _button_preview->show();
-        _button_pinned  = _param_pinned->get_widget(NULL, NULL, &_signal_pinned);
-        _button_pinned->show();
         hbox->pack_start(*_button_preview, true, true,6);
-        hbox->pack_start(*_button_pinned, true, true,6);
         hbox->show();
         this->get_vbox()->pack_start(*hbox, true, true, 6);
 
         preview_toggle();
-        pinned_toggle();
         _signal_preview.connect(sigc::mem_fun(this, &PrefDialog::preview_toggle));
-        _signal_pinned.connect(sigc::mem_fun(this, &PrefDialog::pinned_toggle));
 
     }
 
@@ -122,9 +111,6 @@ PrefDialog::~PrefDialog ( )
     if (_param_preview != NULL) {
         delete _param_preview;
     }
-    if (_param_pinned != NULL) {
-        delete _param_pinned;
-    }
 
     return;
 }
@@ -161,73 +147,44 @@ PrefDialog::setPreviewState (Glib::ustring state) {
 
 void
 PrefDialog::preview_toggle (void) {
-    if(_param_preview->get_bool(NULL, NULL) && !_param_pinned->get_bool(NULL, NULL)) {
-        _exEnv->livePreview(true);
-    } else {
-        _exEnv->livePreview(false);
-    }
-}
-
-void
-PrefDialog::pinned_toggle (void) {
-    if (_param_pinned->get_bool(NULL, NULL)) {
-        _button_preview->set_sensitive(false);
-        preview_toggle();
-        set_modal(false);
-
-        _button_ok->set_label(Gtk::Stock::EXECUTE.id);
-        _button_cancel->set_label(Gtk::Stock::CLOSE.id);
-
-        if (_exEnv != NULL) {
-            _exEnv->shutdown(_createdExEnv);
-            _exEnv = NULL;
-        }
-    } else {
-        _button_preview->set_sensitive(true);
+    if(_param_preview->get_bool(NULL, NULL)) {
         set_modal(true);
-
-        _button_ok->set_label(Gtk::Stock::OK.id);
-        _button_cancel->set_label(Gtk::Stock::CANCEL.id);
-
         if (_exEnv == NULL) {
             _exEnv = new ExecutionEnv(_effect, SP_ACTIVE_DESKTOP, NULL, _signal_param_change, this);
             _createdExEnv = true;
-            preview_toggle();
+                       _exEnv->livePreview(true);
             _exEnv->run();
         }
+    } else {
+               set_modal(false);
+               if (_exEnv != NULL) {
+                       _exEnv->livePreview(false);
+            _exEnv->shutdown(_createdExEnv);
+            _exEnv = NULL;
+               }
     }
 }
 
 void
 PrefDialog::on_response (int signal) {
-    if (!_exEnv) {
-        // apparantly this effect does not use the new ExecutionEnv stuff. 
-        // _param_pinned  and _effect will be null, and the code below will crash: return here!
-        return;
-    }
-    //printf("Got signal %d\n", signal);
-    if (!_param_pinned->get_bool(NULL, NULL)) {
-        // Not my job if we're not pinned (either not pinned, or not even a pinned checkbox)
-        // It's the execution environment's job
+    if (_exEnv != NULL) {
+               _param_preview->set_bool(false, NULL, NULL);
         return;
     }
 
     if (signal == Gtk::RESPONSE_OK) {
-        _effect->effect(SP_ACTIVE_DESKTOP);
-    } else {
-        this->hide();
-        delete _signal_param_change; // This is not in the destructor because
-                                     // it is the only situation that we need
-                                     // to delete it in
-        delete this;
+               _effect->effect(SP_ACTIVE_DESKTOP);
     }
+       if (signal == Gtk::RESPONSE_CANCEL) {
+               // close the dialog
+               delete this;
+       }
 
     return;
 }
 
 #include "internal/clear-n_.h"
 
-const char * PrefDialog::pinned_param_xml = "<param name=\"__pinned__\" type=\"boolean\" gui-text=\"" N_("Pin Dialog") "\" gui-description=\"" N_("Toggles whether the dialog stays for multiple executions or disappears after one") "\" scope=\"user\">false</param>";
 const char * PrefDialog::live_param_xml = "<param name=\"__live_effect__\" type=\"boolean\" gui-text=\"" N_("Live Preview") "\" gui-description=\"" N_("Controls whether the effect settings are rendered live on canvas") "\" scope=\"user\">false</param>";
 
 }; }; /* namespace Inkscape, Extension */