X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fextension%2Fextension.h;h=c71ae59b42ec7481e94b22a730ed4d1257036bb8;hb=3a056a63fe247049cb6f63423493697452752802;hp=a1993f941b8473d7a82f4bb3da061985e68f8343;hpb=1c954df5d7f214580761f55fdd9470e893d1a032;p=inkscape.git diff --git a/src/extension/extension.h b/src/extension/extension.h index a1993f941..c71ae59b4 100644 --- a/src/extension/extension.h +++ b/src/extension/extension.h @@ -22,7 +22,6 @@ #include #include #include "xml/repr.h" -#include "document.h" #include "extension/extension-forward.h" /** The key that is used to identify that the I/O should be autodetected */ @@ -43,10 +42,11 @@ /** Defines the key for Postscript printing */ #define SP_MODULE_KEY_PRINT_PS "org.inkscape.print.ps" -#define SP_MODULE_KEY_PRINT_CAIRO_PS "org.inkscape.print.ps.cairo" +#define SP_MODULE_KEY_PRINT_CAIRO_PS "org.inkscape.print.ps.cairo" +#define SP_MODULE_KEY_PRINT_CAIRO_EPS "org.inkscape.print.eps.cairo" /** Defines the key for PDF printing */ #define SP_MODULE_KEY_PRINT_PDF "org.inkscape.print.pdf" -#define SP_MODULE_KEY_PRINT_CAIRO_PDF "org.inkscape.print.pdf.cairo" +#define SP_MODULE_KEY_PRINT_CAIRO_PDF "org.inkscape.print.pdf.cairo" /** Defines the key for LaTeX printing */ #define SP_MODULE_KEY_PRINT_LATEX "org.inkscape.print.latex" /** Defines the key for printing with GNOME Print */ @@ -57,14 +57,9 @@ /** Defines the default printing to use */ #define SP_MODULE_KEY_PRINT_DEFAULT SP_MODULE_KEY_PRINT_WIN32 #else -#ifdef WITH_GNOME_PRINT -/** Defines the default printing to use */ -#define SP_MODULE_KEY_PRINT_DEFAULT SP_MODULE_KEY_PRINT_GNOME -#else /** Defines the default printing to use */ #define SP_MODULE_KEY_PRINT_DEFAULT SP_MODULE_KEY_PRINT_PS #endif -#endif /** Mime type for SVG */ #define MIME_SVG "image/svg+xml" @@ -72,6 +67,13 @@ /** Name of the extension error file */ #define EXTENSION_ERROR_LOG_FILENAME "extension-errors.log" + +#define INKSCAPE_EXTENSION_URI "http://www.inkscape.org/namespace/inkscape/extension" +#define INKSCAPE_EXTENSION_NS_NC "extension" +#define INKSCAPE_EXTENSION_NS "extension:" + +struct SPDocument; + namespace Inkscape { namespace Extension { @@ -97,9 +99,10 @@ private: state_t _state; /**< Which state the Extension is currently in */ std::vector _deps; /**< Dependencies for this extension */ static std::ofstream error_file; /**< This is the place where errors get reported */ + bool _gui; protected: - Inkscape::XML::Node *repr; /**< The XML description of the Extension */ + Inkscape::XML::Node *repr; /**< The XML description of the Extension */ Implementation::Implementation * imp; /**< An object that holds all the functions for making this work */ ExpirationTimer * timer; /**< Timeout to unload after a given time */ @@ -128,15 +131,39 @@ private: This only gets created if there are parameters in this extension */ +public: + /** \brief A function to get the the number of parameters that + the extension has. + \return The number of parameters. */ + unsigned int param_count ( ) { return parameters == NULL ? 0 : + g_slist_length(parameters); }; + /** \brief A function to get the the number of parameters that + are visible to the user that the extension has. + \return The number of visible parameters. + + \note Currently this just calls param_count as visible isn't implemented + but in the future it'll do something different. Please call + the appropriate function in code so that it'll work in the + future. + */ + unsigned int param_visible_count ( ); + public: /** An error class for when a parameter is called on a type it is not */ class param_wrong_type {}; - - /** An error class for when a parameter is looked for that just + class param_not_color_param {}; + class param_not_enum_param {}; + class param_not_optiongroup_param {}; + class param_not_string_param {}; + class param_not_float_param {}; + class param_not_int_param {}; + class param_not_bool_param {}; + + /** An error class for when a parameter is looked for that just * simply doesn't exist */ class param_not_exist {}; - - /** An error class for when a filename already exists, but the user + + /** An error class for when a filename already exists, but the user * doesn't want to overwrite it */ class no_overwrite {}; @@ -150,32 +177,61 @@ public: bool get_param_bool (const gchar * name, const SPDocument * doc = NULL, const Inkscape::XML::Node * node = NULL); + int get_param_int (const gchar * name, const SPDocument * doc = NULL, const Inkscape::XML::Node * node = NULL); + float get_param_float (const gchar * name, const SPDocument * doc = NULL, const Inkscape::XML::Node * node = NULL); + const gchar * get_param_string (const gchar * name, const SPDocument * doc = NULL, const Inkscape::XML::Node * node = NULL); + + guint32 get_param_color (const gchar * name, + const SPDocument * doc = NULL, + const Inkscape::XML::Node * node = NULL); + + const gchar * get_param_enum (const gchar * name, + const SPDocument * doc = NULL, + const Inkscape::XML::Node * node = NULL); + + gchar const *get_param_optiongroup( gchar const * name, + SPDocument const * doc = 0, + Inkscape::XML::Node const * node = 0); + bool set_param_bool (const gchar * name, bool value, SPDocument * doc = NULL, Inkscape::XML::Node * node = NULL); + int set_param_int (const gchar * name, int value, SPDocument * doc = NULL, Inkscape::XML::Node * node = NULL); + float set_param_float (const gchar * name, float value, SPDocument * doc = NULL, Inkscape::XML::Node * node = NULL); + const gchar * set_param_string (const gchar * name, const gchar * value, SPDocument * doc = NULL, Inkscape::XML::Node * node = NULL); + gchar const * set_param_optiongroup(gchar const * name, + gchar const * value, + SPDocument * doc = 0, + Inkscape::XML::Node * node = 0); + + guint32 set_param_color (const gchar * name, + guint32 color, + SPDocument * doc = NULL, + Inkscape::XML::Node * node = NULL); + /* Error file handling */ public: static void error_file_open (void); @@ -184,6 +240,7 @@ public: public: Gtk::Widget * autogui (SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal = NULL); void paramListString (std::list & retlist); + void set_gui(bool s) { _gui = s; } /* Extension editor dialog stuff */ public: