void RS_ActionDrawText::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } else if (e->button()==Qt::RightButton) { deletePreview(); //init(getStatus()-1); finish(false); } }
void RS_ActionModifyMirror::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } else if (e->button()==Qt::RightButton) { deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawArc3P::mouseReleaseEvent(RS_MouseEvent* e) { if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) { deletePreview(); deleteSnapper(); init(getStatus()-1); } }
void RS_ActionDrawLineAngle::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { if (getStatus()==SetPos) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } } else if (e->button()==Qt::RightButton) { deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawSpline::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } else if (e->button()==Qt::RightButton) { if (getStatus()==SetNextPoint && spline && spline->getNumberOfControlPoints()>=spline->getDegree()+1) { trigger(); } deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawSpline::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } else if (e->button()==Qt::RightButton) { if (getStatus()==SetNextPoint) { trigger(); } deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawEllipse4Points::mouseReleaseEvent(QMouseEvent* e) { // Proceed to next status if (e->button()==Qt::LeftButton) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } // Return to last status: else if (e->button()==Qt::RightButton) { deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawLine::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { RS_Vector snapped = snapPoint(e); /*Snapping to angle(15*) if shift key is pressed*/ if((e->modifiers() & Qt::ShiftModifier) && getStatus() == SetEndpoint ) snapped = snapToAngle(snapped); RS_CoordinateEvent ce(snapped); coordinateEvent(&ce); } else if (e->button()==Qt::RightButton) { deletePreview(); init(getStatus()-1); } }
void RS_ActionPolylineAppend::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { if (getStatus()==SetStartpoint) { originalPolyline = dynamic_cast<RS_Polyline*>(catchEntity(e)); if (!originalPolyline) { RS_DIALOGFACTORY->commandMessage(tr("No Entity found.")); return; } else if (originalPolyline->rtti()!=RS2::EntityPolyline) { RS_DIALOGFACTORY->commandMessage( tr("Entity must be a polyline.")); return; } else if (originalPolyline->isClosed()) { RS_DIALOGFACTORY->commandMessage( tr("Can not append nodes in a closed polyline.")); return; } else { snapPoint(e); RS_Polyline* op=static_cast<RS_Polyline*>(originalPolyline); RS_Entity* entFirst = op->firstEntity(); RS_Entity* entLast = op->lastEntity(); double dist = graphicView->toGraphDX(snapRange)*0.9; RS_Entity* nearestSegment = originalPolyline->getNearestEntity( RS_Vector(graphicView->toGraphX(e->x()), graphicView->toGraphY(e->y())), &dist, RS2::ResolveNone); polyline = static_cast<RS_Polyline*>(originalPolyline->clone()); container->addEntity(polyline); prepend = false; if (nearestSegment == entFirst){ prepend = true; point = originalPolyline->getStartpoint(); }else if (nearestSegment == entLast){ point = originalPolyline->getEndpoint(); }else{ RS_DIALOGFACTORY->commandMessage( tr("Click somewhere near the beginning or end of existing polyline.")); } } } RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } else if (e->button()==Qt::RightButton) { if (getStatus()==SetNextPoint) { trigger(); } // deletePreview(); //clearPreview(); deleteSnapper(); init(getStatus()-1); } }
void RS_ActionDimLeader::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } else if (e->button()==Qt::RightButton) { if (getStatus()==SetEndpoint) { trigger(); reset(); setStatus(SetStartpoint); } else { deletePreview(); init(getStatus()-1); } } }
void RS_ActionDimDiametric::mouseReleaseEvent(RS_MouseEvent* e) { if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) { switch (getStatus()) { case SetEntity: { RS_Entity* en = catchEntity(e, RS2::ResolveAll); if (en!=NULL) { if (en->rtti()==RS2::EntityArc || en->rtti()==RS2::EntityCircle) { entity = en; RS_Vector center; if (entity->rtti()==RS2::EntityArc) { center = ((RS_Arc*)entity)->getCenter(); } else if (entity->rtti()==RS2::EntityCircle) { center = ((RS_Circle*)entity)->getCenter(); } graphicView->moveRelativeZero(center); setStatus(SetPos); } else { RS_DIALOGFACTORY->commandMessage(tr("Not a circle " "or arc entity")); } } } break; case SetPos: { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } break; default: break; } } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) { deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawPolyline::close() { if (history.size()>2 && start.valid) { //data.endpoint = start; //trigger(); if (polyline) { if (Mode==TanRad) Mode=Line; RS_CoordinateEvent e(polyline->getStartpoint()); coordinateEvent(&e); } polyline->setClosed(true); trigger(); setStatus(SetStartpoint); graphicView->moveRelativeZero(start); } else { RS_DIALOGFACTORY->commandMessage( tr("Cannot close sequence of lines: " "Not enough entities defined yet.")); } }
void RS_ActionDrawCircleTan2_1P::mouseReleaseEvent(QMouseEvent* e) { // Proceed to next status if (e->button()==Qt::LeftButton) { switch (getStatus()) { case SetCircle1: case SetCircle2: { circles.resize(getStatus()); RS_AtomicEntity* en = static_cast<RS_AtomicEntity*>(catchCircle(e)); if (en==NULL) return; // circle = static_cast<RS_AtomicEntity*>(en); en->setHighlighted(true); circles.push_back(en); graphicView->redraw(RS2::RedrawDrawing); setStatus(getStatus()+1); } break; case SetPoint: { RS_Vector snapped = snapPoint(e); RS_CoordinateEvent ce(snapped); coordinateEvent(&ce); } 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){ deletePreview(); } init(getStatus()-1); } }
void RS_ActionDimRadial::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { switch (getStatus()) { case SetEntity: { RS_Entity* en = catchEntity(e, RS2::ResolveAll); if (en) { if (en->rtti()==RS2::EntityArc || en->rtti()==RS2::EntityCircle) { entity = en; if (entity->rtti()==RS2::EntityArc) { data->definitionPoint = static_cast<RS_Arc*>(entity)->getCenter(); } else if (entity->rtti()==RS2::EntityCircle) { data->definitionPoint = static_cast<RS_Circle*>(entity)->getCenter(); } graphicView->moveRelativeZero(data->definitionPoint); setStatus(SetPos); } else { RS_DIALOGFACTORY->commandMessage(tr("Not a circle " "or arc entity")); } } } break; case SetPos: { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } break; default: break; } } else if (e->button()==Qt::RightButton) { deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawArcTangential::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { switch (getStatus()) { // set base entity: case SetBaseEntity: { RS_Vector coord = graphicView->toGraph(e->x(), e->y()); RS_Entity* entity = catchEntity(coord, RS2::ResolveAll); if (entity!=NULL) { if (entity->isAtomic()) { baseEntity = (RS_AtomicEntity*)entity; if (baseEntity->getStartpoint().distanceTo(coord) < baseEntity->getEndpoint().distanceTo(coord)) { isStartPoint = true; } else { isStartPoint = false; } setStatus(SetEndAngle); updateMouseButtonHints(); } else { // TODO: warning } } else { } } break; // set angle (point that defines the angle) case SetEndAngle: { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } break; } } else if (e->button()==Qt::RightButton) { deletePreview(); init(getStatus()-1); } }
void RS_ActionDrawLineRelAngle::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { switch (getStatus()) { case SetEntity: { RS_Entity* en = catchEntity(e, RS2::ResolveAll); if (en!=NULL && (en->rtti()==RS2::EntityLine || en->rtti()==RS2::EntityArc || en->rtti()==RS2::EntityCircle)) { entity = en; entity->setHighlighted(true); graphicView->drawEntity(entity); setStatus(SetPos); } } break; case SetPos: { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } break; default: break; } } else if (e->button()==Qt::RightButton) { deletePreview(); if (entity!=NULL) { entity->setHighlighted(false); graphicView->drawEntity(entity); } init(getStatus()-1); } }
void RS_ActionDimAngular::mouseReleaseEvent(QMouseEvent* e) { if (e->button()==Qt::LeftButton) { switch (getStatus()) { case SetLine1: { RS_Entity* en = catchEntity(e, RS2::ResolveAll); if (en!=NULL && en->rtti()==RS2::EntityLine) { line1 = (RS_Line*)en; setStatus(SetLine2); } } break; case SetLine2: { RS_Entity* en = catchEntity(e, RS2::ResolveAll); if (en!=NULL && en->rtti()==RS2::EntityLine) { line2 = (RS_Line*)en; RS_VectorSolutions sol = RS_Information::getIntersectionLineLine(line1, line2); if (sol.get(0).valid) { center = sol.get(0); if (center.distanceTo(line1->getStartpoint()) < center.distanceTo(line1->getEndpoint())) { edata->definitionPoint1 = line1->getStartpoint(); edata->definitionPoint2 = line1->getEndpoint(); } else { edata->definitionPoint1 = line1->getEndpoint(); edata->definitionPoint2 = line1->getStartpoint(); } if (center.distanceTo(line2->getStartpoint()) < center.distanceTo(line2->getEndpoint())) { edata->definitionPoint3 = line2->getStartpoint(); data->definitionPoint = line2->getEndpoint(); } else { edata->definitionPoint3 = line2->getEndpoint(); data->definitionPoint = line2->getStartpoint(); } graphicView->moveRelativeZero(center); setStatus(SetPos); } } } break; case SetPos: { RS_CoordinateEvent ce(snapPoint(e)); coordinateEvent(&ce); } break; } } else if (e->button()==Qt::RightButton) { deletePreview(); init(getStatus()-1); } }