X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Factions%2Frs_actionmodifycut.cpp;h=fb59aac1010d6e6d9fd02ce8552a8dc4340a200d;hb=3f46c180da0806c9c263e6d87d0f1404632402da;hp=dc762a2286221e22a1b01a73c80bd96d106b1f8e;hpb=16ce54abf01ca3032e42a5bb11a4afcf9014dcca;p=architektonas diff --git a/src/actions/rs_actionmodifycut.cpp b/src/actions/rs_actionmodifycut.cpp index dc762a2..fb59aac 100644 --- a/src/actions/rs_actionmodifycut.cpp +++ b/src/actions/rs_actionmodifycut.cpp @@ -1,189 +1,177 @@ -/**************************************************************************** -** $Id: rs_actionmodifycut.cpp 2420 2005-07-01 16:47:35Z andrew $ -** -** Copyright (C) 2001-2003 RibbonSoft. All rights reserved. -** -** This file is part of the qcadlib Library project. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid qcadlib Professional Edition licenses may use -** this file in accordance with the qcadlib Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.ribbonsoft.com for further details. -** -** Contact info@ribbonsoft.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ +// rs_actionmodifycut.cpp +// +// Part of the Architektonas Project +// Originally part of QCad Community Edition by Andrew Mustun +// Extensively rewritten and refactored by James L. Hammons +// (C) 2010 Underground Software +// +// JLH = James L. Hammons +// +// Who When What +// --- ---------- ----------------------------------------------------------- +// JLH 06/04/2010 Added this text. :-) +// #include "rs_actionmodifycut.h" -#include "rs_snapper.h" +#include "rs_dialogfactory.h" +#include "rs_graphicview.h" +#include "rs_modification.h" - -RS_ActionModifyCut::RS_ActionModifyCut(RS_EntityContainer& container, - RS_GraphicView& graphicView) - :RS_ActionInterface("Cut Entity", - container, graphicView) { - - cutEntity = NULL; - cutCoord = Vector(false); +RS_ActionModifyCut::RS_ActionModifyCut(RS_EntityContainer & container, + RS_GraphicView & graphicView): RS_ActionInterface("Cut Entity", + container, graphicView) +{ + cutEntity = NULL; + cutCoord = Vector(false); } -QAction* RS_ActionModifyCut::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/) +RS_ActionModifyCut::~RS_ActionModifyCut() { - QAction * action = new QAction(tr("&Divide"), 0); -// QAction* action = new QAction(tr("Divide"), tr("&Divide"), -// QKeySequence(), NULL); - action->setStatusTip(tr("Cut Entities")); - return action; } - void RS_ActionModifyCut::init(int status) { - RS_ActionInterface::init(status); + RS_ActionInterface::init(status); } +void RS_ActionModifyCut::trigger() +{ + RS_DEBUG->print("RS_ActionModifyCut::trigger()"); + if (cutEntity != NULL && cutEntity->isAtomic() && cutCoord.valid + && cutEntity->isPointOnEntity(cutCoord)) + { + cutEntity->setHighlighted(false); + graphicView->drawEntity(cutEntity); -void RS_ActionModifyCut::trigger() { - - RS_DEBUG->print("RS_ActionModifyCut::trigger()"); - - if (cutEntity!=NULL && cutEntity->isAtomic() && cutCoord.valid && - cutEntity->isPointOnEntity(cutCoord)) { - - cutEntity->setHighlighted(false); - graphicView->drawEntity(cutEntity); - - RS_Modification m(*container, graphicView); - m.cut(cutCoord, (RS_AtomicEntity*)cutEntity); + RS_Modification m(*container, graphicView); + m.cut(cutCoord, (RS_AtomicEntity *)cutEntity); - cutEntity = NULL; - cutCoord = Vector(false); - setStatus(ChooseCutEntity); + cutEntity = NULL; + cutCoord = Vector(false); + setStatus(ChooseCutEntity); - RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected()); - } + RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected()); + } } +void RS_ActionModifyCut::mouseMoveEvent(QMouseEvent * e) +{ + RS_DEBUG->print("RS_ActionModifyCut::mouseMoveEvent begin"); + switch (getStatus()) + { + case ChooseCutEntity: + break; -void RS_ActionModifyCut::mouseMoveEvent(QMouseEvent* e) { - RS_DEBUG->print("RS_ActionModifyCut::mouseMoveEvent begin"); - - switch (getStatus()) { - case ChooseCutEntity: - break; - - case SetCutCoord: - snapPoint(e); - break; + case SetCutCoord: + snapPoint(e); + break; - default: - break; - } + default: + break; + } - RS_DEBUG->print("RS_ActionModifyTrim::mouseMoveEvent end"); + RS_DEBUG->print("RS_ActionModifyTrim::mouseMoveEvent end"); } - -void RS_ActionModifyCut::mouseReleaseEvent(QMouseEvent* e) { - if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) { - switch (getStatus()) { - case ChooseCutEntity: - cutEntity = catchEntity(e); - if (cutEntity==NULL) { - RS_DIALOGFACTORY->commandMessage(tr("No Entity found.")); - } else if (cutEntity->rtti()!=RS2::EntityLine && - cutEntity->rtti()!=RS2::EntityArc && - cutEntity->rtti()!=RS2::EntityCircle && - cutEntity->rtti()!=RS2::EntityEllipse) { - - RS_DIALOGFACTORY->commandMessage( - tr("Entity must be a line, arc, circle or ellipse.")); - } else { - cutEntity->setHighlighted(true); - graphicView->drawEntity(cutEntity); - setStatus(SetCutCoord); - } - break; - - case SetCutCoord: - cutCoord = snapPoint(e); - if (cutEntity==NULL) { - RS_DIALOGFACTORY->commandMessage(tr("No Entity found.")); - } else if (!cutCoord.valid) { - RS_DIALOGFACTORY->commandMessage(tr("Cutting point is invalid.")); - } else if (!cutEntity->isPointOnEntity(cutCoord)) { - RS_DIALOGFACTORY->commandMessage( - tr("Cutting point is not on entity.")); - } else { - deleteSnapper(); - trigger(); - } - break; - - default: - break; - } - } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) { - deleteSnapper(); - if (cutEntity!=NULL) { - cutEntity->setHighlighted(false); - graphicView->drawEntity(cutEntity); - } - init(getStatus()-1); - } +void RS_ActionModifyCut::mouseReleaseEvent(QMouseEvent * e) +{ + if (e->button() == Qt::LeftButton) + { + switch (getStatus()) + { + case ChooseCutEntity: + cutEntity = catchEntity(e); + + if (cutEntity == NULL) + RS_DIALOGFACTORY->commandMessage(tr("No Entity found.")); + else if (cutEntity->rtti() != RS2::EntityLine + && cutEntity->rtti() != RS2::EntityArc + && cutEntity->rtti() != RS2::EntityCircle + && cutEntity->rtti() != RS2::EntityEllipse) + + RS_DIALOGFACTORY->commandMessage( + tr("Entity must be a line, arc, circle or ellipse.")); + else + { + cutEntity->setHighlighted(true); + graphicView->drawEntity(cutEntity); + setStatus(SetCutCoord); + } + break; + + case SetCutCoord: + cutCoord = snapPoint(e); + + if (cutEntity == NULL) + RS_DIALOGFACTORY->commandMessage(tr("No Entity found.")); + else if (!cutCoord.valid) + RS_DIALOGFACTORY->commandMessage(tr("Cutting point is invalid.")); + else if (!cutEntity->isPointOnEntity(cutCoord)) + RS_DIALOGFACTORY->commandMessage( + tr("Cutting point is not on entity.")); + else + { + deleteSnapper(); + trigger(); + } + break; + + default: + break; + } + } + else if (e->button() == Qt::RightButton) + { + deleteSnapper(); + + if (cutEntity != NULL) + { + cutEntity->setHighlighted(false); + graphicView->drawEntity(cutEntity); + } + init(getStatus() - 1); + } } - - -void RS_ActionModifyCut::updateMouseButtonHints() { - switch (getStatus()) { - case ChooseCutEntity: - RS_DIALOGFACTORY->updateMouseWidget(tr("Specify entity to cut"), - tr("Cancel")); - break; - case SetCutCoord: - RS_DIALOGFACTORY->updateMouseWidget(tr("Specify cutting point"), - tr("Back")); - break; - default: - RS_DIALOGFACTORY->updateMouseWidget("", ""); - break; - } +void RS_ActionModifyCut::updateMouseButtonHints() +{ + switch (getStatus()) + { + case ChooseCutEntity: + RS_DIALOGFACTORY->updateMouseWidget(tr("Specify entity to cut"), + tr("Cancel")); + break; + + case SetCutCoord: + RS_DIALOGFACTORY->updateMouseWidget(tr("Specify cutting point"), + tr("Back")); + break; + + default: + RS_DIALOGFACTORY->updateMouseWidget("", ""); + break; + } } - - -void RS_ActionModifyCut::updateMouseCursor() { - graphicView->setMouseCursor(RS2::CadCursor); +void RS_ActionModifyCut::updateMouseCursor() +{ + graphicView->setMouseCursor(RS2::CadCursor); } - - -void RS_ActionModifyCut::updateToolBar() { - - switch (getStatus()) { - case SetCutCoord: - RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap); - break; - case ChooseCutEntity: - default: - RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarModify); - break; - } +void RS_ActionModifyCut::updateToolBar() +{ + switch (getStatus()) + { + case SetCutCoord: + RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap); + break; + + case ChooseCutEntity: + default: + RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarModify); + break; + } } - - -// EOF