Code

Connector tool: make connectors avoid the convex hull of shapes.
[inkscape.git] / src / verbs.h
index 2b4c952e9c9c590c11cd129dbad3854f9955da3a..d0abcdca28ef53ac834dfa90e0da8bc0bf850be7 100644 (file)
@@ -9,13 +9,21 @@
  *   Ted Gould <ted@gould.cx>
  *   David Yip <yipdw@rose-hulman.edu>
  *
+ *  Copyright (C) 2006 Johan Engelen <johan@shouraizou.nl>
+ *  Copyright (C) (date unspecified) Authors
+
  * This code is in public domain if done by Lauris
  * This code is GPL if done by Ted or David
  */
 
+#include <cstring>
+#include <string>
+#include <string.h>
+#include "config.h"
 #include "require-config.h"   /* HAVE_GTK_WINDOW_FULLSCREEN */
 #include "helper/helper-forward.h"
 #include "forward.h"
+#include <glibmm/ustring.h>
 
 /** \brief This anonymous enum is used to provide a list of the Verbs
            which are defined staticly in the verb files.  There may be
@@ -30,12 +38,14 @@ enum {
     SP_VERB_FILE_REVERT,           /**< Revert this file to its original state. */
     SP_VERB_FILE_SAVE,             /**< Save the current file with its saved filename */
     SP_VERB_FILE_SAVE_AS,          /**< Save the current file with a new filename */
+    SP_VERB_FILE_SAVE_A_COPY,      /**< Save a copy of the current file */
     SP_VERB_FILE_PRINT,
     SP_VERB_FILE_VACUUM,
-    SP_VERB_FILE_PRINT_DIRECT,
     SP_VERB_FILE_PRINT_PREVIEW,
     SP_VERB_FILE_IMPORT,
     SP_VERB_FILE_EXPORT,
+    SP_VERB_FILE_IMPORT_FROM_OCAL, /**< Import the file from Open Clip Art Library */
+//    SP_VERB_FILE_EXPORT_TO_OCAL, /**< Export the file to Open Clip Art  Library */
     SP_VERB_FILE_NEXT_DESKTOP,
     SP_VERB_FILE_PREV_DESKTOP,
     SP_VERB_FILE_CLOSE_VIEW,
@@ -54,11 +64,17 @@ enum {
     SP_VERB_EDIT_PASTE_SIZE_SEPARATELY_X,
     SP_VERB_EDIT_PASTE_SIZE_SEPARATELY_Y,
     SP_VERB_EDIT_PASTE_IN_PLACE,
+    SP_VERB_EDIT_PASTE_LIVEPATHEFFECT,
+    SP_VERB_EDIT_REMOVE_LIVEPATHEFFECT,
+    SP_VERB_EDIT_REMOVE_FILTER,
     SP_VERB_EDIT_DELETE,
     SP_VERB_EDIT_DUPLICATE,
     SP_VERB_EDIT_CLONE,
     SP_VERB_EDIT_UNLINK_CLONE,
-    SP_VERB_EDIT_CLONE_ORIGINAL,
+    SP_VERB_EDIT_RELINK_CLONE,
+    SP_VERB_EDIT_CLONE_SELECT_ORIGINAL,
+    SP_VERB_EDIT_SELECTION_2_MARKER,
+    SP_VERB_EDIT_SELECTION_2_GUIDES,
     SP_VERB_EDIT_TILE,
     SP_VERB_EDIT_UNTILE,
     SP_VERB_EDIT_CLEAR_ALL,
@@ -66,7 +82,11 @@ enum {
     SP_VERB_EDIT_SELECT_ALL_IN_ALL_LAYERS,
     SP_VERB_EDIT_INVERT,
     SP_VERB_EDIT_INVERT_IN_ALL_LAYERS,
+    SP_VERB_EDIT_SELECT_NEXT,
+    SP_VERB_EDIT_SELECT_PREV,
     SP_VERB_EDIT_DESELECT,
+    SP_VERB_EDIT_GUIDES_AROUND_PAGE,
+    SP_VERB_EDIT_NEXT_PATHEFFECT_PARAMETER,
     /* Selection */
     SP_VERB_SELECTION_TO_FRONT,
     SP_VERB_SELECTION_TO_BACK,
@@ -110,7 +130,9 @@ enum {
     SP_VERB_LAYER_TO_BOTTOM,
     SP_VERB_LAYER_RAISE,
     SP_VERB_LAYER_LOWER,
+    SP_VERB_LAYER_DUPLICATE,
     SP_VERB_LAYER_DELETE,
+    SP_VERB_LAYER_SOLO,
     /* Object */
     SP_VERB_OBJECT_ROTATE_90_CW,
     SP_VERB_OBJECT_ROTATE_90_CCW,
@@ -122,13 +144,18 @@ enum {
     SP_VERB_OBJECT_FLIP_HORIZONTAL,
     SP_VERB_OBJECT_FLIP_VERTICAL,
     SP_VERB_OBJECT_SET_MASK,
+    SP_VERB_OBJECT_EDIT_MASK,
     SP_VERB_OBJECT_UNSET_MASK,
     SP_VERB_OBJECT_SET_CLIPPATH,
+    SP_VERB_OBJECT_EDIT_CLIPPATH,
     SP_VERB_OBJECT_UNSET_CLIPPATH,
     /* Tools */
     SP_VERB_CONTEXT_SELECT,
     SP_VERB_CONTEXT_NODE,
+    SP_VERB_CONTEXT_TWEAK,
+    SP_VERB_CONTEXT_SPRAY,
     SP_VERB_CONTEXT_RECT,
+    SP_VERB_CONTEXT_3DBOX,
     SP_VERB_CONTEXT_ARC,
     SP_VERB_CONTEXT_STAR,
     SP_VERB_CONTEXT_SPIRAL,
@@ -140,10 +167,17 @@ enum {
     SP_VERB_CONTEXT_ZOOM,
     SP_VERB_CONTEXT_DROPPER,
     SP_VERB_CONTEXT_CONNECTOR,
+    SP_VERB_CONTEXT_PAINTBUCKET,
+    SP_VERB_CONTEXT_LPE, /* not really a tool but used for editing LPE parameters on-canvas for example */
+    SP_VERB_CONTEXT_ERASER,
+    SP_VERB_CONTEXT_LPETOOL, /* note that this is very different from SP_VERB_CONTEXT_LPE above! */
     /* Tool preferences */
     SP_VERB_CONTEXT_SELECT_PREFS,
     SP_VERB_CONTEXT_NODE_PREFS,
+    SP_VERB_CONTEXT_TWEAK_PREFS,
+    SP_VERB_CONTEXT_SPRAY_PREFS,
     SP_VERB_CONTEXT_RECT_PREFS,
+    SP_VERB_CONTEXT_3DBOX_PREFS,
     SP_VERB_CONTEXT_ARC_PREFS,
     SP_VERB_CONTEXT_STAR_PREFS,
     SP_VERB_CONTEXT_SPIRAL_PREFS,
@@ -155,6 +189,9 @@ enum {
     SP_VERB_CONTEXT_ZOOM_PREFS,
     SP_VERB_CONTEXT_DROPPER_PREFS,
     SP_VERB_CONTEXT_CONNECTOR_PREFS,
+    SP_VERB_CONTEXT_PAINTBUCKET_PREFS,
+    SP_VERB_CONTEXT_ERASER_PREFS,
+    SP_VERB_CONTEXT_LPETOOL_PREFS,
     /* Zooming and desktop settings */
     SP_VERB_ZOOM_IN,
     SP_VERB_ZOOM_OUT,
@@ -162,6 +199,7 @@ enum {
     SP_VERB_TOGGLE_SCROLLBARS,
     SP_VERB_TOGGLE_GRID,
     SP_VERB_TOGGLE_GUIDES,
+    SP_VERB_TOGGLE_SNAPPING,
     SP_VERB_ZOOM_NEXT,
     SP_VERB_ZOOM_PREV,
     SP_VERB_ZOOM_1_1,
@@ -170,10 +208,15 @@ enum {
 #ifdef HAVE_GTK_WINDOW_FULLSCREEN
     SP_VERB_FULLSCREEN,
 #endif /* HAVE_GTK_WINDOW_FULLSCREEN */
+    SP_VERB_FOCUSTOGGLE,
     SP_VERB_VIEW_NEW,
     SP_VERB_VIEW_NEW_PREVIEW,
     SP_VERB_VIEW_MODE_NORMAL,
+    SP_VERB_VIEW_MODE_NO_FILTERS,
     SP_VERB_VIEW_MODE_OUTLINE,
+    SP_VERB_VIEW_MODE_PRINT_COLORS_PREVIEW,
+    SP_VERB_VIEW_MODE_TOGGLE,
+    SP_VERB_VIEW_CMS_TOGGLE,
     SP_VERB_VIEW_ICON_PREVIEW,
     SP_VERB_ZOOM_PAGE,
     SP_VERB_ZOOM_PAGE_WIDTH,
@@ -187,31 +230,34 @@ enum {
     SP_VERB_DIALOG_SWATCHES,
     SP_VERB_DIALOG_TRANSFORM,
     SP_VERB_DIALOG_ALIGN_DISTRIBUTE,
+    SP_VERB_DIALOG_SPRAY_OPTION,
+    SP_VERB_DIALOG_UNDO_HISTORY,
     SP_VERB_DIALOG_TEXT,
     SP_VERB_DIALOG_XML_EDITOR,
     SP_VERB_DIALOG_FIND,
+    SP_VERB_DIALOG_FINDREPLACE,
+    SP_VERB_DIALOG_SPELLCHECK,
     SP_VERB_DIALOG_DEBUG,
     SP_VERB_DIALOG_SCRIPT,
     SP_VERB_DIALOG_TOGGLE,
     SP_VERB_DIALOG_CLONETILER,
     SP_VERB_DIALOG_ITEM,
-#ifdef WITH_INKBOARD
-       SP_VERB_DIALOG_WHITEBOARD_CONNECT,
-       SP_VERB_DIALOG_WHITEBOARD_SHAREWITHUSER,
-       SP_VERB_DIALOG_WHITEBOARD_SHAREWITHCHAT,
-       SP_VERB_DIALOG_WHITEBOARD_DUMPXMLTRACKER,
-       SP_VERB_DIALOG_WHITEBOARD_OPENSESSIONFILE,
-       SP_VERB_DIALOG_WHITEBOARD_SESSIONPLAYBACK,
-       SP_VERB_DIALOG_WHITEBOARD_DISCONNECT_FROM_SESSION,
-       SP_VERB_DIALOG_WHITEBOARD_DISCONNECT_FROM_SERVER,
-#endif
+/*#ifdef WITH_INKBOARD
+    SP_VERB_XMPP_CLIENT,
+#endif*/
     SP_VERB_DIALOG_INPUT,
+    SP_VERB_DIALOG_INPUT2,
+    SP_VERB_DIALOG_EXTENSIONEDITOR,
+    SP_VERB_DIALOG_LAYERS,
+    SP_VERB_DIALOG_LIVE_PATH_EFFECT,
+    SP_VERB_DIALOG_FILTER_EFFECTS,
+    SP_VERB_DIALOG_SVG_FONTS,
+    SP_VERB_DIALOG_PRINT_COLORS_PREVIEW,
     /* Help */
-    SP_VERB_HELP_KEYS,
     SP_VERB_HELP_ABOUT_EXTENSIONS,
     SP_VERB_HELP_MEMORY,
     SP_VERB_HELP_ABOUT,
-    SP_VERB_SHOW_LICENSE,
+    //SP_VERB_SHOW_LICENSE,
     /* Tutorials */
     SP_VERB_TUTORIAL_BASIC,
     SP_VERB_TUTORIAL_SHAPES,
@@ -223,6 +269,21 @@ enum {
     /* Effects */
     SP_VERB_EFFECT_LAST,
     SP_VERB_EFFECT_LAST_PREF,
+    /* Fit Canvas */
+    SP_VERB_FIT_CANVAS_TO_SELECTION,
+    SP_VERB_FIT_CANVAS_TO_DRAWING,
+    SP_VERB_FIT_CANVAS_TO_SELECTION_OR_DRAWING,
+    /* LockAndHide */
+    SP_VERB_UNLOCK_ALL,
+    SP_VERB_UNLOCK_ALL_IN_ALL_LAYERS,
+    SP_VERB_UNHIDE_ALL,
+    SP_VERB_UNHIDE_ALL_IN_ALL_LAYERS,
+    /* Color management */
+    SP_VERB_EDIT_LINK_COLOR_PROFILE,
+    SP_VERB_EDIT_REMOVE_COLOR_PROFILE,
+    /*Scripting*/
+    SP_VERB_EDIT_ADD_EXTERNAL_SCRIPT,
+    SP_VERB_EDIT_REMOVE_EXTERNAL_SCRIPT,
     /* Footer */
     SP_VERB_LAST
 };
@@ -251,8 +312,13 @@ private:
         to find the different verbs in the hash map. */
     struct ltstr {
         bool operator()(const char* s1, const char* s2) const {
-            if (s1 == NULL || s2 == NULL) return true;
-            return strcmp(s1, s2) < 0;
+            if ( (s1 == NULL) && (s2 != NULL) ) {
+                return true;
+            } else if (s1 == NULL || s2 == NULL) {
+                return false;
+            } else {
+                return strcmp(s1, s2) < 0;
+            }
         }
     };
     /** \brief An easy to use definition of the table of verbs by ID. */
@@ -303,6 +369,10 @@ public:
     gchar const * get_id (void) { return _id; }
     /** \brief Accessor to get the internal variable. */
     gchar const * get_name (void) { return _name; }
+    /** \brief Accessor to get the internal variable. */
+    gchar const * get_tip (void) ;
+    /** \brief Accessor to get the internal variable. */
+    gchar const * get_image (void) { return _image; }
 
     /** \brief Set the name after initialization. */
     gchar const * set_name (gchar const * name) { _name = name; return _name; }
@@ -373,6 +443,21 @@ public:
     void delete_view (Inkscape::UI::View::View * view);
 
     void sensitive (SPDocument * in_doc = NULL, bool in_sensitive = true);
+    void name (SPDocument * in_doc = NULL, Glib::ustring in_name = "");
+
+// Yes, multiple public, protected and private sections are bad. We'll clean that up later
+protected:
+    /** \brief Returns the size of the internal base verb array.
+        \return The size in elements of the internal base array.
+
+        This is an inline function intended for testing. This should normally not be used.
+        For testing, a subclass that returns this value can be created to verify that the
+        length matches the enum values, etc.
+    */
+    static int _getBaseListSize(void) {return G_N_ELEMENTS(_base_verbs);}
+
+public:
+    static void list (void);
 }; /* Verb class */