Review Request 118457: Typesafe strings for KUndo2Command

Chusslove Illich caslav.ilic at gmx.net
Fri Jun 13 08:52:21 BST 2014



> On June 13, 2014, 1:31 a.m., Albert Astals Cid wrote:
> > Honestly this looks ultra scary. I probably won't have time in 4 days to review this but if it's not too urgent i'd like to get some time to understand your problem and see if this is really the simplest solution because it seems like a huge change.

The proper solution would be to add new format flag to Gettext, named say kde-undo-format, and then invoke xgettext with options --kde -kkundo2_i18n --flag=kundo2_i18n:1:kde-undo-format. This would make the PO messages have the kde-undo-format flag, and avoid the original kludge of putting format information into context string.

Failing that, I don't see a better solution than the proposed. Except for no solution at all, of course: if programmers didn't remember to set the special context, will they remember to use the special call? To me, the only extra safety with the call is that one cannot make a typo after remembering that special handling is needed.


- Chusslove


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/118457/#review59927
-----------------------------------------------------------


On June 3, 2014, 1:41 p.m., Dmitry Kazakov wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/118457/
> -----------------------------------------------------------
> 
> (Updated June 3, 2014, 1:41 p.m.)
> 
> 
> Review request for Calligra and Localization and Translation (l10n).
> 
> 
> Repository: calligra
> 
> 
> Description
> -------
> 
> Some languages (e.g. Russian) have complications related to undo messages (strings). The action string will be shown in two places: in the undo history docker and the message in undo/redo menu actions. The former one should be either a verb or a noun in nominative, the latter --- a noun in accusative. To achieve this, the translators use Magic Split functionality. When the translator needs two translations, he/she splits them with '\n' symbol and the magic string will recognize it and show in the widgets respectively. The problem is that such strings must be used inside KUndo2Command only! Otherwise the '\n' thing will be visible to the user. More than that, to let the translator know that the string is used in KUndo2Command, the developer must use "(qtundo-format)" context.
> 
> Both requirements were not satisfied in Calligra, so this patch introduces the way of keeping them satisfied automatically.
> 
> Now KUndo2Command cannot accept a usual QString as the operation's text, it accepts only KUndo2MagicString class, which is not convertible from QString. This class is constructed with a special kundo2_i18n() function, which is a full equivalent to a usual ki18n() thing, but returns a string with "(qtundo-format)" properly set. It ensures that all the strings passed to a KUndo2Command are properly formatted and not used anywhere else. It is guaranteed by static type-checks by the compiler.
> 
> The translator's scripts are corrected to fit new semantics by Alexander Potashev.
> 
> The biggest part of the patch just does regexp substitution of i18n*() into kundo2_i18n*(). The most interesting part is kept in three files:
> 
> ./libs/kundo2magicstring.{cpp,h}
> ./calligra_xgettext.sh
> 
> 
> Diffs
> -----
> 
>   3rdparty/kdgantt/Messages.sh 65aa502 
>   active/Messages.sh c95de84 
>   braindump/Messages.sh 1360bac 
>   braindump/src/View.cpp 9ec4ced 
>   calligra_xgettext.sh PRE-CREATION 
>   extras/calligra/Messages.sh 9e5f146 
>   extras/converter/Messages.sh 8a4ab1f 
>   extras/okularodpgenerator/Messages.sh af34749 
>   filters/Messages.sh f003521 
>   flow/Messages.sh f5af941 
>   karbon/Messages.sh 35db850 
>   karbon/common/commands/KarbonBooleanCommand.cpp 71536ac 
>   karbon/plugins/flattenpath/KarbonPathFlattenCommand.cpp 74a175d 
>   karbon/plugins/refinepath/KarbonPathRefineCommand.cpp bcca68d 
>   karbon/plugins/roundcorners/RoundCornersCommand.cpp ed5263b 
>   karbon/plugins/roundcorners/RoundCornersPlugin.cpp 94da9f3 
>   karbon/plugins/tools/Messages.sh add90f1 
>   karbon/plugins/tools/filterEffectTool/FilterAddCommand.cpp 9faaec1 
>   karbon/plugins/tools/filterEffectTool/FilterRemoveCommand.cpp 26311d0 
>   karbon/plugins/tools/filterEffectTool/FilterStackSetCommand.cpp 25ff087 
>   karbon/plugins/whirlpinch/KarbonWhirlPinchCommand.cpp 4b4598e 
>   karbon/ui/KarbonDocumentMergeCommand.cpp 3a75b5c 
>   karbon/ui/KarbonView.cpp 987b576 
>   karbon/ui/commands/KarbonLayerReorderCommand.cpp f8635e3 
>   karbon/ui/dockers/KarbonLayerDocker.cpp 2dd4191 
>   karbon/ui/dockers/KarbonLayerModel.cpp 0a3ca68 
>   kexi/Messages.sh fe33b54 
>   kexi/formeditor/commands.cpp 42fe425 
>   kexi/plugins/forms/widgets/mapbrowser/Messages.sh 91c9f18 
>   kexi/plugins/forms/widgets/webbrowser/Messages.sh 9cefbf8 
>   kexi/plugins/shapes/relationdesign/Messages.sh f773146 
>   kexi/plugins/tables/kexitabledesignercommands.h afae4ac 
>   kexi/plugins/tables/kexitabledesignercommands.cpp 2680663 
>   kexi/plugins/tables/kexitabledesignerview.cpp 4ba28da 
>   krita/Messages.sh 3a825ca 
>   krita/benchmarks/kis_filter_selections_benchmark.cpp 6c000f2 
>   krita/benchmarks/kis_floodfill_benchmark.cpp d639d85 
>   krita/benchmarks/kis_gradient_benchmark.cpp a23b3cd 
>   krita/benchmarks/kis_low_memory_benchmark.cpp eb31b80 
>   krita/crashreporter/Messages.sh 22e371a 
>   krita/image/commands/kis_change_filter_command.h e9722c1 
>   krita/image/commands/kis_deselect_global_selection_command.cpp 14f7a35 
>   krita/image/commands/kis_image_change_layers_command.h 71f0d6f 
>   krita/image/commands/kis_image_change_layers_command.cpp e6223b0 
>   krita/image/commands/kis_image_command.h 73399b0 
>   krita/image/commands/kis_image_command.cpp d326d4c 
>   krita/image/commands/kis_image_layer_add_command.cpp f1961a6 
>   krita/image/commands/kis_image_layer_move_command.cpp 65b9125 
>   krita/image/commands/kis_image_layer_remove_command.cpp 0b54133 
>   krita/image/commands/kis_image_layer_remove_command_impl.cpp 4c0d4dd 
>   krita/image/commands/kis_image_lock_command.cpp 486d752 
>   krita/image/commands/kis_image_node_lower_command.cpp 5eff8c9 
>   krita/image/commands/kis_image_node_raise_command.cpp 55c44ac 
>   krita/image/commands/kis_image_node_to_bottom_command.cpp 001470f 
>   krita/image/commands/kis_image_node_to_top_command.cpp 08515d6 
>   krita/image/commands/kis_image_set_projection_color_space_command.cpp 8bd0c97 
>   krita/image/commands/kis_layer_command.h 063d01c 
>   krita/image/commands/kis_layer_command.cpp fbfa781 
>   krita/image/commands/kis_layer_props_command.cpp 5d409a8 
>   krita/image/commands/kis_node_command.h 66e044f 
>   krita/image/commands/kis_node_command.cpp ac29b7a 
>   krita/image/commands/kis_node_compositeop_command.cpp e50dd43 
>   krita/image/commands/kis_node_opacity_command.cpp 4573935 
>   krita/image/commands/kis_node_property_list_command.cpp 59c923e 
>   krita/image/commands/kis_reselect_global_selection_command.cpp 56b28cd 
>   krita/image/commands_new/kis_image_resize_command.cpp 8524770 
>   krita/image/commands_new/kis_image_set_resolution_command.cpp 48bcac9 
>   krita/image/commands_new/kis_move_command_common.h e5dfa69 
>   krita/image/commands_new/kis_processing_command.cpp aa650de 
>   krita/image/commands_new/kis_saved_commands.h f8613fe 
>   krita/image/commands_new/kis_saved_commands.cpp 291188a 
>   krita/image/commands_new/kis_update_command.cpp 5e84ee3 
>   krita/image/filter/kis_filter.cc 007fb88 
>   krita/image/kis_image.h 86e0b37 
>   krita/image/kis_image.cc c68ebff 
>   krita/image/kis_indirect_painting_support.h 417f206 
>   krita/image/kis_indirect_painting_support.cpp a268ce1 
>   krita/image/kis_legacy_undo_adapter.h 4c0cea7 
>   krita/image/kis_legacy_undo_adapter.cpp 1d8b86d 
>   krita/image/kis_painter.h 00b4592 
>   krita/image/kis_painter.cc f0cf233 
>   krita/image/kis_post_execution_undo_adapter.h b4771a3 
>   krita/image/kis_post_execution_undo_adapter.cpp c3adcea 
>   krita/image/kis_processing_applicator.h 8fcd90c 
>   krita/image/kis_processing_applicator.cpp ecaaf6f 
>   krita/image/kis_selection_filters.h f42e445 
>   krita/image/kis_selection_filters.cpp 734c986 
>   krita/image/kis_simple_stroke_strategy.h 2760667 
>   krita/image/kis_simple_stroke_strategy.cpp 0f3c40e 
>   krita/image/kis_stroke.h 25e5462 
>   krita/image/kis_stroke.cpp 339f76c 
>   krita/image/kis_stroke_strategy.h d5a9bd9 
>   krita/image/kis_stroke_strategy.cpp 6b045c9 
>   krita/image/kis_stroke_strategy_undo_command_based.h 8d507ee 
>   krita/image/kis_stroke_strategy_undo_command_based.cpp 505b98c 
>   krita/image/kis_strokes_queue.h 0057d63 
>   krita/image/kis_strokes_queue.cpp 044fdfe 
>   krita/image/kis_surrogate_undo_adapter.h c677992 
>   krita/image/kis_surrogate_undo_adapter.cpp 8475fea 
>   krita/image/kis_transaction.h 7219217 
>   krita/image/kis_transaction_data.h 3fb4924 
>   krita/image/kis_transaction_data.cpp 2ba0eba 
>   krita/image/kis_undo_adapter.h b0ba981 
>   krita/image/kis_undo_store.h 10798a5 
>   krita/image/kis_undo_stores.h 0e48ece 
>   krita/image/kis_undo_stores.cpp c33d579 
>   krita/image/kis_update_scheduler.cpp d3246e2 
>   krita/image/processing/kis_crop_processing_visitor.cpp ed44d73 
>   krita/image/processing/kis_mirror_processing_visitor.cpp f881997 
>   krita/image/processing/kis_transform_processing_visitor.cpp 0939fd2 
>   krita/image/recorder/kis_macro_player.cc e7cd36d 
>   krita/image/recorder/kis_recorded_filter_action.cpp 0878c85 
>   krita/image/recorder/kis_recorded_paint_action.cpp 185114d 
>   krita/image/tests/kis_convolution_painter_test.cpp 278da43 
>   krita/image/tests/kis_crop_processing_visitor_test.cpp 4636914 
>   krita/image/tests/kis_paint_device_test.cpp ac3b057 
>   krita/image/tests/kis_painter_test.cpp 7a5810e 
>   krita/image/tests/kis_pixel_selection_test.cpp 0814e43 
>   krita/image/tests/kis_stroke_strategy_undo_command_based_test.cpp f040ef5 
>   krita/image/tests/kis_transaction_test.cpp a45f4d5 
>   krita/image/tests/kis_transform_worker_test.cpp 2650e64 
>   krita/plugins/extensions/colorrange/colorrange.cc b2bcf8e 
>   krita/plugins/extensions/colorrange/dlg_colorrange.cc b2d6279 
>   krita/plugins/extensions/colorspaceconversion/colorspaceconversion.cc 0e23c2b 
>   krita/plugins/extensions/dockers/imagedocker/forms/wdgImageViewPopup.ui e45986e 
>   krita/plugins/extensions/dropshadow/kis_dropshadow.cc c2a0b49 
>   krita/plugins/extensions/gmic/kis_gmic_applicator.h c6c1bd3 
>   krita/plugins/extensions/gmic/kis_gmic_applicator.cpp 51cfe5f 
>   krita/plugins/extensions/gmic/kis_gmic_plugin.cpp a2f7148 
>   krita/plugins/extensions/gmic/kis_import_gmic_processing_visitor.cpp b957e8d 
>   krita/plugins/extensions/gmic/tests/kis_gmic_tests.cpp 958ce1a 
>   krita/plugins/extensions/offsetimage/dlg_offsetimage.cpp 202b79f 
>   krita/plugins/extensions/offsetimage/kis_offset_processing_visitor.cpp d756921 
>   krita/plugins/extensions/offsetimage/offsetimage.h 2ae4174 
>   krita/plugins/extensions/offsetimage/offsetimage.cpp d85aa9a 
>   krita/plugins/extensions/rotateimage/rotateimage.cc eaa0525 
>   krita/plugins/extensions/separate_channels/kis_channel_separator.cc e7a2f66 
>   krita/plugins/filters/imageenhancement/kis_simple_noise_reducer.cpp a5711e7 
>   krita/plugins/filters/tests/kis_all_filter_test.cpp 831e2b0 
>   krita/plugins/filters/unsharp/tests/kis_unsharp_mask_test.cpp eea5571 
>   krita/plugins/formats/bmp/kis_bmp_import.cpp 354a8ae 
>   krita/plugins/formats/exr/exr_converter.cc 99b9e58 
>   krita/plugins/formats/jpeg/kis_jpeg_converter.cc 2b571d4 
>   krita/plugins/formats/pdf/kis_pdf_import.cpp 27fb574 
>   krita/plugins/formats/ppm/kis_ppm_import.cpp df425ce 
>   krita/plugins/formats/psd/psd_loader.cpp fd16697 
>   krita/plugins/formats/tga/kis_tga_import.cpp 531e5fe 
>   krita/plugins/formats/tiff/kis_tiff_converter.cc f89e211 
>   krita/plugins/formats/xcf/kis_xcf_import.cpp aa42e5a 
>   krita/plugins/paintops/filterop/kis_filterop.cpp 1c6e413 
>   krita/plugins/tools/defaulttools/kis_tool_brush.cc c9aa171 
>   krita/plugins/tools/defaulttools/kis_tool_ellipse.cc d911b11 
>   krita/plugins/tools/defaulttools/kis_tool_fill.cc b6d2d35 
>   krita/plugins/tools/defaulttools/kis_tool_gradient.cc dafdcf8 
>   krita/plugins/tools/defaulttools/kis_tool_line.cc 06bd43a 
>   krita/plugins/tools/defaulttools/kis_tool_multihand.cpp 23f0451 
>   krita/plugins/tools/defaulttools/kis_tool_path.cc b4a9d51 
>   krita/plugins/tools/defaulttools/kis_tool_pencil.cc 91f1fb2 
>   krita/plugins/tools/defaulttools/kis_tool_rectangle.cc 9550e45 
>   krita/plugins/tools/defaulttools/strokes/move_selection_stroke_strategy.cpp 2b6a066 
>   krita/plugins/tools/defaulttools/strokes/move_stroke_strategy.cpp 583c055 
>   krita/plugins/tools/selectiontools/kis_tool_select_brush.cc 53d696b 
>   krita/plugins/tools/selectiontools/kis_tool_select_contiguous.cc 1d6ced2 
>   krita/plugins/tools/selectiontools/kis_tool_select_elliptical.cc 4027fe8 
>   krita/plugins/tools/selectiontools/kis_tool_select_outline.cc c8bcd92 
>   krita/plugins/tools/selectiontools/kis_tool_select_path.cc 20541f2 
>   krita/plugins/tools/selectiontools/kis_tool_select_polygonal.cc 3b1fba5 
>   krita/plugins/tools/selectiontools/kis_tool_select_rectangular.cc bd17052 
>   krita/plugins/tools/selectiontools/kis_tool_select_similar.cc a1e382b 
>   krita/plugins/tools/tool_dyna/kis_tool_dyna.cpp 84873d6 
>   krita/plugins/tools/tool_polygon/kis_tool_polygon.cc e658c7a 
>   krita/plugins/tools/tool_polyline/kis_tool_polyline.cc ec308aa 
>   krita/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp e4edb3d 
>   krita/ui/actions/kis_selection_action_factories.cpp 80c6012 
>   krita/ui/canvas/kis_canvas2.h 3ddf25e 
>   krita/ui/canvas/kis_canvas2.cpp ee67006 
>   krita/ui/flake/kis_take_all_shapes_command.cpp 521ff33 
>   krita/ui/kis_document_undo_store.h 48beb79 
>   krita/ui/kis_document_undo_store.cpp 1b4dbb2 
>   krita/ui/kis_layer_manager.cc 83f1432 
>   krita/ui/kis_mask_manager.h ebb536b 
>   krita/ui/kis_mask_manager.cc 4cbe03f 
>   krita/ui/kis_node_commands_adapter.h 182cd65 
>   krita/ui/kis_node_commands_adapter.cpp fccf354 
>   krita/ui/kis_node_manager.h 363cfa1 
>   krita/ui/kis_node_manager.cpp 62449bb 
>   krita/ui/kis_png_converter.cpp f57fd36 
>   krita/ui/kis_selection_manager.cc 035269d 
>   krita/ui/kis_transaction_based_command.h bc79fd1 
>   krita/ui/kis_transaction_based_command.cpp a5b96a7 
>   krita/ui/operations/kis_filter_selection_operation.cpp eb47076 
>   krita/ui/operations/kis_operation.h e7896f5 
>   krita/ui/operations/kis_operation.cpp d2717fc 
>   krita/ui/processing/fill_processing_visitor.cpp e7c2aae 
>   krita/ui/tests/freehand_stroke_test.cpp 9ff53ac 
>   krita/ui/tests/kis_selection_decoration_test.cpp 44f965a8 
>   krita/ui/tool/kis_figure_painting_tool_helper.h bb3a42f 
>   krita/ui/tool/kis_figure_painting_tool_helper.cpp 9ea1b1f 
>   krita/ui/tool/kis_selection_tool_helper.h 9bd9435 
>   krita/ui/tool/kis_selection_tool_helper.cpp 7d1f1d2 
>   krita/ui/tool/kis_tool.cc fc2cc4a 
>   krita/ui/tool/kis_tool_freehand.h 7809e6a 
>   krita/ui/tool/kis_tool_freehand.cc 6a28290 
>   krita/ui/tool/kis_tool_freehand_helper.h 3c37d1f 
>   krita/ui/tool/kis_tool_freehand_helper.cpp eba3a35 
>   krita/ui/tool/kis_tool_multihand_helper.h a62c101 
>   krita/ui/tool/kis_tool_multihand_helper.cpp f6d8df6 
>   krita/ui/tool/kis_tool_shape.h 746f79c 
>   krita/ui/tool/kis_tool_shape.cc 9597a87 
>   krita/ui/tool/strokes/freehand_stroke.h 7b1a75c 
>   krita/ui/tool/strokes/freehand_stroke.cpp 6739425 
>   krita/ui/tool/strokes/kis_filter_stroke_strategy.cpp 6b193e1 
>   krita/ui/tool/strokes/kis_painter_based_stroke_strategy.h bcdeeee 
>   krita/ui/tool/strokes/kis_painter_based_stroke_strategy.cpp 4fb4ed8 
>   libs/Messages.sh d930f85 
>   libs/flake/KoShapePaste.cpp e01a28e 
>   libs/flake/KoToolProxy.cpp 5dfd57e 
>   libs/flake/commands/KoConnectionShapeTypeCommand.cpp 6bee8a5 
>   libs/flake/commands/KoParameterHandleMoveCommand.cpp 7d57e416 
>   libs/flake/commands/KoParameterToPathCommand.cpp 177d35d 
>   libs/flake/commands/KoPathBreakAtPointCommand.cpp ec6617d 
>   libs/flake/commands/KoPathCombineCommand.cpp d8f00d5 
>   libs/flake/commands/KoPathControlPointMoveCommand.cpp f380dc9 
>   libs/flake/commands/KoPathFillRuleCommand.cpp 287e6e4 
>   libs/flake/commands/KoPathPointInsertCommand.cpp 046b320 
>   libs/flake/commands/KoPathPointMergeCommand.cpp 6d9b3e2 
>   libs/flake/commands/KoPathPointMoveCommand.cpp c9a3ff2 
>   libs/flake/commands/KoPathPointRemoveCommand.cpp 6110042 
>   libs/flake/commands/KoPathPointTypeCommand.cpp a997812 
>   libs/flake/commands/KoPathReverseCommand.cpp d076489 
>   libs/flake/commands/KoPathSegmentBreakCommand.cpp 321f875 
>   libs/flake/commands/KoPathSegmentTypeCommand.cpp f8d1efb 
>   libs/flake/commands/KoPathShapeMarkerCommand.cpp f97fed1 
>   libs/flake/commands/KoShapeAlignCommand.cpp 93ec43a 
>   libs/flake/commands/KoShapeBackgroundCommand.cpp bb3d58e 
>   libs/flake/commands/KoShapeClipCommand.cpp 621772a 
>   libs/flake/commands/KoShapeCreateCommand.cpp 55ffb40 
>   libs/flake/commands/KoShapeDeleteCommand.cpp 96b9d67 
>   libs/flake/commands/KoShapeDistributeCommand.cpp bfb1409 
>   libs/flake/commands/KoShapeGroupCommand.cpp 16b2b8e 
>   libs/flake/commands/KoShapeKeepAspectRatioCommand.cpp 97d0b7c 
>   libs/flake/commands/KoShapeLockCommand.cpp 99c3c97 
>   libs/flake/commands/KoShapeMoveCommand.cpp d284f3a 
>   libs/flake/commands/KoShapeRenameCommand.cpp e670e1f 
>   libs/flake/commands/KoShapeReorderCommand.cpp b3502a7 
>   libs/flake/commands/KoShapeRunAroundCommand.cpp cd8b415 
>   libs/flake/commands/KoShapeShadowCommand.cpp eeb416d 
>   libs/flake/commands/KoShapeShearCommand.cpp c9ff448 
>   libs/flake/commands/KoShapeSizeCommand.cpp 0e24ec7 
>   libs/flake/commands/KoShapeStrokeCommand.cpp 6c5df4a 
>   libs/flake/commands/KoShapeTransparencyCommand.cpp e9ba0a0 
>   libs/flake/commands/KoShapeUnclipCommand.cpp 0cf9272 
>   libs/flake/commands/KoShapeUngroupCommand.cpp a3b5dc2 
>   libs/flake/commands/KoSubpathJoinCommand.cpp a68ec58 
>   libs/flake/commands/KoSubpathRemoveCommand.cpp 79894f0 
>   libs/flake/tools/KoPathSegmentChangeStrategy.cpp b6c8fe7 
>   libs/kopageapp/KoPADocumentModel.cpp b6bb071 
>   libs/kopageapp/KoPADocumentStructureDocker.cpp 587263b 
>   libs/kopageapp/KoPAPastePage.cpp 7c843c9 
>   libs/kopageapp/KoPAView.cpp 9fa7d31 
>   libs/kopageapp/commands/KoPAChangeMasterPageCommand.cpp 384c784 
>   libs/kopageapp/commands/KoPAChangePageLayoutCommand.cpp 5cc79bb 
>   libs/kopageapp/commands/KoPADisplayMasterBackgroundCommand.cpp 8f558da 
>   libs/kopageapp/commands/KoPADisplayMasterShapesCommand.cpp 05f3a5a 
>   libs/kopageapp/commands/KoPAPageDeleteCommand.cpp 972f9e9 
>   libs/kopageapp/commands/KoPAPageInsertCommand.cpp 99b7ec3 
>   libs/kopageapp/commands/KoPAPageMoveCommand.cpp 6452be5 
>   libs/kopageapp/tools/backgroundTool/KoPABackgroundToolWidget.cpp f6ff2cd 
>   libs/koproperty/Messages.sh 713514a 
>   libs/kotext/KoTextEditor.h 27c86fa 
>   libs/kotext/KoTextEditor.cpp efc9dd0 
>   libs/kotext/KoTextEditor_format.cpp dacc19a 
>   libs/kotext/KoTextEditor_p.h 0368cb6 
>   libs/kotext/KoTextEditor_undo.cpp fcc1f5a 
>   libs/kotext/changetracker/KoChangeTracker.h 6c0c729 
>   libs/kotext/changetracker/KoChangeTracker.cpp 31a2c32 
>   libs/kotext/changetracker/KoChangeTrackerElement.h 709f560 
>   libs/kotext/changetracker/KoChangeTrackerElement.cpp cef4c01 
>   libs/kotext/commands/AddAnnotationCommand.cpp 9011c55 
>   libs/kotext/commands/AddTextRangeCommand.cpp 9c4c6cc 
>   libs/kotext/commands/ChangeAnchorPropertiesCommand.cpp 384c32d 
>   libs/kotext/commands/ChangeListCommand.cpp ff064b0 
>   libs/kotext/commands/ChangeStylesCommand.cpp ed99fad 
>   libs/kotext/commands/ChangeStylesMacroCommand.cpp f4ddab4 
>   libs/kotext/commands/ChangeTrackedDeleteCommand.cpp 4940020 
>   libs/kotext/commands/DeleteCommand.cpp 5cb92527 
>   libs/kotext/commands/DeleteTableColumnCommand.cpp 793f10a 
>   libs/kotext/commands/DeleteTableRowCommand.cpp 96f3bfd 
>   libs/kotext/commands/InsertNoteCommand.cpp 30fa0df 
>   libs/kotext/commands/InsertTableColumnCommand.cpp 5d0537a 
>   libs/kotext/commands/InsertTableRowCommand.cpp 3802eab 
>   libs/kotext/commands/ListItemNumberingCommand.cpp 3f21884 
>   libs/kotext/commands/ParagraphFormattingCommand.cpp 39e4bd1 
>   libs/kotext/commands/ResizeTableCommand.cpp 7775b93 
>   libs/kotext/commands/TextPasteCommand.cpp d44887b 
>   libs/kundo2/CMakeLists.txt 31d0a07 
>   libs/kundo2/kundo2magicstring.h PRE-CREATION 
>   libs/kundo2/kundo2magicstring.cpp PRE-CREATION 
>   libs/kundo2/kundo2stack.h 30ff215 
>   libs/kundo2/kundo2stack.cpp 2b644a9 
>   libs/kundo2/kundo2stack_p.h 2c4f9a9 
>   libs/main/KoDocument.h fcdc7e8 
>   libs/main/KoDocument.cpp 051a81d 
>   plan/Messages.sh 8434481 
>   plan/kptmaindocument.cpp 1dad4dd 
>   plan/kptview.cpp d1dea4f 
>   plan/libs/Messages.sh cb1bd9f 
>   plan/libs/kernel/kptcommand.h 9286558 
>   plan/libs/kernel/kptcommand.cpp 691529d 
>   plan/libs/models/kptaccountsmodel.cpp 28afeba 
>   plan/libs/models/kptcalendarmodel.cpp 3717b30 
>   plan/libs/models/kptcommonstrings.h 84d2780 
>   plan/libs/models/kptcommonstrings.cpp 42c176e 
>   plan/libs/models/kptdocumentmodel.cpp 72561c1 
>   plan/libs/models/kptnodeitemmodel.cpp b321253 
>   plan/libs/models/kptrelationmodel.cpp 364af66 
>   plan/libs/models/kptresourcemodel.cpp c6086e0 
>   plan/libs/models/kptschedulemodel.cpp f61c99c 
>   plan/libs/models/kpttaskstatusmodel.cpp ba169a9 
>   plan/libs/ui/kptcalendareditor.cpp 76a560f 
>   plan/libs/ui/kptdocumentspanel.cpp 3ae5b7d 
>   plan/libs/ui/kptintervaledit.cpp 40b50f9 
>   plan/libs/ui/kptlocaleconfigmoneydialog.cpp c21dfc7 
>   plan/libs/ui/kptmainprojectdialog.cpp d6f1b53 
>   plan/libs/ui/kptmainprojectpanel.cpp d3a9d8c 
>   plan/libs/ui/kptmilestoneprogresspanel.cpp 33cdc6f 
>   plan/libs/ui/kptperteditor.cpp 4c426dc 
>   plan/libs/ui/kptrelationdialog.cpp 499be00 
>   plan/libs/ui/kptrequestresourcespanel.cpp d62a1ea 
>   plan/libs/ui/kptresourcedialog.cpp 9608316 
>   plan/libs/ui/kptscheduleeditor.cpp 41a4d13 
>   plan/libs/ui/kptstandardworktimedialog.cpp ff6b5df 
>   plan/libs/ui/kptsummarytaskdialog.cpp 96ad249 
>   plan/libs/ui/kptsummarytaskgeneralpanel.cpp d71daa8 
>   plan/libs/ui/kpttaskcostpanel.cpp de9f3ef 
>   plan/libs/ui/kpttaskdescriptiondialog.cpp 3b84ebd 
>   plan/libs/ui/kpttaskdialog.cpp eabef90 
>   plan/libs/ui/kpttaskeditor.cpp 5067b7d 
>   plan/libs/ui/kpttaskgeneralpanel.cpp b6cd2b8 
>   plan/libs/ui/kpttaskprogressdialog.cpp 3e4993d 
>   plan/libs/ui/kpttaskprogresspanel.cpp 7e62971 
>   plan/libs/ui/kptwbsdefinitionpanel.cpp f6a439b 
>   plan/libs/ui/reports/reportview.h 9c01129 
>   plan/libs/ui/reports/reportview.cpp e3f090c 
>   plan/plugins/schedulers/rcps/Messages.sh 156afee 
>   plan/plugins/schedulers/tj/Messages.sh 248ce0e 
>   plan/plugins/scripting/Messages.sh ee13f05 
>   plan/plugins/scripting/Module.h 0decd34 
>   plan/plugins/scripting/Module.cpp 11d1567 
>   plan/plugins/scripting/Project.cpp 098c5a8 
>   plan/plugins/scripting/Resource.cpp 7b5044b 
>   plan/workpackage/Messages.sh 4e2f188 
>   plan/workpackage/packagesettings.cpp cc0b215 
>   plan/workpackage/part.cpp 196d844 
>   plan/workpackage/taskcompletiondialog.cpp 86ca81a 
>   plan/workpackage/taskworkpackagemodel.cpp 70bba61 
>   plan/workpackage/view.cpp 50b9d28 
>   plan/workpackage/workpackage.h 94bfe39 
>   plan/workpackage/workpackage.cpp af485bf 
>   plugins/artistictextshape/AddTextRangeCommand.cpp 316c572 
>   plugins/artistictextshape/ArtisticTextTool.cpp a95d7b8 
>   plugins/artistictextshape/AttachTextToPathCommand.cpp 8f089b0 
>   plugins/artistictextshape/ChangeTextAnchorCommand.cpp 09097d9 
>   plugins/artistictextshape/ChangeTextFontCommand.cpp d463ef0 
>   plugins/artistictextshape/ChangeTextOffsetCommand.cpp daecd54 
>   plugins/artistictextshape/DetachTextFromPathCommand.cpp 0c9e093 
>   plugins/artistictextshape/Messages.sh bfe5ea5 
>   plugins/artistictextshape/RemoveTextRangeCommand.cpp fde39c8 
>   plugins/artistictextshape/ReplaceTextRangeCommand.cpp 52f8f16 
>   plugins/chartshape/Messages.sh 9ce6052 
>   plugins/chartshape/commands/AxisCommand.cpp 398e803 
>   plugins/chartshape/commands/ChartTextShapeCommand.cpp 767038b 
>   plugins/chartshape/commands/ChartTypeCommand.cpp 311ea63 
>   plugins/chartshape/commands/DatasetCommand.cpp 53f8e00 
>   plugins/chartshape/commands/LegendCommand.cpp ad8e2e0 
>   plugins/colorengines/Messages.sh 852bafb 
>   plugins/commentshape/Messages.sh 97a4f4d 
>   plugins/defaultTools/Messages.sh 9f9d724 
>   plugins/defaultTools/defaulttool/DefaultTool.cpp 453a727 
>   plugins/defaultTools/defaulttool/DefaultToolTransformWidget.cpp fd04956 
>   plugins/defaultTools/defaulttool/DefaultToolWidget.cpp 7f747b1 
>   plugins/defaultTools/defaulttool/ShapeResizeStrategy.cpp 73ad5a9 
>   plugins/defaultTools/defaulttool/ShapeRotateStrategy.cpp 39abcf9 
>   plugins/defaultTools/defaulttool/ShapeShearStrategy.cpp 0c0f17f 
>   plugins/dockers/Messages.sh 703876e 
>   plugins/formulashape/FormulaCommand.cpp 72c2634 
>   plugins/formulashape/FormulaEditor.cpp 73da180 
>   plugins/formulashape/Messages.sh 2a7d6b7 
>   plugins/kexi/spreadsheet/Messages.sh 0ca8b1f 
>   plugins/musicshape/Messages.sh a43f557 
>   plugins/musicshape/commands/AddBarsCommand.cpp 425548f 
>   plugins/musicshape/commands/AddDotCommand.cpp 64a89fe 
>   plugins/musicshape/commands/AddNoteCommand.cpp c82c86d 
>   plugins/musicshape/commands/AddPartCommand.cpp dde9e23 
>   plugins/musicshape/commands/ChangePartDetailsCommand.cpp 617e128 
>   plugins/musicshape/commands/CreateChordCommand.cpp b3f1d8e 
>   plugins/musicshape/commands/MakeRestCommand.cpp 3aa80af 
>   plugins/musicshape/commands/RemoveBarCommand.cpp eacdf05 
>   plugins/musicshape/commands/RemoveChordCommand.cpp 356d3ce 
>   plugins/musicshape/commands/RemoveNoteCommand.cpp 0c41c91 
>   plugins/musicshape/commands/RemovePartCommand.cpp 86b1eba 
>   plugins/musicshape/commands/RemoveStaffElementCommand.cpp 7777f62 
>   plugins/musicshape/commands/SetAccidentalsCommand.cpp e7d3e76 
>   plugins/musicshape/commands/SetClefCommand.cpp 57f8f97 
>   plugins/musicshape/commands/SetKeySignatureCommand.cpp 54dafdc 
>   plugins/musicshape/commands/SetTimeSignatureCommand.cpp 51d19d9 
>   plugins/musicshape/commands/ToggleTiedNoteCommand.cpp f496e49 
>   plugins/pathshapes/Messages.sh 1b84744 
>   plugins/pathshapes/ellipse/EllipseShapeConfigCommand.cpp 9e34e92 
>   plugins/pathshapes/rectangle/RectangleShapeConfigCommand.cpp 1b7d697 
>   plugins/pathshapes/spiral/SpiralShapeConfigCommand.cpp 4e0ee7d 
>   plugins/pathshapes/star/StarShapeConfigCommand.cpp 9a6b309 
>   plugins/pictureshape/ChangeImageCommand.cpp 0608b41 
>   plugins/pictureshape/ClipCommand.cpp 2581bd8 
>   plugins/pictureshape/Messages.sh 4c74647 
>   plugins/pluginshape/Messages.sh f4e28e5 
>   plugins/reporting/barcode/Messages.sh f15bbdb 
>   plugins/reporting/chart/Messages.sh f67b19f 
>   plugins/reporting/maps/Messages.sh 6c9f48d 
>   plugins/reporting/web/Messages.sh 14620c9 
>   plugins/semanticitems/contact/Messages.sh 046c5d1 
>   plugins/semanticitems/event/Messages.sh 4e1b6a3 
>   plugins/semanticitems/location/Messages.sh 8f6ea31 
>   plugins/staging/googledocs/Messages.sh 3ec62f6 
>   plugins/staging/pivottables/Messages.sh 702dc96 
>   plugins/staging/templateshape/ChangeSomethingCommand.cpp d098cd4 
>   plugins/staging/templateshape/Messages.sh d151821 
>   plugins/staging/threedshape/Messages.sh 7bc171f 
>   plugins/textediting/autocorrection/Messages.sh 83e4a1c 
>   plugins/textediting/changecase/Messages.sh 9e11a76 
>   plugins/textediting/spellcheck/Messages.sh f161b0e 
>   plugins/textediting/thesaurus/Messages.sh c1f47f5 
>   plugins/textshape/Messages.sh 4e9b8fc 
>   plugins/textshape/TextTool.cpp 2bf8787 
>   plugins/textshape/commands/AcceptChangeCommand.cpp 0d9adcc 
>   plugins/textshape/commands/AutoResizeCommand.cpp 244d95e 
>   plugins/textshape/commands/ChangeListLevelCommand.cpp fdb6df5 
>   plugins/textshape/commands/RejectChangeCommand.cpp 5594802 
>   plugins/textshape/commands/ShowChangesCommand.cpp 851b8ce 
>   plugins/textshape/dialogs/FontDia.cpp 5e0b7c2 
>   plugins/textshape/dialogs/TrackedChangeModel.cpp e270173 
>   plugins/variables/Messages.sh 6ab9b88 
>   plugins/vectorshape/ChangeVectorDataCommand.cpp c98b4c9 
>   plugins/vectorshape/Messages.sh 4fd90d5 
>   plugins/videoshape/ChangeVideoCommand.cpp c916744 
>   plugins/videoshape/Messages.sh 7a67cd8 
>   sheets/Cell.h 2d85a81 
>   sheets/Messages.sh b7cf8ef 
>   sheets/commands/ApplyFilterCommand.cpp e76b50f 
>   sheets/commands/AutoFillCommand.cpp 984d04a 
>   sheets/commands/AutoFilterCommand.cpp 360fe46 
>   sheets/commands/AutoFormatCommand.cpp 3c67acf 
>   sheets/commands/BorderColorCommand.cpp b652cea 
>   sheets/commands/CommentCommand.cpp 7b8513b 
>   sheets/commands/ConditionCommand.cpp 8124a9d 
>   sheets/commands/DataManipulators.cpp 1f31536 
>   sheets/commands/DeleteCommand.cpp d7c8d2d 
>   sheets/commands/IndentationCommand.cpp f9409a8 
>   sheets/commands/LinkCommand.cpp 6e871f4 
>   sheets/commands/MergeCommand.h 36856af 
>   sheets/commands/MergeCommand.cpp 583a374 
>   sheets/commands/NamedAreaCommand.cpp d5712ff 
>   sheets/commands/PrecisionCommand.cpp dabb5c0 
>   sheets/commands/RowColumnManipulators.h 2761143 
>   sheets/commands/RowColumnManipulators.cpp b6297cd 
>   sheets/commands/SheetCommands.cpp 54d485e 
>   sheets/commands/SortManipulator.cpp 524d27b 
>   sheets/commands/SpellCheckCommand.cpp 8b8997f 
>   sheets/commands/StyleCommand.cpp 0d3127e 
>   sheets/commands/ValidityCommand.cpp 1620710 
>   sheets/dialogs/AddNamedAreaDialog.cpp b3a54a5 
>   sheets/dialogs/AngleDialog.cpp 7185037 
>   sheets/dialogs/CSVDialog.cpp ac218e6 
>   sheets/dialogs/CommentDialog.cpp 6f5e794 
>   sheets/dialogs/ConsolidateDialog.cpp 5b9f1fe 
>   sheets/dialogs/DatabaseDialog.cpp 324a025 
>   sheets/dialogs/LayoutDialog.cpp 0d9c42f 
>   sheets/dialogs/NamedAreaDialog.cpp 1762132 
>   sheets/dialogs/ShowDialog.cpp 6512cde 
>   sheets/interfaces/ViewAdaptor.cpp 0b0bfa0 
>   sheets/part/View.cpp 2ad4bc9 
>   sheets/part/commands/DefinePrintRangeCommand.cpp 5b1e6dc 
>   sheets/part/commands/PageLayoutCommand.cpp 1370c6c 
>   sheets/part/dialogs/PageLayoutDialog.cpp 7800fb3 
>   sheets/plugins/calendar/CalendarTool.cpp 39c8cb8 
>   sheets/plugins/calendar/Messages.sh b4e9aee 
>   sheets/plugins/scripting/Messages.sh 379e2ea 
>   sheets/plugins/scripting/ScriptingWriter.h 2b4b9a7 
>   sheets/plugins/solver/Messages.sh 84298a3 
>   sheets/shape/Messages.sh 61aceed 
>   sheets/ui/CellToolBase.cpp 9c32002 
>   sheets/ui/CellToolBase_p.cpp 07b65c5 
>   stage/Messages.sh 3ba663a 
>   stage/part/KPrPicturesImport.cpp 1900dfb 
>   stage/part/commands/KPrAddCustomSlideShowCommand.cpp 3db8c71 
>   stage/part/commands/KPrAnimationCreateCommand.cpp 769435f 
>   stage/part/commands/KPrAnimationEditNodeTypeCommand.cpp d072a3b 
>   stage/part/commands/KPrAnimationRemoveCommand.cpp 206ee15 
>   stage/part/commands/KPrDelCustomSlideShowCommand.cpp f6da6e1 
>   stage/part/commands/KPrDeleteSlidesCommand.cpp 1f36607 
>   stage/part/commands/KPrEditAnimationTimeLineCommand.cpp 6a8181e 
>   stage/part/commands/KPrEditCustomSlideShowsCommand.cpp dd485ed 
>   stage/part/commands/KPrPageEffectSetCommand.cpp 0d1042e 
>   stage/part/commands/KPrRenameCustomSlideShowCommand.cpp a1f135b 
>   stage/part/commands/KPrReorderAnimationCommand.cpp 6d2d7ad 
>   stage/part/pagelayout/KPrPlaceholders.cpp eca83d3 
>   stage/part/tools/KPrPlaceholderTool.cpp ceeeafd 
>   stage/part/tools/animationtool/KPrPageEffectDocker.cpp d4f02f8 
>   stage/plugins/eventactions/sound/KPrSoundEventActionWidget.cpp 6ba7acb 
>   words/Messages.sh c9474f3 
>   words/part/KWView.cpp b280d50 
>   words/part/commands/KWChangePageStyleCommand.cpp c4be99a 
>   words/part/commands/KWFrameCreateCommand.cpp 4e35095 
>   words/part/commands/KWFrameDeleteCommand.cpp c2f289c 
>   words/part/commands/KWNewPageStyleCommand.cpp 0ae3e53 
>   words/part/commands/KWPageStylePropertiesCommand.cpp bc0fc18 
>   words/part/commands/KWShapeCreateCommand.cpp e88af08 
>   words/part/dialogs/KWFrameDialog.cpp 60e3fc2 
>   words/part/dialogs/KWPageSettingsDialog.cpp e046ac6 
>   words/plugins/scripting/Messages.sh ef1184a 
> 
> Diff: https://git.reviewboard.kde.org/r/118457/diff/
> 
> 
> Testing
> -------
> 
> All the checks are static so I just compiled the whole Calligra.
> 
> 
> Thanks,
> 
> Dmitry Kazakov
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/calligra-devel/attachments/20140613/6b7c553a/attachment.htm>


More information about the calligra-devel mailing list