Git commit ecd17f1d96d1861bb3783d2cda465e526d1bfed2 by Sven Langkamp. Committed on 28/07/2015 at 19:17. Pushed by langkamp into branch 'calligra/2.9'. added convert to shape for selections M +2 -1 krita/krita.rc M +26 -0 krita/ui/actions/kis_selection_action_factories.cpp M +6 -0 krita/ui/actions/kis_selection_action_factories.h M +1 -1 krita/ui/flake/kis_shape_controller.h M +11 -0 krita/ui/kis_selection_manager.cc M +2 -1 krita/ui/kis_selection_manager.h http://commits.kde.org/calligra/ecd17f1d96d1861bb3783d2cda465e526d1bfed2 diff --git a/krita/krita.rc b/krita/krita.rc index 59118b7..4ee1ad1 100644 --- a/krita/krita.rc +++ b/krita/krita.rc @@ -2,7 +2,7 @@ @@ -218,6 +218,7 @@ xsi:schemaLocation=3D"http://www.kde.org/standards/kxml= gui/1.0 http://www.kde.org + diff --git a/krita/ui/actions/kis_selection_action_factories.cpp b/krita/ui= /actions/kis_selection_action_factories.cpp index 8853a78..aa2b247 100644 --- a/krita/ui/actions/kis_selection_action_factories.cpp +++ b/krita/ui/actions/kis_selection_action_factories.cpp @@ -37,6 +37,7 @@ #include #include #include +#include = #include "KisViewManager.h" #include "kis_canvas_resource_provider.h" @@ -59,6 +60,8 @@ #include "kis_selection_filters.h" #include "kis_shape_selection.h" #include "KisPart.h" +#include "kis_shape_layer.h" +#include = #include #include @@ -507,3 +510,26 @@ void KisShapesToVectorSelectionActionFactory::run(KisV= iewManager* view) KisShapeSelectionPaste paste(view); paste.paste(KoOdf::Text, mimeData); } + +void KisSelectionToShapeActionFactory::run(KisViewManager *view) +{ + KisSelectionSP selection =3D view->selection(); + + if (!selection->outlineCacheValid()) { + + return; + } + + QPainterPath selectionOutline =3D selection->outlineCache(); + QTransform transform =3D view->canvasBase()->coordinatesConverter()->i= mageToDocumentTransform(); + + KoShape *shape =3D KoPathShape::createShapeFromPainterPath(transform.m= ap(selectionOutline)); + shape->setShapeId(KoPathShapeId); + = + KoColor fgColor =3D view->canvasBase()->resourceManager()->resource(Ko= CanvasResourceManager::ForegroundColor).value(); + KoShapeStroke* border =3D new KoShapeStroke(1.0, fgColor.toQColor()); + shape->setStroke(border); + + view->document()->shapeController()->addShape(shape); +} + diff --git a/krita/ui/actions/kis_selection_action_factories.h b/krita/ui/a= ctions/kis_selection_action_factories.h index dda0142..6c4fdbf 100644 --- a/krita/ui/actions/kis_selection_action_factories.h +++ b/krita/ui/actions/kis_selection_action_factories.h @@ -113,5 +113,11 @@ struct KRITAUI_EXPORT KisShapesToVectorSelectionAction= Factory : public KisNoPara void run(KisViewManager *view); }; = +struct KRITAUI_EXPORT KisSelectionToShapeActionFactory : public KisNoParam= eterActionFactory { + KisSelectionToShapeActionFactory() : KisNoParameterActionFactory("sele= ction-to-shape-action") {} + void run(KisViewManager *view); +}; + + = #endif /* __KIS_SELECTION_ACTION_FACTORIES_H */ diff --git a/krita/ui/flake/kis_shape_controller.h b/krita/ui/flake/kis_sha= pe_controller.h index 6b23e63..b25e38d 100644 --- a/krita/ui/flake/kis_shape_controller.h +++ b/krita/ui/flake/kis_shape_controller.h @@ -72,7 +72,7 @@ Q_SIGNALS: void selectionContentChanged(); void currentLayerChanged(const KoShapeLayer*); = -protected: +public: void addShape(KoShape* shape); void removeShape(KoShape* shape); = diff --git a/krita/ui/kis_selection_manager.cc b/krita/ui/kis_selection_man= ager.cc index df11580..d9e1dac 100644 --- a/krita/ui/kis_selection_manager.cc +++ b/krita/ui/kis_selection_manager.cc @@ -246,6 +246,11 @@ void KisSelectionManager::setup(KisActionManager* acti= onManager) actionManager->addAction("convert_shapes_to_vector_selection", action); connect(action, SIGNAL(triggered()), SLOT(convertShapesToVectorSelecti= on())); = + action =3D new KisAction(i18nc("@action:inmenu", "&Convert to Shape"),= this); + action->setActivationFlags(KisAction::PIXEL_SELECTION_WITH_PIXELS); + actionManager->addAction("convert_selection_to_shape", action); + connect(action, SIGNAL(triggered()), SLOT(convertToShape())); = + m_toggleSelectionOverlayMode =3D new KisAction(i18nc("@action:inmenu"= , "&Toggle Selection Display Mode"), this); actionManager->addAction("toggle-selection-overlay-mode", m_toggleSele= ctionOverlayMode); connect(m_toggleSelectionOverlayMode, SIGNAL(triggered()), SLOT(slotTo= ggleSelectionDecoration())); @@ -476,6 +481,12 @@ void KisSelectionManager::convertShapesToVectorSelecti= on() factory.run(m_view); } = +void KisSelectionManager::convertToShape() +{ + KisSelectionToShapeActionFactory factory; + factory.run(m_view); +} + void KisSelectionManager::clear() { KisClearActionFactory factory; diff --git a/krita/ui/kis_selection_manager.h b/krita/ui/kis_selection_mana= ger.h index 1a1142e..bac1a65 100644 --- a/krita/ui/kis_selection_manager.h +++ b/krita/ui/kis_selection_manager.h @@ -95,7 +95,8 @@ public Q_SLOTS: void reselect(); void convertToVectorSelection(); void convertShapesToVectorSelection(); - + void convertToShape(); + = void copySelectionToNewLayer(); void toggleDisplaySelection(); =20