本文整理汇总了C++中KoSelection类的典型用法代码示例。如果您正苦于以下问题:C++ KoSelection类的具体用法?C++ KoSelection怎么用?C++ KoSelection使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了KoSelection类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: debugView
void KarbonView::dropEvent( QDropEvent *e )
{
debugView("KarbonView::dropEvent()");
//Accepts QColor - from Color Manager's KColorPatch
QColor color = KColorMimeData::fromMimeData( e->mimeData() );
if ( color.isValid() )
{
KoSelection * selection = d->canvas->shapeManager()->selection();
if( ! selection )
return;
if( ! part() )
return;
if( d->canvas->resourceProvider()->intResource( Karbon::ActiveStyle ) == Karbon::Foreground )
{
QList<KoShapeBorderModel*> borders;
QList<KoShape*> selectedShapes = selection->selectedShapes();
foreach( KoShape * shape, selectedShapes )
{
KoLineBorder * border = dynamic_cast<KoLineBorder*>( shape->border() );
KoLineBorder * newBorder = 0;
if( border )
{
newBorder = new KoLineBorder( *border );
newBorder->setColor( color );
}
else
{
newBorder = new KoLineBorder( 1.0, color );
}
borders.append( newBorder );
}
示例2: canvas
void KarbonCalligraphyTool::updateSelectedPath()
{
KoPathShape *oldSelectedPath = m_selectedPath; // save old value
KoSelection *selection = canvas()->shapeManager()->selection();
// null pointer if it the selection isn't a KoPathShape
// or if the selection is empty
m_selectedPath =
dynamic_cast<KoPathShape *>(selection->firstSelectedShape());
// or if it's a KoPathShape but with no or more than one subpaths
if (m_selectedPath && m_selectedPath->subpathCount() != 1) {
m_selectedPath = 0;
}
// or if there ora none or more than 1 shapes selected
if (selection->count() != 1) {
m_selectedPath = 0;
}
// emit signal it there wasn't a selected path and now there is
// or the other way around
if ((m_selectedPath != 0) != (oldSelectedPath != 0)) {
emit pathSelectedChanged(m_selectedPath != 0);
}
}
示例3: Q_D
void KoCreatePathTool::addPathShape(KoPathShape *pathShape)
{
Q_D(KoCreatePathTool);
KoPathShape *startShape = 0;
KoPathShape *endShape = 0;
pathShape->normalize();
// check if existing start/end points are still valid
d->existingStartPoint.validate(canvas());
d->existingEndPoint.validate(canvas());
pathShape->setStroke(createStroke());
if (d->connectPaths(pathShape, d->existingStartPoint, d->existingEndPoint)) {
if (d->existingStartPoint.isValid())
startShape = d->existingStartPoint.path;
if (d->existingEndPoint.isValid() && d->existingEndPoint != d->existingStartPoint)
endShape = d->existingEndPoint.path;
}
KUndo2Command *cmd = canvas()->shapeController()->addShape(pathShape);
if (cmd) {
KoSelection *selection = canvas()->shapeManager()->selection();
selection->deselectAll();
selection->select(pathShape);
if (startShape)
canvas()->shapeController()->removeShape(startShape, cmd);
if (endShape && startShape != endShape)
canvas()->shapeController()->removeShape(endShape, cmd);
canvas()->addCommand(cmd);
} else {
canvas()->updateCanvas(pathShape->boundingRect());
delete pathShape;
}
}
示例4: size
void KPrViewModeNotes::updateActivePage( KoPAPageBase *page )
{
if ( m_view->activePage() != page ) {
m_view->setActivePage( page );
}
KPrPage *prPage = dynamic_cast<KPrPage *>( page );
if ( !prPage ) return;
KPrNotes *notes = prPage->pageNotes();
notes->updatePageThumbnail();
KoShapeLayer* layer = dynamic_cast<KoShapeLayer*>( notes->childShapes().last() );
KoPageLayout &layout = notes->pageLayout();
QSize size(layout.width, layout.height);
m_view->horizontalRuler()->setRulerLength(layout.width);
m_view->verticalRuler()->setRulerLength(layout.height);
m_view->horizontalRuler()->setActiveRange(layout.left, layout.width - layout.right);
m_view->verticalRuler()->setActiveRange(layout.top, layout.height - layout.bottom);
m_view->zoomController()->setPageSize(size);
m_view->zoomController()->setDocumentSize(size);
m_canvas->update();
m_canvas->shapeManager()->setShapes( layer->childShapes() );
m_canvas->masterShapeManager()->setShapes(QList<KoShape*>());
KoSelection *selection = m_canvas->shapeManager()->selection();
selection->select(notes->textShape());
selection->setActiveLayer( layer );
QString tool = KoToolManager::instance()->preferredToolForSelection(selection->selectedShapes());
KoToolManager::instance()->switchToolRequested(tool);
}
示例5: slotRoundCorners
void RoundCornersPlugin::slotRoundCorners()
{
KoCanvasController* canvasController = KoToolManager::instance()->activeCanvasController();
KoSelection *selection = canvasController->canvas()->shapeManager()->selection();
KoShape * shape = selection->firstSelectedShape();
if (! shape)
return;
// check if we have a path based shape
KoPathShape * path = dynamic_cast<KoPathShape*>(shape);
if (! path)
return;
m_roundCornersDlg->setUnit(canvasController->canvas()->unit());
if (QDialog::Rejected == m_roundCornersDlg->exec())
return;
KUndo2Command * cmd = new KUndo2Command(kundo2_i18n("Round Corners"));
// convert to path before if we have a parametric shape
KoParameterShape * ps = dynamic_cast<KoParameterShape*>(shape);
if (ps && ps->isParametricShape())
new KoParameterToPathCommand(ps, cmd);
new RoundCornersCommand(path, m_roundCornersDlg->radius(), cmd);
canvasController->canvas()->addCommand(cmd);
}
示例6: Q_D
KUndo2Command* KoCreateShapeStrategy::createCommand()
{
Q_D(KoShapeRubberSelectStrategy);
KoCreateShapesTool *parent = static_cast<KoCreateShapesTool*>(d_ptr->tool);
KoShapeFactoryBase *factory = KoShapeRegistry::instance()->value(parent->shapeId());
if (! factory) {
warnFlake << "Application requested a shape that is not registered" << parent->shapeId();
return 0;
}
const KoProperties *props = parent->shapeProperties();
KoShape *shape;
if (props)
shape = factory->createShape(props, parent->canvas()->shapeController()->resourceManager());
else
shape = factory->createDefaultShape(parent->canvas()->shapeController()->resourceManager());
if (shape->shapeId().isEmpty())
shape->setShapeId(factory->id());
QRectF rect = d->selectedRect();
shape->setPosition(rect.topLeft());
QSizeF newSize = rect.size();
// if the user has dragged when creating the shape,
// resize the shape to the dragged size
if (newSize.width() > 1.0 && newSize.height() > 1.0)
shape->setSize(newSize);
KUndo2Command * cmd = parent->canvas()->shapeController()->addShape(shape);
if (cmd) {
KoSelection *selection = parent->canvas()->shapeManager()->selection();
selection->deselectAll();
selection->select(shape);
}
return cmd;
}
示例7: kWarning
QUndoCommand* KoCreateShapeStrategy::createCommand()
{
KoCreateShapesTool *parent = static_cast<KoCreateShapesTool*>(m_parent);
KoShapeFactory *factory = KoShapeRegistry::instance()->value(parent->shapeId());
if (! factory) {
kWarning(30006) << "Application requested a shape that is not registered" << parent->shapeId();
return 0;
}
const KoProperties *props = parent->shapeProperties();
KoShape *shape;
if (props)
shape = factory->createShapeAndInit(props, parent->m_canvas->shapeController()->dataCenterMap());
else
shape = factory->createDefaultShapeAndInit(parent->m_canvas->shapeController()->dataCenterMap());
if (shape->shapeId().isEmpty())
shape->setShapeId(factory->id());
QRectF rect = selectRect();
shape->setPosition(rect.topLeft());
QSizeF newSize = rect.size();
// if the user has dragged when creating the shape,
// resize the shape to the dragged size
if (newSize.width() > 1.0 && newSize.height() > 1.0)
shape->setSize(newSize);
QUndoCommand * cmd = parent->m_canvas->shapeController()->addShape(shape);
if (cmd) {
KoSelection *selection = parent->m_canvas->shapeManager()->selection();
selection->deselectAll();
selection->select(shape);
}
return cmd;
}
示例8: slotWhirlPinch
void WhirlPinchPlugin::slotWhirlPinch()
{
KoCanvasController* canvasController = KoToolManager::instance()->activeCanvasController();
KoSelection *selection = canvasController->canvas()->shapeManager()->selection();
KoShape * shape = selection->firstSelectedShape();
if (! shape)
return;
// check if we have a path based shape
KoPathShape * path = dynamic_cast<KoPathShape*>(shape);
if (! path)
return;
// check if it is no parametric shape
KoParameterShape * ps = dynamic_cast<KoParameterShape*>(shape);
if (ps && ps->isParametricShape())
return;
m_whirlPinchDlg->setUnit(canvasController->canvas()->unit());
if (QDialog::Rejected == m_whirlPinchDlg->exec())
return;
canvasController->canvas()->addCommand(
new KarbonWhirlPinchCommand(path, m_whirlPinchDlg->angle(), m_whirlPinchDlg->pinch(), m_whirlPinchDlg->radius()));
}
示例9: selectionChanged
void StrokeDocker::selectionChanged()
{
KoCanvasController* canvasController = KoToolManager::instance()->activeCanvasController();
KoSelection *selection = canvasController->canvas()->shapeManager()->selection();
KoShape * shape = selection->firstSelectedShape();
if( shape )
setStroke( shape->border() );
}
示例10: kopaCanvas
void KPrView::createAnimation()
{
static int animationcount = 0;
KoSelection * selection = kopaCanvas()->shapeManager()->selection();
QList<KoShape*> selectedShapes = selection->selectedShapes();
foreach( KoShape * shape, selectedShapes )
{
Q_UNUSED(shape);
/*KPrShapeAnimationOld * animation = new KPrAnimationMoveAppear( shape, animationcount );
KPrDocument * doc = static_cast<KPrDocument *>( kopaDocument() );
KPrAnimationCreateCommand * command = new KPrAnimationCreateCommand( doc, animation );
kopaCanvas()->addCommand( command );*/
}
示例11: Q_ASSERT
bool KisNodeManager::Private::activateNodeImpl(KisNodeSP node)
{
Q_ASSERT(view);
Q_ASSERT(view->canvasBase());
Q_ASSERT(view->canvasBase()->globalShapeManager());
Q_ASSERT(imageView);
if (node && node == q->activeNode()) {
return false;
}
// Set the selection on the shape manager to the active layer
// and set call KoSelection::setActiveLayer( KoShapeLayer* layer )
// with the parent of the active layer.
KoSelection *selection = view->canvasBase()->globalShapeManager()->selection();
Q_ASSERT(selection);
selection->deselectAll();
if (!node) {
selection->setActiveLayer(0);
imageView->setCurrentNode(0);
maskManager.activateMask(0);
layerManager.activateLayer(0);
} else {
KoShape * shape = view->document()->shapeForNode(node);
Q_ASSERT(shape);
selection->select(shape);
KoShapeLayer * shapeLayer = dynamic_cast<KoShapeLayer*>(shape);
Q_ASSERT(shapeLayer);
// shapeLayer->setGeometryProtected(node->userLocked());
// shapeLayer->setVisible(node->visible());
selection->setActiveLayer(shapeLayer);
imageView->setCurrentNode(node);
if (KisLayerSP layer = dynamic_cast<KisLayer*>(node.data())) {
maskManager.activateMask(0);
layerManager.activateLayer(layer);
} else if (KisMaskSP mask = dynamic_cast<KisMask*>(node.data())) {
maskManager.activateMask(mask);
// XXX_NODE: for now, masks cannot be nested.
layerManager.activateLayer(static_cast<KisLayer*>(node->parent().data()));
}
}
return true;
}
示例12: kopaCanvas
void KoPAView::editSelectAll()
{
KoSelection* selection = kopaCanvas()->shapeManager()->selection();
if( !selection )
return;
QList<KoShape*> shapes = activePage()->shapes();
foreach( KoShape *shape, shapes ) {
KoShapeLayer *layer = dynamic_cast<KoShapeLayer *>( shape );
if ( layer ) {
QList<KoShape*> layerShapes( layer->shapes() );
foreach( KoShape *layerShape, layerShapes ) {
selection->select( layerShape );
layerShape->update();
}
}
示例13: KoInteractionStrategy
ShapeMoveStrategy::ShapeMoveStrategy( KoTool *tool, KoCanvasBase *canvas, const QPointF &clicked)
: KoInteractionStrategy(tool, canvas)
, m_start(clicked)
{
QList<KoShape*> selectedShapes = canvas->shapeManager()->selection()->selectedShapes(KoFlake::TopLevelSelection);
QRectF boundingRect;
foreach(KoShape *shape, selectedShapes) {
if( ! shape->isEditable() )
continue;
m_selectedShapes << shape;
m_previousPositions << shape->position();
m_newPositions << shape->position();
boundingRect = boundingRect.unite( shape->boundingRect() );
}
KoSelection * selection = m_canvas->shapeManager()->selection();
m_initialOffset = selection->absolutePosition( SelectionDecorator::hotPosition() ) - m_start;
m_initialSelectionPosition = selection->position();
m_canvas->snapGuide()->setIgnoredShapes( selection->selectedShapes( KoFlake::FullSelection ) );
tool->setStatusText( i18n("Press ALT to hold x- or y-position.") );
}
示例14: applyChanges
void StrokeDocker::applyChanges()
{
KoCanvasController* canvasController = KoToolManager::instance()->activeCanvasController();
KoSelection *selection = canvasController->canvas()->shapeManager()->selection();
canvasController->canvas()->resourceProvider()->setActiveBorder( d->border );
if( ! selection || ! selection->count() )
return;
KoLineBorder * newBorder = new KoLineBorder(d->border);
KoLineBorder * oldBorder = dynamic_cast<KoLineBorder*>( selection->firstSelectedShape()->border() );
if( oldBorder )
{
newBorder->setColor( oldBorder->color() );
newBorder->setLineBrush( oldBorder->lineBrush() );
}
KoShapeBorderCommand *cmd = new KoShapeBorderCommand( selection->selectedShapes(), newBorder );
canvasController->canvas()->addCommand( cmd );
}
示例15: slotRefinePath
void RefinePathPlugin::slotRefinePath()
{
KoCanvasController* canvasController = KoToolManager::instance()->activeCanvasController();
KoSelection *selection = canvasController->canvas()->shapeManager()->selection();
KoShape * shape = selection->firstSelectedShape();
if (! shape)
return;
// check if we have a path based shape
KoPathShape * path = dynamic_cast<KoPathShape*>(shape);
if (! path)
return;
// check if it is no parametric shape
KoParameterShape * ps = dynamic_cast<KoParameterShape*>(shape);
if (ps && ps->isParametricShape())
return;
if (QDialog::Rejected == m_RefinePathDlg->exec())
return;
canvasController->canvas()->addCommand(new KarbonPathRefineCommand(path, m_RefinePathDlg->knots()));
}