X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fverbs.cpp;h=b9dfec2711de70e7b0db06eaed3d85fff68c8f5b;hb=3095d406b8f21b2d15939d51c34ec4b0f3c2e558;hp=41d6fcdcc8e787762c61d105afa5ef90456e3a57;hpb=e7d9e019b2ea8c8ccad2bdff32a6fedbd5db0439;p=inkscape.git diff --git a/src/verbs.cpp b/src/verbs.cpp index 41d6fcdcc..b9dfec271 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -23,14 +23,14 @@ */ - - -#include - #ifdef HAVE_CONFIG_H # include "config.h" #endif +#include +#include +#include + #include "helper/action.h" #include @@ -39,7 +39,6 @@ #include "dialogs/text-edit.h" #include "dialogs/xml-tree.h" -#include "dialogs/object-properties.h" #include "dialogs/item-properties.h" #include "dialogs/find.h" #include "dialogs/layer-properties.h" @@ -81,6 +80,8 @@ #include "gradient-context.h" #include "shape-editor.h" #include "draw-context.h" +#include "gradient-drag.h" +#include "sp-guide.h" /** @@ -107,45 +108,8 @@ sp_action_get_title(SPAction const *action) } // end of sp_action_get_title() - namespace Inkscape { -/// \todo !!!FIXME:: kill this, use DialogManager instead!!! - -class PanelDialog : public Inkscape::UI::Dialog::Dialog -{ -public: - PanelDialog(char const *prefs_path, int const verb_num) : Dialog(prefs_path, verb_num) {} -/* - virtual Glib::ustring getName() const {return "foo";} - virtual Glib::ustring getDesc() const {return "bar";} -*/ -}; - -/** \brief Utility function to get a panel displayed. */ -static void show_panel( Inkscape::UI::Widget::Panel &panel, char const *prefs_path, int const verb_num ) -{ - Gtk::Container *container = panel.get_toplevel(); - if ( &panel == container ) { // safe check? - //g_message("Creating new dialog to hold it"); - PanelDialog *dia = new PanelDialog(prefs_path, verb_num); - Gtk::VBox *mainVBox = dia->get_vbox(); - mainVBox->pack_start(panel); - dia->show_all_children(); - dia->read_geometry(); - dia->present(); - } else { - PanelDialog *dia = dynamic_cast(container); - if ( dia ) { - //g_message("Found an existing dialog"); - dia->read_geometry(); - dia->present(); - } else { - g_message("Failed to find an existing dialog"); - } - } -} - /** \brief A class to encompass all of the verbs which deal with file operations. */ class FileVerb : public Verb { @@ -354,7 +318,7 @@ public: gchar const *image) : Verb(code, id, name, tip, image) { } -}; //TextVerb : public Verb +}; //TextVerb : public Verb Verb::VerbTable Verb::_verbs; Verb::VerbIDTable Verb::_verb_ids; @@ -403,7 +367,7 @@ Verb::~Verb(void) \return NULL to represent error (this function shouldn't ever be called) */ SPAction * -Verb::make_action(Inkscape::UI::View::View *view) +Verb::make_action(Inkscape::UI::View::View */*view*/) { //std::cout << "make_action" << std::endl; return NULL; @@ -649,7 +613,7 @@ Verb::sensitive(SPDocument *in_doc, bool in_sensitive) for (ActionTable::iterator cur_action = _actions->begin(); cur_action != _actions->end(); cur_action++) { - if (in_doc == NULL || (cur_action->first != NULL && cur_action->first->doc() == in_doc)) { + if (in_doc == NULL || (cur_action->first != NULL && cur_action->first->doc() == in_doc)) { sp_action_set_sensitive(cur_action->second, in_sensitive ? 1 : 0); } } @@ -662,6 +626,12 @@ Verb::sensitive(SPDocument *in_doc, bool in_sensitive) return; } +/** \brief Accessor to get the tooltip for verb as localised string */ +gchar const * +Verb::get_tip (void) +{ + return _(_tip); +} void Verb::name(SPDocument *in_doc, Glib::ustring in_name) @@ -670,8 +640,8 @@ Verb::name(SPDocument *in_doc, Glib::ustring in_name) for (ActionTable::iterator cur_action = _actions->begin(); cur_action != _actions->end(); cur_action++) { - if (in_doc == NULL || (cur_action->first != NULL && cur_action->first->doc() == in_doc)) { - sp_action_set_name(cur_action->second, in_name); + if (in_doc == NULL || (cur_action->first != NULL && cur_action->first->doc() == in_doc)) { + sp_action_set_name(cur_action->second, in_name); } } } @@ -782,7 +752,7 @@ Verb::getbyid(gchar const *id) /** \brief Decode the verb code and take appropriate action */ void -FileVerb::perform(SPAction *action, void *data, void *pdata) +FileVerb::perform(SPAction *action, void *data, void */*pdata*/) { #if 0 /* These aren't used, but are here to remind people not to use @@ -790,12 +760,12 @@ FileVerb::perform(SPAction *action, void *data, void *pdata) Inkscape::UI::View::View *current_view = sp_action_get_view(action); SPDocument *current_document = current_view->doc(); #endif - + SPDesktop *desktop = dynamic_cast(sp_action_get_view(action)); - g_assert(desktop != NULL); - Gtk::Window *parent = desktop->getToplevel(); - g_assert(parent != NULL); - + g_assert(desktop != NULL); + Gtk::Window *parent = desktop->getToplevel(); + g_assert(parent != NULL); + switch ((long) data) { case SP_VERB_FILE_NEW: sp_file_new_default(); @@ -816,14 +786,11 @@ FileVerb::perform(SPAction *action, void *data, void *pdata) sp_file_save_a_copy(*parent, NULL, NULL); break; case SP_VERB_FILE_PRINT: - sp_file_print(); + sp_file_print(*parent); break; case SP_VERB_FILE_VACUUM: sp_file_vacuum(); break; - case SP_VERB_FILE_PRINT_DIRECT: - sp_file_print_direct(); - break; case SP_VERB_FILE_PRINT_PREVIEW: sp_file_print_preview(NULL, NULL); break; @@ -833,6 +800,12 @@ FileVerb::perform(SPAction *action, void *data, void *pdata) case SP_VERB_FILE_EXPORT: sp_file_export_dialog(NULL); break; + case SP_VERB_FILE_IMPORT_FROM_OCAL: + sp_file_import_from_ocal(*parent); + break; + case SP_VERB_FILE_EXPORT_TO_OCAL: + sp_file_export_to_ocal(*parent); + break; case SP_VERB_FILE_NEXT_DESKTOP: inkscape_switch_desktops_next(); break; @@ -848,13 +821,13 @@ FileVerb::perform(SPAction *action, void *data, void *pdata) default: break; } - + } // end of sp_verb_action_file_perform() /** \brief Decode the verb code and take appropriate action */ void -EditVerb::perform(SPAction *action, void *data, void *pdata) +EditVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); if (!dt) @@ -901,6 +874,12 @@ EditVerb::perform(SPAction *action, void *data, void *pdata) case SP_VERB_EDIT_PASTE_IN_PLACE: sp_selection_paste(true); break; + case SP_VERB_EDIT_PASTE_LIVEPATHEFFECT: + sp_selection_paste_livepatheffect(); + break; + case SP_VERB_EDIT_REMOVE_LIVEPATHEFFECT: + sp_selection_remove_livepatheffect(); + break; case SP_VERB_EDIT_DELETE: sp_selection_delete(); break; @@ -913,9 +892,15 @@ EditVerb::perform(SPAction *action, void *data, void *pdata) case SP_VERB_EDIT_UNLINK_CLONE: sp_selection_unlink(); break; - case SP_VERB_EDIT_CLONE_ORIGINAL: + case SP_VERB_EDIT_CLONE_SELECT_ORIGINAL: sp_select_clone_original(); break; + case SP_VERB_EDIT_SELECTION_2_MARKER: + sp_selection_to_marker(); + break; + case SP_VERB_EDIT_SELECTION_2_GUIDES: + sp_selection_to_guides(); + break; case SP_VERB_EDIT_TILE: sp_selection_tile(); break; @@ -954,19 +939,21 @@ EditVerb::perform(SPAction *action, void *data, void *pdata) } break; - case SP_VERB_EDIT_SELECT_NEXT: + case SP_VERB_EDIT_SELECT_NEXT: if (tools_isactive(dt, TOOLS_NODES)) { SP_NODE_CONTEXT(ec)->shape_editor->select_next(); - } else if (tools_isactive(dt, TOOLS_GRADIENT)) { + } else if (tools_isactive(dt, TOOLS_GRADIENT) + && ec->_grdrag->isNonEmpty()) { sp_gradient_context_select_next (ec); } else { sp_selection_item_next(); } break; - case SP_VERB_EDIT_SELECT_PREV: + case SP_VERB_EDIT_SELECT_PREV: if (tools_isactive(dt, TOOLS_NODES)) { SP_NODE_CONTEXT(ec)->shape_editor->select_prev(); - } else if (tools_isactive(dt, TOOLS_GRADIENT)) { + } else if (tools_isactive(dt, TOOLS_GRADIENT) + && ec->_grdrag->isNonEmpty()) { sp_gradient_context_select_prev (ec); } else { sp_selection_item_prev(); @@ -980,6 +967,14 @@ EditVerb::perform(SPAction *action, void *data, void *pdata) sp_desktop_selection(dt)->clear(); } break; + + case SP_VERB_EDIT_GUIDES_AROUND_PAGE: + sp_guide_create_guides_around_page(sp_desktop_document(dt)); + break; + + case SP_VERB_EDIT_NEXT_PATHEFFECT_PARAMETER: + sp_selection_next_patheffect_param(dt); + break; default: break; } @@ -988,13 +983,15 @@ EditVerb::perform(SPAction *action, void *data, void *pdata) /** \brief Decode the verb code and take appropriate action */ void -SelectionVerb::perform(SPAction *action, void *data, void *pdata) +SelectionVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); if (!dt) return; + g_assert(dt->_dlg_mgr != NULL); + switch (reinterpret_cast(data)) { case SP_VERB_SELECTION_TO_FRONT: sp_selection_raise_to_top(); @@ -1082,6 +1079,7 @@ SelectionVerb::perform(SPAction *action, void *data, void *pdata) sp_selected_path_reverse(); break; case SP_VERB_SELECTION_TRACE: + inkscape_dialogs_unhide(); dt->_dlg_mgr->showDialog("Trace"); break; case SP_VERB_SELECTION_CREATE_BITMAP: @@ -1095,6 +1093,7 @@ SelectionVerb::perform(SPAction *action, void *data, void *pdata) sp_selected_path_break_apart(); break; case SP_VERB_SELECTION_GRIDTILE: + inkscape_dialogs_unhide(); dt->_dlg_mgr->showDialog("TileDialog"); break; default: @@ -1105,7 +1104,7 @@ SelectionVerb::perform(SPAction *action, void *data, void *pdata) /** \brief Decode the verb code and take appropriate action */ void -LayerVerb::perform(SPAction *action, void *data, void *pdata) +LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); unsigned int verb = reinterpret_cast(data); @@ -1127,11 +1126,11 @@ LayerVerb::perform(SPAction *action, void *data, void *pdata) SPObject *next=Inkscape::next_layer(dt->currentRoot(), dt->currentLayer()); if (next) { dt->setCurrentLayer(next); - sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_NEXT, - _("Move to next layer")); - dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Moved to next layer.")); + sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_NEXT, + _("Switch to next layer")); + dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Switched to next layer.")); } else { - dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Cannot move past last layer.")); + dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Cannot go past last layer.")); } break; } @@ -1139,11 +1138,11 @@ LayerVerb::perform(SPAction *action, void *data, void *pdata) SPObject *prev=Inkscape::previous_layer(dt->currentRoot(), dt->currentLayer()); if (prev) { dt->setCurrentLayer(prev); - sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_PREV, - _("Move to previous layer")); - dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Moved to previous layer.")); + sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_PREV, + _("Switch to previous layer")); + dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Switched to previous layer.")); } else { - dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Cannot move past first layer.")); + dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Cannot go before first layer.")); } break; } @@ -1238,7 +1237,7 @@ LayerVerb::perform(SPAction *action, void *data, void *pdata) dt->setCurrentLayer(survivor); } - sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_DELETE, + sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_DELETE, _("Delete layer")); // TRANSLATORS: this means "The layer has been deleted." @@ -1255,7 +1254,7 @@ LayerVerb::perform(SPAction *action, void *data, void *pdata) /** \brief Decode the verb code and take appropriate action */ void -ObjectVerb::perform( SPAction *action, void *data, void *pdata ) +ObjectVerb::perform( SPAction *action, void *data, void */*pdata*/ ) { SPDesktop *dt = static_cast(sp_action_get_view(action)); if (!dt) @@ -1312,13 +1311,13 @@ ObjectVerb::perform( SPAction *action, void *data, void *pdata ) // ... flip the selected nodes about that node SP_NODE_CONTEXT(ec)->shape_editor->flip(NR::X, active_node->pos); - } else { + } else { // ... or else about the center of their bounding box. SP_NODE_CONTEXT(ec)->shape_editor->flip(NR::X); } - // When working with the selector tool, flip the selection about its rotation center + // When working with the selector tool, flip the selection about its rotation center // (if it is visible) or about the center of the bounding box. } else { sp_selection_scale_relative(sel, center, NR::scale(-1.0, 1.0)); @@ -1344,12 +1343,18 @@ ObjectVerb::perform( SPAction *action, void *data, void *pdata ) case SP_VERB_OBJECT_SET_MASK: sp_selection_set_mask(false, false); break; + case SP_VERB_OBJECT_EDIT_MASK: + sp_selection_edit_clip_or_mask(dt, false); + break; case SP_VERB_OBJECT_UNSET_MASK: sp_selection_unset_mask(false); break; case SP_VERB_OBJECT_SET_CLIPPATH: sp_selection_set_mask(true, false); break; + case SP_VERB_OBJECT_EDIT_CLIPPATH: + sp_selection_edit_clip_or_mask(dt, true); + break; case SP_VERB_OBJECT_UNSET_CLIPPATH: sp_selection_unset_mask(true); break; @@ -1361,7 +1366,7 @@ ObjectVerb::perform( SPAction *action, void *data, void *pdata ) /** \brief Decode the verb code and take appropriate action */ void -ContextVerb::perform(SPAction *action, void *data, void *pdata) +ContextVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt; sp_verb_t verb; @@ -1392,6 +1397,9 @@ ContextVerb::perform(SPAction *action, void *data, void *pdata) case SP_VERB_CONTEXT_NODE: tools_switch_current(TOOLS_NODES); break; + case SP_VERB_CONTEXT_TWEAK: + tools_switch_current(TOOLS_TWEAK); + break; case SP_VERB_CONTEXT_RECT: tools_switch_current(TOOLS_SHAPES_RECT); break; @@ -1443,6 +1451,10 @@ ContextVerb::perform(SPAction *action, void *data, void *pdata) prefs_set_int_attribute("dialogs.preferences", "page", PREFS_PAGE_TOOLS_NODE); dt->_dlg_mgr->showDialog("InkscapePreferences"); break; + case SP_VERB_CONTEXT_TWEAK_PREFS: + prefs_set_int_attribute("dialogs.preferences", "page", PREFS_PAGE_TOOLS_TWEAK); + dt->_dlg_mgr->showDialog("InkscapePreferences"); + break; case SP_VERB_CONTEXT_RECT_PREFS: prefs_set_int_attribute("dialogs.preferences", "page", PREFS_PAGE_TOOLS_SHAPES_RECT); dt->_dlg_mgr->showDialog("InkscapePreferences"); @@ -1508,7 +1520,7 @@ ContextVerb::perform(SPAction *action, void *data, void *pdata) /** \brief Decode the verb code and take appropriate action */ void -TextVerb::perform(SPAction *action, void *data, void *pdata) +TextVerb::perform(SPAction *action, void */*data*/, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); if (!dt) @@ -1519,10 +1531,10 @@ TextVerb::perform(SPAction *action, void *data, void *pdata) Inkscape::XML::Node *repr = SP_OBJECT_REPR(dt->namedview); (void)repr; } - + /** \brief Decode the verb code and take appropriate action */ void -ZoomVerb::perform(SPAction *action, void *data, void *pdata) +ZoomVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); if (!dt) @@ -1540,34 +1552,38 @@ ZoomVerb::perform(SPAction *action, void *data, void *pdata) switch (GPOINTER_TO_INT(data)) { case SP_VERB_ZOOM_IN: { + gint mul = 1 + gobble_key_events( + GDK_KP_Add, 0); // with any mask // While drawing with the pen/pencil tool, zoom towards the end of the unfinished path if (tools_isactive(dt, TOOLS_FREEHAND_PENCIL) || tools_isactive(dt, TOOLS_FREEHAND_PEN)) { SPCurve *rc = SP_DRAW_CONTEXT(ec)->red_curve; if (sp_curve_last_bpath(rc)) { NR::Point const zoom_to (sp_curve_last_point(rc)); - dt->zoom_relative_keep_point(zoom_to, zoom_inc); + dt->zoom_relative_keep_point(zoom_to, mul*zoom_inc); break; } } NR::Rect const d = dt->get_display_area(); - dt->zoom_relative( d.midpoint()[NR::X], d.midpoint()[NR::Y], zoom_inc); + dt->zoom_relative( d.midpoint()[NR::X], d.midpoint()[NR::Y], mul*zoom_inc); break; } case SP_VERB_ZOOM_OUT: { + gint mul = 1 + gobble_key_events( + GDK_KP_Subtract, 0); // with any mask // While drawing with the pen/pencil tool, zoom away from the end of the unfinished path if (tools_isactive(dt, TOOLS_FREEHAND_PENCIL) || tools_isactive(dt, TOOLS_FREEHAND_PEN)) { SPCurve *rc = SP_DRAW_CONTEXT(ec)->red_curve; if (sp_curve_last_bpath(rc)) { NR::Point const zoom_to (sp_curve_last_point(rc)); - dt->zoom_relative_keep_point(zoom_to, 1 / zoom_inc); + dt->zoom_relative_keep_point(zoom_to, 1 / (mul*zoom_inc)); break; } } NR::Rect const d = dt->get_display_area(); - dt->zoom_relative( d.midpoint()[NR::X], d.midpoint()[NR::Y], 1 / zoom_inc ); + dt->zoom_relative( d.midpoint()[NR::X], d.midpoint()[NR::Y], 1 / (mul*zoom_inc) ); break; } case SP_VERB_ZOOM_1_1: @@ -1615,8 +1631,11 @@ ZoomVerb::perform(SPAction *action, void *data, void *pdata) case SP_VERB_TOGGLE_GUIDES: sp_namedview_toggle_guides(doc, repr); break; + case SP_VERB_TOGGLE_SNAPPING: + dt->toggleSnapping(); + break; case SP_VERB_TOGGLE_GRID: - dt->toggleGrid(); + dt->toggleGrids(); break; #ifdef HAVE_GTK_WINDOW_FULLSCREEN case SP_VERB_FULLSCREEN: @@ -1638,20 +1657,24 @@ ZoomVerb::perform(SPAction *action, void *data, void *pdata) case SP_VERB_VIEW_MODE_TOGGLE: dt->displayModeToggle(); break; + case SP_VERB_VIEW_CMS_TOGGLE: + dt->toggleColorProfAdjust(); + break; case SP_VERB_VIEW_ICON_PREVIEW: - show_panel( Inkscape::UI::Dialogs::IconPreviewPanel::getInstance(), "dialogs.iconpreview", SP_VERB_VIEW_ICON_PREVIEW ); + inkscape_dialogs_unhide(); + dt->_dlg_mgr->showDialog("IconPreviewPanel"); break; default: break; } - + dt->updateNow(); } // end of sp_verb_action_zoom_perform() /** \brief Decode the verb code and take appropriate action */ void -DialogVerb::perform(SPAction *action, void *data, void *pdata) +DialogVerb::perform(SPAction *action, void *data, void */*pdata*/) { if (reinterpret_cast(data) != SP_VERB_DIALOG_TOGGLE) { // unhide all when opening a new dialog @@ -1675,11 +1698,10 @@ DialogVerb::perform(SPAction *action, void *data, void *pdata) dt->_dlg_mgr->showDialog("DocumentProperties"); break; case SP_VERB_DIALOG_FILL_STROKE: - sp_object_properties_dialog(); - // dt->_dlg_mgr->showDialog("FillAndStroke"); + dt->_dlg_mgr->showDialog("FillAndStroke"); break; case SP_VERB_DIALOG_SWATCHES: - show_panel( Inkscape::UI::Dialogs::SwatchesPanel::getInstance(), "dialogs.swatches", SP_VERB_DIALOG_SWATCHES); + dt->_dlg_mgr->showDialog("Swatches"); break; case SP_VERB_DIALOG_TRANSFORM: dt->_dlg_mgr->showDialog("Transformation"); @@ -1718,19 +1740,25 @@ DialogVerb::perform(SPAction *action, void *data, void *pdata) break; #ifdef WITH_INKBOARD case SP_VERB_XMPP_CLIENT: - { + { Inkscape::Whiteboard::SessionManager::showClient(); - break; - } + break; + } #endif case SP_VERB_DIALOG_INPUT: sp_input_dialog(); break; + case SP_VERB_DIALOG_INPUT2: + dt->_dlg_mgr->showDialog("InputDevices"); + break; case SP_VERB_DIALOG_EXTENSIONEDITOR: dt->_dlg_mgr->showDialog("ExtensionEditor"); break; case SP_VERB_DIALOG_LAYERS: - show_panel( Inkscape::UI::Dialogs::LayersPanel::getInstance(), "dialogs.layers", SP_VERB_DIALOG_LAYERS ); + dt->_dlg_mgr->showDialog("LayersPanel"); + break; + case SP_VERB_DIALOG_LIVE_PATH_EFFECT: + dt->_dlg_mgr->showDialog("LivePathEffect"); break; case SP_VERB_DIALOG_FILTER_EFFECTS: dt->_dlg_mgr->showDialog("FilterEffectsDialog"); @@ -1742,25 +1770,19 @@ DialogVerb::perform(SPAction *action, void *data, void *pdata) /** \brief Decode the verb code and take appropriate action */ void -HelpVerb::perform(SPAction *action, void *data, void *pdata) +HelpVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); g_assert(dt->_dlg_mgr != NULL); switch (reinterpret_cast(data)) { - case SP_VERB_HELP_KEYS: - /* TRANSLATORS: If you have translated the keys.svg file to your language, then - translate this string as "keys.LANG.svg" (where LANG is your language code); - otherwise leave as "keys.svg". */ - sp_help_open_screen(_("keys.svg")); - break; case SP_VERB_HELP_ABOUT: sp_help_about(); break; case SP_VERB_HELP_ABOUT_EXTENSIONS: { - Inkscape::UI::Dialogs::ExtensionsPanel *panel = new Inkscape::UI::Dialogs::ExtensionsPanel(); - panel->set_full(true); - show_panel( *panel, "dialogs.aboutextensions", SP_VERB_HELP_ABOUT_EXTENSIONS ); + // Inkscape::UI::Dialogs::ExtensionsPanel *panel = new Inkscape::UI::Dialogs::ExtensionsPanel(); + // panel->set_full(true); + // show_panel( *panel, "dialogs.aboutextensions", SP_VERB_HELP_ABOUT_EXTENSIONS ); break; } @@ -1772,6 +1794,7 @@ HelpVerb::perform(SPAction *action, void *data, void *pdata) */ case SP_VERB_HELP_MEMORY: + inkscape_dialogs_unhide(); dt->_dlg_mgr->showDialog("Memory"); break; default: @@ -1781,7 +1804,7 @@ HelpVerb::perform(SPAction *action, void *data, void *pdata) /** \brief Decode the verb code and take appropriate action */ void -TutorialVerb::perform(SPAction *action, void *data, void *pdata) +TutorialVerb::perform(SPAction */*action*/, void *data, void */*pdata*/) { switch (reinterpret_cast(data)) { case SP_VERB_TUTORIAL_BASIC: @@ -1940,7 +1963,7 @@ EffectLastVerb::make_action(Inkscape::UI::View::View *view) /** \brief Decode the verb code and take appropriate action */ void -EffectLastVerb::perform(SPAction *action, void *data, void *pdata) +EffectLastVerb::perform(SPAction *action, void *data, void */*pdata*/) { /* These aren't used, but are here to remind people not to use the CURRENT_DOCUMENT macros unless they really have to. */ @@ -1953,9 +1976,8 @@ EffectLastVerb::perform(SPAction *action, void *data, void *pdata) switch ((long) data) { case SP_VERB_EFFECT_LAST_PREF: - if (!effect->prefs(current_view)) - return; - /* Note: fall through */ + effect->prefs(current_view); + break; case SP_VERB_EFFECT_LAST: effect->effect(current_view); break; @@ -2010,13 +2032,13 @@ FitCanvasVerb::make_action(Inkscape::UI::View::View *view) /** \brief Decode the verb code and take appropriate action */ void -FitCanvasVerb::perform(SPAction *action, void *data, void *pdata) +FitCanvasVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); if (!dt) return; SPDocument *doc = sp_desktop_document(dt); if (!doc) return; - + switch ((long) data) { case SP_VERB_FIT_CANVAS_TO_SELECTION: fit_canvas_to_selection(dt); @@ -2079,13 +2101,13 @@ LockAndHideVerb::make_action(Inkscape::UI::View::View *view) /** \brief Decode the verb code and take appropriate action */ void -LockAndHideVerb::perform(SPAction *action, void *data, void *pdata) +LockAndHideVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); if (!dt) return; SPDocument *doc = sp_desktop_document(dt); if (!doc) return; - + switch ((long) data) { case SP_VERB_UNLOCK_ALL: unlock_all(dt); @@ -2136,14 +2158,14 @@ Verb *Verb::_base_verbs[] = { // TRANSLATORS: "Vacuum Defs" means "Clean up defs" (so as to remove unused definitions) new FileVerb(SP_VERB_FILE_VACUUM, "FileVacuum", N_("Vac_uum Defs"), N_("Remove unused definitions (such as gradients or clipping paths) from the <defs> of the document"), "file_vacuum" ), - new FileVerb(SP_VERB_FILE_PRINT_DIRECT, "FilePrintDirect", N_("Print _Direct"), - N_("Print directly without prompting to a file or pipe"), NULL ), new FileVerb(SP_VERB_FILE_PRINT_PREVIEW, "FilePrintPreview", N_("Print Previe_w"), N_("Preview document printout"), GTK_STOCK_PRINT_PREVIEW ), new FileVerb(SP_VERB_FILE_IMPORT, "FileImport", N_("_Import..."), N_("Import a bitmap or SVG image into this document"), "file_import"), new FileVerb(SP_VERB_FILE_EXPORT, "FileExport", N_("_Export Bitmap..."), N_("Export this document or a selection as a bitmap image"), "file_export"), + new FileVerb(SP_VERB_FILE_IMPORT_FROM_OCAL, "FileImportFromOCAL", N_("Import From Open Clip Art Library"), N_("Import a document from Open Clip Art Library"), "ocal_import"), + new FileVerb(SP_VERB_FILE_EXPORT_TO_OCAL, "FileExportToOCAL", N_("Export To Open Clip Art Library"), N_("Export this document to Open Clip Art Library"), "ocal_export"), new FileVerb(SP_VERB_FILE_NEXT_DESKTOP, "NextWindow", N_("N_ext Window"), N_("Switch to the next document window"), "window_next"), new FileVerb(SP_VERB_FILE_PREV_DESKTOP, "PrevWindow", N_("P_revious Window"), @@ -2179,6 +2201,10 @@ Verb *Verb::_base_verbs[] = { N_("Scale each selected object vertically to match the height of the copied object"), NULL), new EditVerb(SP_VERB_EDIT_PASTE_IN_PLACE, "EditPasteInPlace", N_("Paste _In Place"), N_("Paste objects from clipboard to the original location"), "selection_paste_in_place"), + new EditVerb(SP_VERB_EDIT_PASTE_LIVEPATHEFFECT, "PasteLivePathEffect", N_("Paste Path _Effect"), + N_("Apply the path effect of the copied object to selection"), NULL), + new EditVerb(SP_VERB_EDIT_REMOVE_LIVEPATHEFFECT, "RemoveLivePathEffect", N_("Remove Path _Effect"), + N_("Remove any path effects from selected objects"), NULL), new EditVerb(SP_VERB_EDIT_DELETE, "EditDelete", N_("_Delete"), N_("Delete selection"), GTK_STOCK_DELETE), new EditVerb(SP_VERB_EDIT_DUPLICATE, "EditDuplicate", N_("Duplic_ate"), @@ -2187,8 +2213,14 @@ Verb *Verb::_base_verbs[] = { N_("Create a clone (a copy linked to the original) of selected object"), "edit_clone"), new EditVerb(SP_VERB_EDIT_UNLINK_CLONE, "EditUnlinkClone", N_("Unlin_k Clone"), N_("Cut the selected clone's link to its original, turning it into a standalone object"), "edit_unlink_clone"), - new EditVerb(SP_VERB_EDIT_CLONE_ORIGINAL, "EditCloneOriginal", N_("Select _Original"), + new EditVerb(SP_VERB_EDIT_CLONE_SELECT_ORIGINAL, "EditCloneSelectOriginal", N_("Select _Original"), N_("Select the object to which the selected clone is linked"), "edit_select_original"), + // TRANSLATORS: Convert selection to a line marker + new EditVerb(SP_VERB_EDIT_SELECTION_2_MARKER, "ObjectsToMarker", N_("Objects to _Marker"), + N_("Convert selection to a line marker"), NULL), + // TRANSLATORS: Convert selection to a collection of guidelines + new EditVerb(SP_VERB_EDIT_SELECTION_2_GUIDES, "ObjectsToGuides", N_("Objects to Gu_ides"), + N_("Convert selected objects to a collection of guidelines aligned with their edges"), NULL), // TRANSLATORS: Convert selection to a rectangle with tiled pattern fill new EditVerb(SP_VERB_EDIT_TILE, "ObjectsToPattern", N_("Objects to Patter_n"), N_("Convert selection to a rectangle with tiled pattern fill"), NULL), @@ -2211,6 +2243,10 @@ Verb *Verb::_base_verbs[] = { N_("Select previous object or node"), NULL), new EditVerb(SP_VERB_EDIT_DESELECT, "EditDeselect", N_("D_eselect"), N_("Deselect any selected objects or nodes"), "selection_deselect"), + new EditVerb(SP_VERB_EDIT_GUIDES_AROUND_PAGE, "EditGuidesAroundPage", N_("_Guides around page"), + N_("Create four guides aligned with the page borders"), NULL), + new EditVerb(SP_VERB_EDIT_NEXT_PATHEFFECT_PARAMETER, "EditNextPathEffectParameter", N_("Next Path Effect Parameter"), + N_("Show next Path Effect parameter for editing"), "edit_next_parameter"), /* Selection */ new SelectionVerb(SP_VERB_SELECTION_TO_FRONT, "SelectionToFront", N_("Raise to _Top"), @@ -2294,8 +2330,8 @@ Verb *Verb::_base_verbs[] = { // Advanced tutorial for more info new SelectionVerb(SP_VERB_SELECTION_BREAK_APART, "SelectionBreakApart", N_("Break _Apart"), N_("Break selected paths into subpaths"), "selection_break"), - new SelectionVerb(SP_VERB_SELECTION_GRIDTILE, "DialogGridArrange", N_("Gri_d Arrange..."), - N_("Arrange selected objects in a grid pattern"), "grid_arrange"), + new SelectionVerb(SP_VERB_SELECTION_GRIDTILE, "DialogGridArrange", N_("Rows and Columns..."), + N_("Arrange selected objects in a table"), "grid_arrange"), /* Layer */ new LayerVerb(SP_VERB_LAYER_NEW, "LayerNew", N_("_Add Layer..."), N_("Create a new layer"), "new_layer"), @@ -2347,10 +2383,14 @@ Verb *Verb::_base_verbs[] = { "object_flip_ver"), new ObjectVerb(SP_VERB_OBJECT_SET_MASK, "ObjectSetMask", N_("_Set"), N_("Apply mask to selection (using the topmost object as mask)"), NULL), + new ObjectVerb(SP_VERB_OBJECT_EDIT_MASK, "ObjectEditMask", N_("_Edit"), + N_("Edit mask"), "nodeedit-mask"), new ObjectVerb(SP_VERB_OBJECT_UNSET_MASK, "ObjectUnSetMask", N_("_Release"), N_("Remove mask from selection"), NULL), new ObjectVerb(SP_VERB_OBJECT_SET_CLIPPATH, "ObjectSetClipPath", N_("_Set"), N_("Apply clipping path to selection (using the topmost object as clipping path)"), NULL), + new ObjectVerb(SP_VERB_OBJECT_EDIT_CLIPPATH, "ObjectEditClipPath", N_("_Edit"), + N_("Edit clipping path"), "nodeedit-clippath"), new ObjectVerb(SP_VERB_OBJECT_UNSET_CLIPPATH, "ObjectUnSetClipPath", N_("_Release"), N_("Remove clipping path from selection"), NULL), @@ -2358,7 +2398,9 @@ Verb *Verb::_base_verbs[] = { new ContextVerb(SP_VERB_CONTEXT_SELECT, "ToolSelector", N_("Select"), N_("Select and transform objects"), "draw_select"), new ContextVerb(SP_VERB_CONTEXT_NODE, "ToolNode", N_("Node Edit"), - N_("Edit path nodes or control handles"), "draw_node"), + N_("Edit paths by nodes"), "draw_node"), + new ContextVerb(SP_VERB_CONTEXT_TWEAK, "ToolTweak", N_("Tweak"), + N_("Tweak objects by sculpting or painting"), "draw_tweak"), new ContextVerb(SP_VERB_CONTEXT_RECT, "ToolRect", N_("Rectangle"), N_("Create rectangles and squares"), "draw_rect"), new ContextVerb(SP_VERB_CONTEXT_3DBOX, "Tool3DBox", N_("3D Box"), @@ -2374,7 +2416,7 @@ Verb *Verb::_base_verbs[] = { new ContextVerb(SP_VERB_CONTEXT_PEN, "ToolPen", N_("Pen"), N_("Draw Bezier curves and straight lines"), "draw_pen"), new ContextVerb(SP_VERB_CONTEXT_CALLIGRAPHIC, "ToolCalligraphic", N_("Calligraphy"), - N_("Draw calligraphic lines"), "draw_calligraphic"), + N_("Draw calligraphic or brush strokes"), "draw_calligraphic"), new ContextVerb(SP_VERB_CONTEXT_TEXT, "ToolText", N_("Text"), N_("Create and edit text objects"), "draw_text"), new ContextVerb(SP_VERB_CONTEXT_GRADIENT, "ToolGradient", N_("Gradient"), @@ -2384,7 +2426,7 @@ Verb *Verb::_base_verbs[] = { new ContextVerb(SP_VERB_CONTEXT_DROPPER, "ToolDropper", N_("Dropper"), N_("Pick colors from image"), "draw_dropper"), new ContextVerb(SP_VERB_CONTEXT_CONNECTOR, "ToolConnector", N_("Connector"), - N_("Create connectors"), "draw_connector"), + N_("Create diagram connectors"), "draw_connector"), new ContextVerb(SP_VERB_CONTEXT_PAINTBUCKET, "ToolPaintBucket", N_("Paint Bucket"), N_("Fill bounded areas"), "draw_paintbucket"), @@ -2393,6 +2435,8 @@ Verb *Verb::_base_verbs[] = { N_("Open Preferences for the Selector tool"), NULL), new ContextVerb(SP_VERB_CONTEXT_NODE_PREFS, "NodePrefs", N_("Node Tool Preferences"), N_("Open Preferences for the Node tool"), NULL), + new ContextVerb(SP_VERB_CONTEXT_TWEAK_PREFS, "TweakPrefs", N_("Tweak Tool Preferences"), + N_("Open Preferences for the Tweak tool"), NULL), new ContextVerb(SP_VERB_CONTEXT_RECT_PREFS, "RectPrefs", N_("Rectangle Preferences"), N_("Open Preferences for the Rectangle tool"), NULL), new ContextVerb(SP_VERB_CONTEXT_3DBOX_PREFS, "3DBoxPrefs", N_("3D Box Preferences"), @@ -2429,6 +2473,7 @@ Verb *Verb::_base_verbs[] = { new ZoomVerb(SP_VERB_TOGGLE_SCROLLBARS, "ToggleScrollbars", N_("Scroll_bars"), N_("Show or hide the canvas scrollbars"), "scrollbars"), new ZoomVerb(SP_VERB_TOGGLE_GRID, "ToggleGrid", N_("_Grid"), N_("Show or hide the grid"), "grid"), new ZoomVerb(SP_VERB_TOGGLE_GUIDES, "ToggleGuides", N_("G_uides"), N_("Show or hide guides (drag from a ruler to create a guide)"), "guides"), + new ZoomVerb(SP_VERB_TOGGLE_SNAPPING, "ToggleSnapping", N_("Snap"), N_("Toggle snapping on or off"), NULL), new ZoomVerb(SP_VERB_ZOOM_NEXT, "ZoomNext", N_("Nex_t Zoom"), N_("Next zoom (from the history of zooms)"), "zoom_next"), new ZoomVerb(SP_VERB_ZOOM_PREV, "ZoomPrev", N_("Pre_vious Zoom"), N_("Previous zoom (from the history of zooms)"), @@ -2455,6 +2500,9 @@ Verb *Verb::_base_verbs[] = { new ZoomVerb(SP_VERB_VIEW_MODE_TOGGLE, "ViewModeToggle", N_("_Toggle"), N_("Toggle between normal and outline display modes"), NULL), + new ZoomVerb(SP_VERB_VIEW_CMS_TOGGLE, "ViewCmsToggle", N_("Color-managed view"), + N_("Toggle color-managed display for this document window"), "color_management"), + new ZoomVerb(SP_VERB_VIEW_ICON_PREVIEW, "ViewIconPreview", N_("Ico_n Preview..."), N_("Open a window to preview objects at different icon resolutions"), "view_icon_preview"), new ZoomVerb(SP_VERB_ZOOM_PAGE, "ZoomPage", N_("_Page"), @@ -2506,16 +2554,18 @@ Verb *Verb::_base_verbs[] = { #endif new DialogVerb(SP_VERB_DIALOG_INPUT, "DialogInput", N_("_Input Devices..."), N_("Configure extended input devices, such as a graphics tablet"), "input_devices"), + new DialogVerb(SP_VERB_DIALOG_INPUT2, "DialogInput2", N_("_Input Devices (new)..."), + N_("Configure extended input devices, such as a graphics tablet"), "input_devices"), new DialogVerb(SP_VERB_DIALOG_EXTENSIONEDITOR, "org.inkscape.dialogs.extensioneditor", N_("_Extensions..."), N_("Query information about extensions"), NULL), new DialogVerb(SP_VERB_DIALOG_LAYERS, "DialogLayers", N_("Layer_s..."), N_("View Layers"), "layers"), + new DialogVerb(SP_VERB_DIALOG_LIVE_PATH_EFFECT, "DialogLivePathEffect", N_("Path Effects..."), + N_("Manage path effects"), NULL), new DialogVerb(SP_VERB_DIALOG_FILTER_EFFECTS, "DialogFilterEffects", N_("Filter Effects..."), N_("Manage SVG filter effects"), NULL), /* Help */ - new HelpVerb(SP_VERB_HELP_KEYS, "HelpKeys", N_("_Keys and Mouse"), - N_("Keys and mouse shortcuts reference"), "help_keys"), new HelpVerb(SP_VERB_HELP_ABOUT_EXTENSIONS, "HelpAboutExtensions", N_("About E_xtensions"), N_("Information on Inkscape extensions"), NULL), new HelpVerb(SP_VERB_HELP_MEMORY, "HelpAboutMemory", N_("About _Memory"),