void SelectTool::mouseRelease(const QPoint &pos) { m_releasePoint = pos; switch( m_mode ) { case stmDrawRubber: endRubberBanding(pos); break; case stmCustomDragging: endCustomDragging(pos); break; case stmDragging: endDragging(pos); break; case stmResizing: endResizing(pos); break; } m_mode = stmNone; view()->canvasWidget()->guideLines().repaintAfterSnapping(); view()->doc()->updateView(view()->activePage()); }
void ComponentLayout::paste() { XmlDocument clip (SystemClipboard::getTextFromClipboard()); ScopedPointer<XmlElement> doc (clip.getDocumentElement()); if (doc != nullptr && doc->hasTagName (clipboardXmlTag)) { selected.deselectAll(); forEachXmlChildElement (*doc, e) if (Component* newComp = addComponentFromXml (*e, true)) selected.addToSelection (newComp); startDragging(); dragSelectedComps (Random::getSystemRandom().nextInt (40), Random::getSystemRandom().nextInt (40)); endDragging(); }
void SelectTool::keyPress(QKeyEvent* e) { KivioCanvas* canvas = view()->canvasWidget(); canvas->setEnabled(false); // Create a new painter object canvas->beginUnclippedSpawnerPainter(); // Build the list of old geometry KivioSelectDragData *pData; m_lstOldGeometry.clear(); KivioStencil* pStencil = canvas->activePage()->selectedStencils()->first(); while( pStencil ) { pData = new KivioSelectDragData; pData->rect = pStencil->rect(); m_lstOldGeometry.append(pData); pStencil = canvas->activePage()->selectedStencils()->next(); } m_selectedRect = view()->activePage()->getRectForAllSelectedStencils(); // Set the mode m_mode = stmDragging; canvas->setEnabled(true); m_origPoint = m_selectedRect.topLeft(); KivioGridData gd = view()->doc()->grid(); bool ignoreGridGuides = e->state() & ShiftButton; double distX, distY; if(ignoreGridGuides || !view()->doc()->grid().isSnap) { distX = view()->zoomHandler()->unzoomItX(1); distY = view()->zoomHandler()->unzoomItY(1); } else { distX = gd.freq.width(); distY = gd.freq.height(); } switch(e->key()) { case Key_Left: continueDragging(canvas->mapToScreen(KoPoint(m_selectedRect.x() - distX, m_selectedRect.y())), ignoreGridGuides); break; case Key_Up: continueDragging(canvas->mapToScreen(KoPoint(m_selectedRect.x(), m_selectedRect.y() - distY)), ignoreGridGuides); break; case Key_Right: continueDragging(canvas->mapToScreen(KoPoint(m_selectedRect.x() + distX, m_selectedRect.y())), ignoreGridGuides); break; case Key_Down: continueDragging(canvas->mapToScreen(KoPoint(m_selectedRect.x(), m_selectedRect.y() + distY)), ignoreGridGuides); break; default: break; } endDragging(QPoint()); canvas->guideLines().repaintAfterSnapping(); canvas->setFocus(); }