X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fextension%2Fexecution-env.h;h=c2d4e7e4aaffb07998cc0f4caf517962969137f1;hb=d6562d39ac04f3a44d4b68c98ac1efa3d876f628;hp=a6c4ebf647dba2fd79ee612d93c9e75fc4dfd786;hpb=54c7f91819ab1bb09ca4bfc0c82af971e437a129;p=inkscape.git diff --git a/src/extension/execution-env.h b/src/extension/execution-env.h index a6c4ebf64..c2d4e7e4a 100644 --- a/src/extension/execution-env.h +++ b/src/extension/execution-env.h @@ -19,51 +19,87 @@ #include "forward.h" #include "extension-forward.h" +#include "extension.h" namespace Inkscape { namespace Extension { class ExecutionEnv { private: + enum state_t { + INIT, //< The context has been initialized + COMPLETE, //< We've completed atleast once + RUNNING //< The effect is currently running + }; + /** \brief What state the execution engine is in. */ + state_t _state; + + /** \brief If there is a working dialog it'll be referenced + right here. */ Gtk::Dialog * _visibleDialog; - bool _prefsVisible; - bool _finished; - bool _humanWait; - bool _canceled; - bool _prefsChanged; - bool _livePreview; - bool _shutdown; - bool _selfdelete; - sigc::signal * _changeSignal; + /** \brief Signal that the run is complete. */ + sigc::signal _runComplete; + /** \brief In some cases we need a mainLoop, when we do, this is + a pointer to it. */ Glib::RefPtr _mainloop; + /** \brief The document that we're working on. */ Inkscape::UI::View::View * _doc; + /** \brief A list of the IDs of all the selected objects before + we started to work on this document. */ std::list _selected; - sigc::connection _dialogsig; - sigc::connection _changesig; - sigc::connection _timersig; + /** \brief A document cache if we were passed one. */ + Implementation::ImplementationDocumentCache * _docCache; -public: + /** \brief The effect that we're executing in this context. */ Effect * _effect; - ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk::Widget * controls = NULL, sigc::signal * changeSignal = NULL, Gtk::Dialog * prefDialog = NULL); - ~ExecutionEnv (void); + /** \brief Show the working dialog when the effect is executing. */ + bool _show_working; + /** \brief Display errors if they occur. */ + bool _show_errors; +public: + + /** \brief Create a new context for exection of an effect + \param effect The effect to execute + \param doc The document to execute the effect on + \param docCache The implementation cache of the document. May be + NULL in which case it'll be created by the execution + environment. + \prarm show_working Show a small dialog signaling the effect + is working. Allows for user canceling. + \param show_errors If the effect has an error, show it or not. + */ + ExecutionEnv (Effect * effect, + Inkscape::UI::View::View * doc, + Implementation::ImplementationDocumentCache * docCache = NULL, + bool show_working = true, + bool show_errors = true); + virtual ~ExecutionEnv (void); + /** \brief Starts the execution of the effect + \return Returns whether the effect was executed to completion */ void run (void); - void livePreview (bool state = true); - void shutdown (bool del = false); + /** \brief Cancel the execution of the effect */ + void cancel (void); + /** \brief Commit the changes to the document */ + void commit (void); + /** \brief Undoes what the effect completed. */ + void undo (void); + /** \brief Wait for the effect to complete if it hasn't. */ + bool wait (void); private: + void runComplete (void); void createPrefsDialog (Gtk::Widget * controls); void createWorkingDialog (void); void workingCanceled (const int resp); - void preferencesResponse (const int resp); - void preferencesChange (void); - bool preferencesTimer (void); void processingCancel (void); void processingComplete(void); void documentCancel (void); void documentCommit (void); void reselect (void); + void genDocCache (void); + void killDocCache (void); }; } } /* namespace Inkscape, Extension */