X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fextension%2Fexecution-env.h;h=c2d4e7e4aaffb07998cc0f4caf517962969137f1;hb=8ebe4cd501af68581f40982b54f463546c59943a;hp=949d09db6294116df8081a6f705e53f18025f35c;hpb=62d835b4bbb0f1f046e30d9b67f8e9517cc6175c;p=inkscape.git diff --git a/src/extension/execution-env.h b/src/extension/execution-env.h index 949d09db6..c2d4e7e4a 100644 --- a/src/extension/execution-env.h +++ b/src/extension/execution-env.h @@ -26,53 +26,80 @@ 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; - Implementation::ImplementationDocumentCache * _docCache; + /** \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; + /** \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, - Gtk::Widget * controls = NULL, - sigc::signal * changeSignal = NULL, - Gtk::Dialog * prefDialog = NULL, - Implementation::ImplementationDocumentCache * docCache = NULL); + 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); + void genDocCache (void); + void killDocCache (void); }; } } /* namespace Inkscape, Extension */