X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fverbs.cpp;h=1695a427e6abdc40857f2c7bb4f39e06eb6fce74;hb=c676417a3d9dd3fdd4037f780dc9f3cd143aefe0;hp=7c3652b36012bba485fea83be0d7c132bc2c944c;hpb=80bce9c528f98207f3a8bc8ebeba4991dfc2bbc9;p=inkscape.git diff --git a/src/verbs.cpp b/src/verbs.cpp index 7c3652b36..1695a427e 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -1,4 +1,3 @@ -#define __SP_VERBS_C__ /** * \file verbs.cpp * @@ -17,6 +16,7 @@ * David Turner * bulia byak * Jon A. Cruz + * Abhishek Sharma * * Copyright (C) 2006 Johan Engelen * Copyright (C) (date unspecified) Authors @@ -40,7 +40,6 @@ #include "desktop-handles.h" #include "dialogs/clonetiler.h" #include "dialogs/find.h" -#include "dialogs/input.h" #include "dialogs/item-properties.h" #include "dialogs/spellcheck.h" #include "dialogs/text-edit.h" @@ -64,6 +63,7 @@ #include "selection-chemistry.h" #include "seltrans.h" #include "shape-editor.h" +#include "shortcuts.h" #include "sp-flowtext.h" #include "sp-guide.h" #include "splivarot.h" @@ -73,6 +73,7 @@ #include "ui/dialog/dialog-manager.h" #include "ui/dialog/document-properties.h" #include "ui/dialog/extensions.h" +#include "ui/dialog/glyphs.h" #include "ui/dialog/icon-preview.h" #include "ui/dialog/inkscape-preferences.h" #include "ui/dialog/layer-properties.h" @@ -81,6 +82,8 @@ #include "ui/icon-names.h" #include "ui/tool/node-tool.h" +using Inkscape::DocumentUndo; + //#ifdef WITH_INKBOARD //#include "jabber_whiteboard/session-manager.h" //#endif @@ -334,7 +337,15 @@ Verb::VerbIDTable Verb::_verb_ids; in the \c _verbs hashtable which is indexed by the \c code. */ Verb::Verb(gchar const *id, gchar const *name, gchar const *tip, gchar const *image) : - _actions(NULL), _id(id), _name(name), _tip(tip), _image(image) + _actions(0), + _id(id), + _name(name), + _tip(tip), + _full_tip(0), + _shortcut(0), + _image(image), + _code(0), + _default_sensitive(false) { static int count = SP_VERB_LAST; @@ -342,8 +353,6 @@ Verb::Verb(gchar const *id, gchar const *name, gchar const *tip, gchar const *im _code = count; _verbs.insert(VerbTable::value_type(count, this)); _verb_ids.insert(VerbIDTable::value_type(_id, this)); - - return; } /** \brief Destroy a verb. @@ -358,7 +367,10 @@ Verb::~Verb(void) delete _actions; } - return; + if (_full_tip) { + g_free(_full_tip); + _full_tip = 0; + } } /** \brief Verbs are no good without actions. This is a place holder @@ -628,10 +640,30 @@ Verb::sensitive(SPDocument *in_doc, bool in_sensitive) } /** \brief Accessor to get the tooltip for verb as localised string */ -gchar const * -Verb::get_tip (void) +gchar const *Verb::get_tip(void) { - return _(_tip); + gchar const *result = 0; + if (_tip) { + unsigned int shortcut = sp_shortcut_get_primary(this); + if ( (shortcut != _shortcut) || !_full_tip) { + if (_full_tip) { + g_free(_full_tip); + _full_tip = 0; + } + _shortcut = shortcut; + gchar* shortcutString = sp_shortcut_get_label(shortcut); + if (shortcutString) { + _full_tip = g_strdup_printf("%s (%s)", _(_tip), shortcutString); + g_free(shortcutString); + shortcutString = 0; + } else { + _full_tip = g_strdup(_(_tip)); + } + } + result = _full_tip; + } + + return result; } void @@ -767,7 +799,7 @@ FileVerb::perform(SPAction *action, void *data, void */*pdata*/) Gtk::Window *parent = desktop->getToplevel(); g_assert(parent != NULL); - switch ((long) data) { + switch (reinterpret_cast(data)) { case SP_VERB_FILE_NEW: sp_file_new_default(); break; @@ -845,7 +877,7 @@ EditVerb::perform(SPAction *action, void *data, void */*pdata*/) sp_selection_cut(dt); break; case SP_VERB_EDIT_COPY: - sp_selection_copy(); + sp_selection_copy(dt); break; case SP_VERB_EDIT_PASTE: sp_selection_paste(dt, false); @@ -1079,7 +1111,7 @@ void LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) { SPDesktop *dt = static_cast(sp_action_get_view(action)); - unsigned int verb = reinterpret_cast(data); + size_t verb = reinterpret_cast(data); if ( !dt || !dt->currentLayer() ) { return; @@ -1098,8 +1130,8 @@ 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, - _("Switch to next layer")); + DocumentUndo::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 go past last layer.")); @@ -1110,8 +1142,8 @@ 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, - _("Switch to previous layer")); + DocumentUndo::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 go before first layer.")); @@ -1138,7 +1170,7 @@ LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) SPItem *layer=SP_ITEM(dt->currentLayer()); g_return_if_fail(layer != NULL); - SPObject *old_pos=SP_OBJECT_NEXT(layer); + SPObject *old_pos = layer->getNext(); switch (verb) { case SP_VERB_LAYER_TO_TOP: @@ -1155,7 +1187,7 @@ LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) break; } - if ( SP_OBJECT_NEXT(layer) != old_pos ) { + if ( layer->getNext() != old_pos ) { char const *message = NULL; Glib::ustring description = ""; switch (verb) { @@ -1176,7 +1208,7 @@ LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) description = _("Lower layer"); break; }; - sp_document_done(sp_desktop_document(dt), verb, description); + DocumentUndo::done(sp_desktop_document(dt), verb, description); if (message) { dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, message); g_free((void *) message); @@ -1207,7 +1239,8 @@ LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) sp_edit_select_all(dt); #else // Copies everything, regardless of locks, visibility, sublayers. - Inkscape::XML::Node *selected = dt->currentLayer()->repr; + //XML Tree being directly used here while it shouldn't be. + Inkscape::XML::Node *selected = dt->currentLayer()->getRepr(); Inkscape::XML::Node *parent = sp_repr_parent(selected); Inkscape::XML::Node *dup = selected->duplicate(parent->document()); parent->addChild(dup, selected); @@ -1221,8 +1254,8 @@ LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) dt->setCurrentLayer(new_layer); } #endif - sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_DUPLICATE, - _("Duplicate layer")); + DocumentUndo::done(sp_desktop_document(dt), SP_VERB_LAYER_DUPLICATE, + _("Duplicate layer")); // TRANSLATORS: this means "The layer has been duplicated." dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Duplicated layer.")); @@ -1253,8 +1286,8 @@ LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) dt->setCurrentLayer(survivor); } - sp_document_done(sp_desktop_document(dt), SP_VERB_LAYER_DELETE, - _("Delete layer")); + DocumentUndo::done(sp_desktop_document(dt), SP_VERB_LAYER_DELETE, + _("Delete layer")); // TRANSLATORS: this means "The layer has been deleted." dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Deleted layer.")); @@ -1268,7 +1301,7 @@ LayerVerb::perform(SPAction *action, void *data, void */*pdata*/) dt->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("No current layer.")); } else { dt->toggleLayerSolo( dt->currentLayer() ); - sp_document_maybe_done(sp_desktop_document(dt), "layer:solo", SP_VERB_LAYER_SOLO, _("Toggle layer solo")); + DocumentUndo::maybeDone(sp_desktop_document(dt), "layer:solo", SP_VERB_LAYER_SOLO, _("Toggle layer solo")); } break; } @@ -1328,13 +1361,13 @@ ObjectVerb::perform( SPAction *action, void *data, void */*pdata*/ ) break; case SP_VERB_OBJECT_FLIP_HORIZONTAL: sp_selection_scale_relative(sel, center, Geom::Scale(-1.0, 1.0)); - sp_document_done(sp_desktop_document(dt), SP_VERB_OBJECT_FLIP_HORIZONTAL, - _("Flip horizontally")); + DocumentUndo::done(sp_desktop_document(dt), SP_VERB_OBJECT_FLIP_HORIZONTAL, + _("Flip horizontally")); break; case SP_VERB_OBJECT_FLIP_VERTICAL: sp_selection_scale_relative(sel, center, Geom::Scale(1.0, -1.0)); - sp_document_done(sp_desktop_document(dt), SP_VERB_OBJECT_FLIP_VERTICAL, - _("Flip vertically")); + DocumentUndo::done(sp_desktop_document(dt), SP_VERB_OBJECT_FLIP_VERTICAL, + _("Flip vertically")); break; case SP_VERB_OBJECT_SET_MASK: sp_selection_set_mask(dt, false, false); @@ -1568,7 +1601,7 @@ ZoomVerb::perform(SPAction *action, void *data, void */*pdata*/) gdouble zoom_inc = prefs->getDoubleLimited( "/options/zoomincrement/value", 1.414213562, 1.01, 10 ); - switch (GPOINTER_TO_INT(data)) { + switch (reinterpret_cast(data)) { case SP_VERB_ZOOM_IN: { gint mul = 1 + gobble_key_events( @@ -1682,9 +1715,9 @@ ZoomVerb::perform(SPAction *action, void *data, void */*pdata*/) case SP_VERB_VIEW_MODE_OUTLINE: dt->setDisplayModeOutline(); break; - case SP_VERB_VIEW_MODE_PRINT_COLORS_PREVIEW: - dt->setDisplayModePrintColorsPreview(); - break; +// case SP_VERB_VIEW_MODE_PRINT_COLORS_PREVIEW: +// dt->setDisplayModePrintColorsPreview(); +// break; case SP_VERB_VIEW_MODE_TOGGLE: dt->displayModeToggle(); break; @@ -1731,6 +1764,9 @@ DialogVerb::perform(SPAction *action, void *data, void */*pdata*/) case SP_VERB_DIALOG_FILL_STROKE: dt->_dlg_mgr->showDialog("FillAndStroke"); break; + case SP_VERB_DIALOG_GLYPHS: + dt->_dlg_mgr->showDialog("Glyphs"); + break; case SP_VERB_DIALOG_SWATCHES: dt->_dlg_mgr->showDialog("Swatches"); break; @@ -1787,9 +1823,6 @@ DialogVerb::perform(SPAction *action, void *data, void */*pdata*/) } #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: @@ -1855,8 +1888,8 @@ TutorialVerb::perform(SPAction */*action*/, void *data, void */*pdata*/) { switch (reinterpret_cast(data)) { case SP_VERB_TUTORIAL_BASIC: - /* TRANSLATORS: If you have translated the tutorial-basic.svg file to your language, - then translate this string as "tutorial-basic.LANG.svg" (where LANG is your language + /* TRANSLATORS: If you have translated the tutorial-basic.en.svgz file to your language, + then translate this string as "tutorial-basic.LANG.svgz" (where LANG is your language code); otherwise leave as "tutorial-basic.svg". */ sp_help_open_tutorial(NULL, (gpointer)_("tutorial-basic.svg")); break; @@ -1876,6 +1909,10 @@ TutorialVerb::perform(SPAction */*action*/, void *data, void */*pdata*/) // TRANSLATORS: See "tutorial-basic.svg" comment. sp_help_open_tutorial(NULL, (gpointer)_("tutorial-calligraphy.svg")); break; + case SP_VERB_TUTORIAL_INTERPOLATE: + // TRANSLATORS: See "tutorial-basic.svg" comment. + sp_help_open_tutorial(NULL, (gpointer)_("tutorial-interpolate.svg")); + break; case SP_VERB_TUTORIAL_DESIGN: // TRANSLATORS: See "tutorial-basic.svg" comment. sp_help_open_tutorial(NULL, (gpointer)_("tutorial-elements.svg")); @@ -2021,7 +2058,7 @@ EffectLastVerb::perform(SPAction *action, void *data, void */*pdata*/) if (effect == NULL) return; if (current_view == NULL) return; - switch ((long) data) { + switch (reinterpret_cast(data)) { case SP_VERB_EFFECT_LAST_PREF: effect->prefs(current_view); break; @@ -2086,7 +2123,7 @@ FitCanvasVerb::perform(SPAction *action, void *data, void */*pdata*/) SPDocument *doc = sp_desktop_document(dt); if (!doc) return; - switch ((long) data) { + switch (reinterpret_cast(data)) { case SP_VERB_FIT_CANVAS_TO_SELECTION: verb_fit_canvas_to_selection(dt); break; @@ -2155,22 +2192,22 @@ LockAndHideVerb::perform(SPAction *action, void *data, void */*pdata*/) SPDocument *doc = sp_desktop_document(dt); if (!doc) return; - switch ((long) data) { + switch (reinterpret_cast(data)) { case SP_VERB_UNLOCK_ALL: unlock_all(dt); - sp_document_done(doc, SP_VERB_UNLOCK_ALL, _("Unlock all objects in the current layer")); + DocumentUndo::done(doc, SP_VERB_UNLOCK_ALL, _("Unlock all objects in the current layer")); break; case SP_VERB_UNLOCK_ALL_IN_ALL_LAYERS: unlock_all_in_all_layers(dt); - sp_document_done(doc, SP_VERB_UNLOCK_ALL_IN_ALL_LAYERS, _("Unlock all objects in all layers")); + DocumentUndo::done(doc, SP_VERB_UNLOCK_ALL_IN_ALL_LAYERS, _("Unlock all objects in all layers")); break; case SP_VERB_UNHIDE_ALL: unhide_all(dt); - sp_document_done(doc, SP_VERB_UNHIDE_ALL, _("Unhide all objects in the current layer")); + DocumentUndo::done(doc, SP_VERB_UNHIDE_ALL, _("Unhide all objects in the current layer")); break; case SP_VERB_UNHIDE_ALL_IN_ALL_LAYERS: unhide_all_in_all_layers(dt); - sp_document_done(doc, SP_VERB_UNHIDE_ALL_IN_ALL_LAYERS, _("Unhide all objects in all layers")); + DocumentUndo::done(doc, SP_VERB_UNHIDE_ALL_IN_ALL_LAYERS, _("Unhide all objects in all layers")); break; default: return; @@ -2292,8 +2329,8 @@ Verb *Verb::_base_verbs[] = { N_("Deselect any selected objects or nodes"), INKSCAPE_ICON_EDIT_SELECT_NONE), 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"), INKSCAPE_ICON_PATH_EFFECT_PARAMETER_NEXT), + new EditVerb(SP_VERB_EDIT_NEXT_PATHEFFECT_PARAMETER, "EditNextPathEffectParameter", N_("Next path effect parameter"), + N_("Show next editable path effect parameter"), INKSCAPE_ICON_PATH_EFFECT_PARAMETER_NEXT), /* Selection */ new SelectionVerb(SP_VERB_SELECTION_TO_FRONT, "SelectionToFront", N_("Raise to _Top"), @@ -2377,7 +2414,7 @@ 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"), INKSCAPE_ICON_PATH_BREAK_APART), - new SelectionVerb(SP_VERB_SELECTION_GRIDTILE, "DialogGridArrange", N_("Rows and Columns..."), + new SelectionVerb(SP_VERB_SELECTION_GRIDTILE, "DialogGridArrange", N_("Ro_ws and Columns..."), N_("Arrange selected objects in a table"), INKSCAPE_ICON_DIALOG_ROWS_AND_COLUMNS), /* Layer */ new LayerVerb(SP_VERB_LAYER_NEW, "LayerNew", N_("_Add Layer..."), @@ -2400,7 +2437,7 @@ Verb *Verb::_base_verbs[] = { N_("Raise the current layer"), INKSCAPE_ICON_LAYER_RAISE), new LayerVerb(SP_VERB_LAYER_LOWER, "LayerLower", N_("_Lower Layer"), N_("Lower the current layer"), INKSCAPE_ICON_LAYER_LOWER), - new LayerVerb(SP_VERB_LAYER_DUPLICATE, "LayerDuplicate", N_("Duplicate Current Layer"), + new LayerVerb(SP_VERB_LAYER_DUPLICATE, "LayerDuplicate", N_("D_uplicate Current Layer"), N_("Duplicate an existing layer"), NULL), new LayerVerb(SP_VERB_LAYER_DELETE, "LayerDelete", N_("_Delete Current Layer"), N_("Delete the current layer"), INKSCAPE_ICON_LAYER_DELETE), @@ -2537,7 +2574,7 @@ Verb *Verb::_base_verbs[] = { new ZoomVerb(SP_VERB_TOGGLE_SCROLLBARS, "ToggleScrollbars", N_("Scroll_bars"), N_("Show or hide the canvas scrollbars"), NULL), new ZoomVerb(SP_VERB_TOGGLE_GRID, "ToggleGrid", N_("_Grid"), N_("Show or hide the grid"), INKSCAPE_ICON_SHOW_GRID), new ZoomVerb(SP_VERB_TOGGLE_GUIDES, "ToggleGuides", N_("G_uides"), N_("Show or hide guides (drag from a ruler to create a guide)"), INKSCAPE_ICON_SHOW_GUIDES), - new ZoomVerb(SP_VERB_TOGGLE_SNAPPING, "ToggleSnapGlobal", N_("Snap"), N_("Toggle snapping on or off"), INKSCAPE_ICON_SNAP), + new ZoomVerb(SP_VERB_TOGGLE_SNAPPING, "ToggleSnapGlobal", N_("Snap"), N_("Enable snapping"), INKSCAPE_ICON_SNAP), new ZoomVerb(SP_VERB_ZOOM_NEXT, "ZoomNext", N_("Nex_t Zoom"), N_("Next zoom (from the history of zooms)"), INKSCAPE_ICON_ZOOM_NEXT), new ZoomVerb(SP_VERB_ZOOM_PREV, "ZoomPrev", N_("Pre_vious Zoom"), N_("Previous zoom (from the history of zooms)"), @@ -2565,8 +2602,8 @@ Verb *Verb::_base_verbs[] = { N_("Switch to normal display without filters"), NULL), new ZoomVerb(SP_VERB_VIEW_MODE_OUTLINE, "ViewModeOutline", N_("_Outline"), N_("Switch to outline (wireframe) display mode"), NULL), - new ZoomVerb(SP_VERB_VIEW_MODE_PRINT_COLORS_PREVIEW, "ViewModePrintColorsPreview", N_("_Print Colors Preview"), - N_("Switch to print colors preview mode"), NULL), +// new ZoomVerb(SP_VERB_VIEW_MODE_PRINT_COLORS_PREVIEW, "ViewModePrintColorsPreview", N_("_Print Colors Preview"), +// N_("Switch to print colors preview mode"), NULL), new ZoomVerb(SP_VERB_VIEW_MODE_TOGGLE, "ViewModeToggle", N_("_Toggle"), N_("Toggle between normal and outline display modes"), NULL), @@ -2592,7 +2629,9 @@ Verb *Verb::_base_verbs[] = { new DialogVerb(SP_VERB_DIALOG_METADATA, "DialogMetadata", N_("Document _Metadata..."), N_("Edit document metadata (to be saved with the document)"), INKSCAPE_ICON_DOCUMENT_METADATA ), new DialogVerb(SP_VERB_DIALOG_FILL_STROKE, "DialogFillStroke", N_("_Fill and Stroke..."), - N_("Edit objects' colors, gradients, stroke width, arrowheads, dash patterns..."), INKSCAPE_ICON_DIALOG_FILL_AND_STROKE), + N_("Edit objects' colors, gradients, arrowheads, and other fill and stroke properties..."), INKSCAPE_ICON_DIALOG_FILL_AND_STROKE), + new DialogVerb(SP_VERB_DIALOG_GLYPHS, "DialogGlyphs", N_("Glyphs..."), + N_("Select characters from a glyphs palette"), GTK_STOCK_SELECT_FONT), // TRANSLATORS: "Swatches" means: color samples new DialogVerb(SP_VERB_DIALOG_SWATCHES, "DialogSwatches", N_("S_watches..."), N_("Select colors from a swatches palette"), GTK_STOCK_SELECT_COLOR), @@ -2630,8 +2669,6 @@ 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"), INKSCAPE_ICON_DIALOG_INPUT_DEVICES), - new DialogVerb(SP_VERB_DIALOG_INPUT2, "DialogInput2", N_("_Input Devices (new)..."), - N_("Configure extended input devices, such as a graphics tablet"), INKSCAPE_ICON_DIALOG_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..."), @@ -2667,6 +2704,8 @@ Verb *Verb::_base_verbs[] = { N_("Using bitmap tracing"), NULL/*"tutorial_tracing"*/), new TutorialVerb(SP_VERB_TUTORIAL_CALLIGRAPHY, "TutorialsCalligraphy", N_("Inkscape: _Calligraphy"), N_("Using the Calligraphy pen tool"), NULL), + new TutorialVerb(SP_VERB_TUTORIAL_INTERPOLATE, "TutorialsInterpolate", N_("Inkscape: _Interpolate"), + N_("Using the interpolate extension"), NULL/*"tutorial_interpolate"*/), new TutorialVerb(SP_VERB_TUTORIAL_DESIGN, "TutorialsDesign", N_("_Elements of Design"), N_("Principles of design in the tutorial form"), NULL/*"tutorial_design"*/), new TutorialVerb(SP_VERB_TUTORIAL_TIPS, "TutorialsTips", N_("_Tips and Tricks"), @@ -2732,4 +2771,4 @@ Verb::list (void) { fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :