summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2007-09-01 04:31:58 +0000
committergouldtj <gouldtj@users.sourceforge.net>2007-09-01 04:31:58 +0000
commitd6ca37229bb1049e6a900ba49249473625a6fcaa (patch)
tree11e8e97664379c3b23d3d08aa5c640c344ae1717 /src
parent(bzr r3637) (diff)
downloadinkscape-d6ca37229bb1049e6a900ba49249473625a6fcaa.tar.gz
inkscape-d6ca37229bb1049e6a900ba49249473625a6fcaa.zip
r16339@tres: ted | 2007-08-19 19:47:57 -0700
Live preview toggling is working. Pinning, not as much. But getting there. (bzr r3638)
Diffstat (limited to 'src')
-rw-r--r--src/extension/execution-env.cpp15
-rw-r--r--src/extension/execution-env.h2
-rw-r--r--src/extension/prefdialog.cpp5
3 files changed, 19 insertions, 3 deletions
diff --git a/src/extension/execution-env.cpp b/src/extension/execution-env.cpp
index b21d7a0f5..adcd2a3d7 100644
--- a/src/extension/execution-env.cpp
+++ b/src/extension/execution-env.cpp
@@ -36,6 +36,7 @@ ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk
_humanWait(false),
_canceled(false),
_prefsChanged(false),
+ _livePreview(true),
_doc(doc) {
SPDesktop *desktop = (SPDesktop *)_doc;
@@ -204,7 +205,7 @@ void
ExecutionEnv::run (void) {
while (!_finished) {
_canceled = false;
- if (_humanWait) {
+ if (_humanWait || !_livePreview) {
_mainloop->run();
} else {
_prefsChanged = false;
@@ -219,6 +220,18 @@ ExecutionEnv::run (void) {
return;
}
+void
+ExecutionEnv::livePreview (bool state) {
+ _mainloop->quit();
+ if (_livePreview && !state) {
+ _canceled = true;
+ }
+ if (!_livePreview && state) {
+ _humanWait = false;
+ }
+ _livePreview = state;
+ return;
+}
} } /* namespace Inkscape, Extension */
diff --git a/src/extension/execution-env.h b/src/extension/execution-env.h
index a20c0ba3d..3c4b13198 100644
--- a/src/extension/execution-env.h
+++ b/src/extension/execution-env.h
@@ -31,6 +31,7 @@ private:
bool _humanWait;
bool _canceled;
bool _prefsChanged;
+ bool _livePreview;
Glib::RefPtr<Glib::MainLoop> _mainloop;
Inkscape::UI::View::View * _doc;
std::list<Glib::ustring> _selected;
@@ -43,6 +44,7 @@ public:
void run (void);
void preferencesChange (void);
+ void livePreview (bool state = true);
private:
void createPrefsDialog (Gtk::Widget * controls);
diff --git a/src/extension/prefdialog.cpp b/src/extension/prefdialog.cpp
index 66a04dc1d..eb6cbf6fa 100644
--- a/src/extension/prefdialog.cpp
+++ b/src/extension/prefdialog.cpp
@@ -99,6 +99,7 @@ PrefDialog::PrefDialog (Glib::ustring name, gchar const * help, Gtk::Widget * co
pinned_toggle();
_signal_preview.connect(sigc::mem_fun(this, &PrefDialog::preview_toggle));
_signal_pinned.connect(sigc::mem_fun(this, &PrefDialog::pinned_toggle));
+
}
GtkWidget *dlg = GTK_WIDGET(gobj());
@@ -152,9 +153,9 @@ PrefDialog::setPreviewState (Glib::ustring state) {
void
PrefDialog::preview_toggle (void) {
if(_param_preview->get_bool(NULL, NULL) && !_param_pinned->get_bool(NULL, NULL)) {
- //std::cout << "Live Preview" << std::endl;
+ _exEnv->livePreview(true);
} else {
- //std::cout << "No Preview" << std::endl;
+ _exEnv->livePreview(false);
}
}