void RS_ActionDrawCircleInscribe::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDrawCircle4Line::mouseMoveEvent begin"); if(getStatus() == SetLine3) { RS_Entity* en = catchEntity(e, RS2::EntityLine, RS2::ResolveAll); if(en == NULL) return; if(!(en->isVisible() && en->rtti()== RS2::EntityLine)) return; for(int i=0;i<getStatus();i++) { if(en->getId() == lines[i]->getId()) return; //do not pull in the same line again } if(en->getParent() != NULL) { if ( en->getParent()->ignoredOnModification()) return; } coord= graphicView->toGraph(e->x(), e->y()); lines.resize(getStatus()); lines.push_back(static_cast<RS_Line*>(en)); // lines[getStatus()]=static_cast<RS_Line*>(en); if(preparePreview()) { deletePreview(); RS_Circle* e=new RS_Circle(preview.get(), *cData); preview->addEntity(e); drawPreview(); } } RS_DEBUG->print("RS_ActionDrawCircle4Line::mouseMoveEvent end"); }
void RS_ActionDrawLineRectangle::trigger() { RS_PreviewActionInterface::trigger(); RS_Line* line[4]; preparePreview(); // create and add rectangle: for (int i=0; i<4; ++i) { line[i] = new RS_Line(container, *data[i]); line[i]->setLayerToActive(); line[i]->setPenToActive(); container->addEntity(line[i]); } // upd. undo list: if (document) { document->startUndoCycle(); for (int i=0; i<4; ++i) { document->addUndoable(line[i]); } document->endUndoCycle(); } // upd. view graphicView->redraw(RS2::RedrawDrawing); graphicView->moveRelativeZero(corner2); }
void LC_ActionDrawCircle2PR::mouseMoveEvent(QMouseEvent* e) { RS_Vector mouse = snapPoint(e); switch (getStatus()) { case SetPoint1: point1 = mouse; break; case SetPoint2: if(mouse.distanceTo(point1) <= 2.*data->radius) point2 = mouse; break; case SelectCenter: { if(preparePreview(mouse)){ RS_Circle* circle = new RS_Circle(preview.get(), *data); deletePreview(); preview->addEntity(circle); drawPreview(); }else{ if(data->isValid()) trigger(); } } } }
void RS_ActionDrawEllipse4Points::coordinateEvent(RS_CoordinateEvent* e) { if (e==NULL) { return; } RS_Vector mouse = e->getCoordinate(); points.alloc(getStatus()+1); points.set(getStatus(),mouse); switch (getStatus()) { case SetPoint1: graphicView->moveRelativeZero(mouse); setStatus(SetPoint2); break; case SetPoint2: case SetPoint3: case SetPoint4: if( preparePreview()) { graphicView->moveRelativeZero(mouse); if(getStatus() == SetPoint4 || (points.get(getStatus()) - points.get(getStatus()-1)).squared() <RS_TOLERANCE*RS_TOLERANCE) { //also draw the entity, if clicked on the same point twice trigger(); }else{ setStatus(getStatus()+1); } } default: break; } }
void RS_ActionDrawText::init(int status) { RS_ActionInterface::init(status); if (RS_DIALOGFACTORY!=NULL) { switch (status) { case ShowDialog: { clearPreview(); reset(); RS_Text tmp(NULL, data); if (RS_DIALOGFACTORY->requestTextDialog(&tmp)) { data = tmp.getData(); preparePreview(); preview->setVisible(false); setStatus(SetPos); showOptions(); } else { hideOptions(); finish(); } graphicView->redraw(); } break; case SetPos: RS_DIALOGFACTORY->requestOptions(this, true, true); break; default: break; } } }
void RS_ActionDrawArcTangential::trigger() { RS_PreviewActionInterface::trigger(); if (point.valid==false || baseEntity==NULL) { RS_DEBUG->print("RS_ActionDrawArcTangential::trigger: " "conditions not met"); return; } preparePreview(); RS_Arc* arc = new RS_Arc(container, *data); arc->setLayerToActive(); arc->setPenToActive(); container->addEntity(arc); // upd. undo list: if (document!=NULL) { document->startUndoCycle(); document->addUndoable(arc); document->endUndoCycle(); } graphicView->redraw(RS2::RedrawDrawing); graphicView->moveRelativeZero(arc->getCenter()); setStatus(SetBaseEntity); reset(); }
void RS_ActionDrawArc3P::mouseMoveEvent(QMouseEvent* e) { RS_Vector mouse = snapPoint(e); switch (getStatus()) { case SetPoint1: point1 = mouse; break; case SetPoint2: point2 = mouse; if (point1.valid) { RS_Line* line = new RS_Line(preview.get(), RS_LineData(point1, point2)); deletePreview(); preview->addEntity(line); drawPreview(); } break; case SetPoint3: point3 = mouse; preparePreview(); if (data->isValid()) { RS_Arc* arc = new RS_Arc(preview.get(), *data); deletePreview(); preview->addEntity(arc); drawPreview(); } break; default: break; } }
void RS_ActionDimDiametric::trigger() { RS_PreviewActionInterface::trigger(); preparePreview(); if (entity) { RS_DimDiametric* newEntity = nullptr; newEntity = new RS_DimDiametric(container, *data, *edata); newEntity->setLayerToActive(); newEntity->setPenToActive(); newEntity->update(); container->addEntity(newEntity); // upd. undo list: if (document) { document->startUndoCycle(); document->addUndoable(newEntity); document->endUndoCycle(); } RS_Vector rz = graphicView->getRelativeZero(); graphicView->redraw(RS2::RedrawDrawing); graphicView->moveRelativeZero(rz); RS_Snapper::finish(); } else { RS_DEBUG->print("RS_ActionDimDiametric::trigger:" " Entity is nullptr\n"); } }
void LC_ActionDrawCircle2PR::mouseMoveEvent(QMouseEvent* e) { RS_Vector mouse = snapPoint(e); switch (getStatus()) { case SetPoint1: pPoints->point1 = mouse; break; case SetPoint2: if(mouse.distanceTo(pPoints->point1) <= 2.*data->radius) pPoints->point2 = mouse; break; case SelectCenter: { if(preparePreview(mouse)){ bool existing=false; for(auto p: *preview){ if(p->rtti() == RS2::EntityCircle){ if( static_cast<RS_Circle*>(p)->getData() == *data) existing=true; } } if(!existing){ deletePreview(); preview->addEntity(new RS_Point(preview.get(), RS_PointData(data->center))); RS_Circle* circle = new RS_Circle(preview.get(), *data); preview->addEntity(circle); drawPreview(); } }else{ if(data->isValid()) trigger(); } } } }
void RS_ActionDrawCircle2P::trigger() { RS_PreviewActionInterface::trigger(); preparePreview(); if (data.isValid()) { RS_Circle* circle = new RS_Circle(container, data); circle->setLayerToActive(); circle->setPenToActive(); container->addEntity(circle); // upd. undo list: if (document!=NULL) { document->startUndoCycle(); document->addUndoable(circle); document->endUndoCycle(); } RS_Vector rz = graphicView->getRelativeZero(); graphicView->redraw(RS2::RedrawDrawing); graphicView->moveRelativeZero(rz); setStatus(SetPoint1); reset(); } else { if (RS_DIALOGFACTORY!=NULL) { RS_DIALOGFACTORY->requestWarningDialog(tr("Invalid Circle data.")); } } }
void RS_ActionDrawCircleInscribe::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDrawCircle4Line::mouseMoveEvent begin"); if(getStatus() == SetLine3) { RS_Entity* en = catchEntity(e, RS2::EntityLine, RS2::ResolveAll); if(!en) return; if(!(en->isVisible() && en->rtti()== RS2::EntityLine)) return; for(int i=0;i<getStatus();i++) { if(en->getId() == lines[i]->getId()) return; //do not pull in the same line again } if(en->getParent() && en->getParent()->ignoredOnModification()) return; pPoints->coord= graphicView->toGraph(e->x(), e->y()); deletePreview(); while(lines.size()==3){ lines.back()->setHighlighted(false); graphicView->drawEntity(lines.back()); lines.pop_back(); } en->setHighlighted(true); lines.push_back(static_cast<RS_Line*>(en)); graphicView->drawEntity(lines.back()); if(preparePreview()) { RS_Circle* e=new RS_Circle(preview.get(), pPoints->cData); preview->addEntity(e); drawPreview(); } } RS_DEBUG->print("RS_ActionDrawCircle4Line::mouseMoveEvent end"); }
void EditorToolThreaded::slotPreview() { // Computation already in process. if (d->currentRenderingMode != EditorToolThreaded::NoneRendering) { return; } d->currentRenderingMode = EditorToolThreaded::PreviewRendering; kDebug() << "Preview " << toolName() << " started..."; toolSettings()->enableButton(EditorToolSettings::Ok, false); toolSettings()->enableButton(EditorToolSettings::SaveAs, false); toolSettings()->enableButton(EditorToolSettings::Load, false); toolSettings()->enableButton(EditorToolSettings::Default, false); toolSettings()->enableButton(EditorToolSettings::Try, false); toolView()->setEnabled(false); EditorToolIface::editorToolIface()->setToolStartProgress(d->progressMess.isEmpty() ? toolName() : d->progressMess); kapp->setOverrideCursor(Qt::WaitCursor); if (d->delFilter && d->threadedFilter) { delete d->threadedFilter; d->threadedFilter = 0; } preparePreview(); }
void RS_ActionDrawArc3P::trigger() { RS_PreviewActionInterface::trigger(); preparePreview(); if (data.isValid()) { RS_Arc* arc = new RS_Arc(container, data); arc->setLayerToActive(); arc->setPenToActive(); container->addEntity(arc); // upd. undo list: if (document!=NULL) { document->startUndoCycle(); document->addUndoable(arc); document->endUndoCycle(); } deleteSnapper(); graphicView->moveRelativeZero(RS_Vector(0.0,0.0)); graphicView->drawEntity(arc); graphicView->moveRelativeZero(arc->getEndpoint()); drawSnapper(); setStatus(SetPoint1); reset(); } else { //RS_DIALOGFACTORY->requestWarningDialog(tr("Invalid arc data.")); RS_DIALOGFACTORY->commandMessage(tr("Invalid arc data.")); } }
void RS_ActionDimRadial::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDimRadial::mouseMoveEvent begin"); //RS_Vector mouse(graphicView->toGraphX(e->x()), // graphicView->toGraphY(e->y())); switch (getStatus()) { case SetEntity: entity = catchEntity(e, RS2::ResolveAll); break; case SetPos: if (entity) { pos = snapPoint(e); preparePreview(); RS_DimRadial* d = new RS_DimRadial(preview.get(), *data, *edata); deletePreview(); preview->addEntity(d); d->update(); drawPreview(); } break; default: break; } RS_DEBUG->print("RS_ActionDimRadial::mouseMoveEvent end"); }
void RS_ActionDimDiametric::mouseMoveEvent(RS_MouseEvent* e) { RS_DEBUG->print("RS_ActionDimDiametric::mouseMoveEvent begin"); RS_Vector mouse(graphicView->toGraphX(e->x()), graphicView->toGraphY(e->y())); switch (getStatus()) { case SetEntity: entity = catchEntity(e, RS2::ResolveAll); break; case SetPos: if (entity!=NULL) { pos = snapPoint(e); preparePreview(); RS_DimDiametric* d = new RS_DimDiametric(preview, data, edata); d->update(); deletePreview(); preview->addEntity(d); drawPreview(); } break; default: break; } RS_DEBUG->print("RS_ActionDimDiametric::mouseMoveEvent end"); }
void RS_ActionDrawText::init(int status) { RS_ActionInterface::init(status); if (RS_DIALOGFACTORY) { switch (status) { case ShowDialog: { reset(); RS_Text tmp(NULL, *data); if (RS_DIALOGFACTORY->requestTextDialog(&tmp)) { data.reset(new RS_TextData(tmp.getData())); setStatus(SetPos); showOptions(); } else { hideOptions(); setFinished(); } } break; case SetPos: RS_DIALOGFACTORY->requestOptions(this, true, true); deletePreview(); preview->setVisible(true); preparePreview(); break; default: break; } } }
void RS_ActionDrawEllipse4Points::mouseMoveEvent(QMouseEvent* e) { // RS_DEBUG->print("RS_ActionDrawEllipse4Point::mouseMoveEvent begin"); RS_Vector mouse = snapPoint(e); points.set(getStatus(),mouse); if(preparePreview()) { switch(getStatus()) { case SetPoint2: case SetPoint3: { RS_Circle* circle=new RS_Circle(preview, cData); deletePreview(); preview->addEntity(circle); drawPreview(); } break; case SetPoint4: { deletePreview(); RS_Ellipse* e=new RS_Ellipse(preview, eData); preview->addEntity(e); drawPreview(); } default: break; } } // RS_DEBUG->print("RS_ActionDrawEllipse4Point::mouseMoveEvent end"); }
void RS_ActionDrawEllipseInscribe::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDrawEllipse4Line::mouseMoveEvent begin"); if(getStatus() == SetLine4) { RS_Entity* en = catchEntity(e, RS2::EntityLine, RS2::ResolveAll); if(!en) return; if(!(en->isVisible() && en->rtti()== RS2::EntityLine)) return; for(auto p: lines){ if(en == p) return; //do not pull in the same line again } if(en->getParent() && en->getParent()->ignoredOnModification()){ return; } deletePreview(); clearLines(true); lines.push_back(static_cast<RS_Line*>(en)); if(preparePreview()) { lines.back()->setHighlighted(true); graphicView->drawEntity(lines.back()); RS_Ellipse* e=new RS_Ellipse(preview.get(), *eData); preview->addEntity(e); drawPreview(); } } RS_DEBUG->print("RS_ActionDrawEllipse4Line::mouseMoveEvent end"); }
void RS_ActionDrawEllipseCenter3Points::mouseMoveEvent(QMouseEvent* e) { // RS_DEBUG->print("RS_ActionDrawEllipseCenter3Points::mouseMoveEvent begin"); RS_Vector mouse = snapPoint(e); if(getStatus() == SetCenter) return; points.resize(getStatus()); points.push_back(mouse); if(preparePreview()) { switch(getStatus()) { case SetPoint1: { RS_Circle* circle=new RS_Circle(preview.get(), *cData); deletePreview(); preview->addEntity(circle); drawPreview(); } break; case SetPoint2: case SetPoint3: { deletePreview(); RS_Ellipse* e=new RS_Ellipse(preview.get(), *eData); preview->addEntity(e); drawPreview(); } default: break; } } RS_DEBUG->print("RS_ActionDrawEllipseCenter3Points::mouseMoveEvent end"); }
void RS_ActionDimAligned::trigger() { RS_ActionDimension::trigger(); preparePreview(); graphicView->moveRelativeZero(data->definitionPoint); //data->text = getText(); RS_DimAligned* dim = new RS_DimAligned(container, *data, *edata); dim->setLayerToActive(); dim->setPenToActive(); dim->update(); container->addEntity(dim); // upd. undo list: if (document) { document->startUndoCycle(); document->addUndoable(dim); document->endUndoCycle(); } RS_Vector rz = graphicView->getRelativeZero(); graphicView->redraw(RS2::RedrawDrawing); graphicView->moveRelativeZero(rz); RS_DEBUG->print("RS_ActionDimAligned::trigger():" " dim added: %d", dim->getId()); }
void RS_ActionDimRadial::trigger() { RS_ActionDimension::trigger(); preparePreview(); if (entity) { RS_DimRadial* newEntity = NULL; newEntity = new RS_DimRadial(container, *data, *edata); newEntity->setLayerToActive(); newEntity->setPenToActive(); newEntity->update(); container->addEntity(newEntity); // upd. undo list: if (document) { document->startUndoCycle(); document->addUndoable(newEntity); document->endUndoCycle(); } RS_Vector rz = graphicView->getRelativeZero(); graphicView->redraw(RS2::RedrawDrawing); graphicView->moveRelativeZero(rz); //drawSnapper(); } else { RS_DEBUG->print("RS_ActionDimRadial::trigger:" " Entity is NULL\n"); } }
void RS_ActionDimDiametric::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDimDiametric::mouseMoveEvent begin"); switch (getStatus()) { case SetPos: if (entity) { *pos = snapPoint(e); preparePreview(); RS_DimDiametric* d = new RS_DimDiametric(preview.get(), *data, *edata); deletePreview(); preview->addEntity(d); d->update(); drawPreview(); } break; default: break; } RS_DEBUG->print("RS_ActionDimDiametric::mouseMoveEvent end"); }
void RS_ActionDrawCircle3P::mouseMoveEvent(RS_MouseEvent* e) { RS_Vector mouse = snapPoint(e); switch (getStatus()) { case SetPoint1: point1 = mouse; break; case SetPoint2: point2 = mouse; break; case SetPoint3: point3 = mouse; preparePreview(); if (data.isValid()) { RS_Circle* circle = new RS_Circle(preview, data); deletePreview(); preview->addEntity(circle); drawPreview(); } break; } }
void RS_ActionDrawEllipseInscribe::mouseReleaseEvent(QMouseEvent* e) { // Proceed to next status if (e->button()==Qt::LeftButton) { if (e==NULL) { return; } RS_Entity* en = catchEntity(e, RS2::EntityLine, RS2::ResolveAll); if(en == NULL) return; if(!(en->isVisible() && en->rtti()== RS2::EntityLine)) return; for(int i=0;i<getStatus();i++) { if(en->getId() == lines[i]->getId()) return; //do not pull in the same line again } if(en->getParent() != NULL) { if ( en->getParent()->rtti() == RS2::EntityInsert /**Insert*/ || en->getParent()->rtti() == RS2::EntitySpline || en->getParent()->rtti() == RS2::EntityText /**< Text 15*/ || en->getParent()->rtti() == RS2::EntityDimAligned /**< Aligned Dimension */ || en->getParent()->rtti() == RS2::EntityDimLinear /**< Linear Dimension */ || en->getParent()->rtti() == RS2::EntityDimRadial /**< Radial Dimension */ || en->getParent()->rtti() == RS2::EntityDimDiametric /**< Diametric Dimension */ || en->getParent()->rtti() == RS2::EntityDimAngular /**< Angular Dimension */ || en->getParent()->rtti() == RS2::EntityDimLeader /**< Leader Dimension */ ){ return; } } lines.resize(getStatus()); lines.push_back(static_cast<RS_Line*>(en)); switch (getStatus()) { case SetLine1: case SetLine2: case SetLine3: en->setHighlighted(true); setStatus(getStatus()+1); graphicView->redraw(RS2::RedrawDrawing); break; case SetLine4: if( preparePreview()) { trigger(); } default: break; } } else if (e->button()==Qt::RightButton) { // Return to last status: if(getStatus()>0){ lines[getStatus()-1]->setHighlighted(false); lines.pop_back(); graphicView->redraw(RS2::RedrawDrawing); deletePreview(); } init(getStatus()-1); } }
void RS_ActionDrawArcTangential::mouseMoveEvent(QMouseEvent* e) { if(getStatus() == SetEndAngle) { point = snapPoint(e); preparePreview(); if (data->isValid()) { RS_Arc* arc = new RS_Arc(preview.get(), *data); deletePreview(); preview->addEntity(arc); drawPreview(); } } }
void RS_ActionDrawLineAngle::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDrawLineAngle::mouseMoveEvent begin"); if (getStatus()==SetPos) { pos = snapPoint(e); deletePreview(); preparePreview(); preview->addEntity(new RS_Line(preview, data)); drawPreview(); } RS_DEBUG->print("RS_ActionDrawLineAngle::mouseMoveEvent end"); }
void RS_ActionDrawText::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDrawText::mouseMoveEvent begin"); if (getStatus()==SetPos) { RS_Vector mouse = snapPoint(e); pos = mouse; deletePreview(); preparePreview(); drawPreview(); } RS_DEBUG->print("RS_ActionDrawText::mouseMoveEvent end"); }
void RS_ActionDrawCircleInscribe::mouseReleaseEvent(QMouseEvent* e) { // Proceed to next status if (e->button()==Qt::LeftButton) { if (!e) { return; } RS_Entity* en = catchEntity(e, RS2::EntityLine, RS2::ResolveAll); if(!en) return; if(!(en->isVisible() && en->rtti()== RS2::EntityLine)) return; for(int i=0;i<getStatus();i++) { if(en->getId() == lines[i]->getId()) return; //do not pull in the same line again } if(en->getParent()) { if ( en->getParent()->ignoredOnModification()) return; } while((int) lines.size()>getStatus()){ lines.back()->setHighlighted(false); graphicView->drawEntity(lines.back()); lines.pop_back(); } lines.push_back(static_cast<RS_Line*>(en)); pPoints->coord= graphicView->toGraph(e->x(), e->y()); switch (getStatus()) { case SetLine1: case SetLine2: en->setHighlighted(true); setStatus(getStatus()+1); graphicView->redraw(RS2::RedrawDrawing); break; case SetLine3: if( preparePreview()) { trigger(); } default: break; } } else if (e->button()==Qt::RightButton) { // Return to last status: if(getStatus()>0){ clearLines(true); lines.back()->setHighlighted(false); lines.pop_back(); graphicView->redraw(RS2::RedrawDrawing); deletePreview(); } init(getStatus()-1); } }
void RS_ActionDrawText::mouseMoveEvent(QMouseEvent* e) { RS_DEBUG->print("RS_ActionDrawText::mouseMoveEvent begin"); if (getStatus()==SetPos) { RS_Vector mouse = snapPoint(e); RS_Vector mov = mouse-pos; pos = mouse; if (textChanged || pos.valid == false || preview->isEmpty()) { deletePreview(); preparePreview(); } else { preview->move(mov); preview->setVisible(true); } drawPreview(); } else if (getStatus()==SetSecPos) { secPos = snapPoint(e); deletePreview(); preparePreview(); drawPreview(); } RS_DEBUG->print("RS_ActionDrawText::mouseMoveEvent end"); }
void RS_ActionDrawCircleTan3::mouseReleaseEvent(QMouseEvent* e) { // Proceed to next status if (e->button()==Qt::LeftButton) { switch (getStatus()) { case SetCircle1: case SetCircle2: case SetCircle3: { RS_Entity* en = catchCircle(e); // DEBUG_HEADER(); // qDebug()<<"en="<<en; if (en==NULL) return; circles.resize(getStatus()); if(circles.indexOf(static_cast<RS_AtomicEntity*>(en))>=0) return; // for(int i=0;i<circles.size();i++){ // if( // (circles.at(i)->getCenter() - en->getCenter()).squared() < RS_TOLERANCE2 // && fabs( circles.at(i)->getRadius() - en->getRadius())<RS_TOLERANCE // ) return; // } circles.push_back(static_cast<RS_AtomicEntity*>(en)); if(getStatus()<=SetCircle2 || (getStatus()==SetCircle3 && getData())){ circles.at(circles.size()-1)->setHighlighted(true); graphicView->redraw(RS2::RedrawDrawing); setStatus(getStatus()+1); } } break; case SetCenter: coord= graphicView->toGraph(e->x(), e->y()); if( preparePreview()) trigger(); break; default: break; } } else if (e->button()==Qt::RightButton) { // Return to last status: if(getStatus()>0){ circles[getStatus()-1]->setHighlighted(false); circles.pop_back(); graphicView->redraw(RS2::RedrawDrawing); deletePreview(); } init(getStatus()-1); } }