X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Factions%2Frs_actionmodifystretch.cpp;h=7f391f85755fadb215fe067f64218cf97d7d5ec5;hb=3f46c180da0806c9c263e6d87d0f1404632402da;hp=aeeecb9284b71fa2dcef3cf0cb5a67c01346334b;hpb=16ce54abf01ca3032e42a5bb11a4afcf9014dcca;p=architektonas diff --git a/src/actions/rs_actionmodifystretch.cpp b/src/actions/rs_actionmodifystretch.cpp index aeeecb9..7f391f8 100644 --- a/src/actions/rs_actionmodifystretch.cpp +++ b/src/actions/rs_actionmodifystretch.cpp @@ -1,243 +1,228 @@ -/**************************************************************************** -** $Id: rs_actionmodifystretch.cpp 1161 2004-12-09 23:10:09Z 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_actionmodifystretch.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_actionmodifystretch.h" -#include "rs_snapper.h" +#include "rs_dialogfactory.h" +#include "rs_modification.h" +#include "rs_preview.h" - - -RS_ActionModifyStretch::RS_ActionModifyStretch(RS_EntityContainer& container, - RS_GraphicView& graphicView) - :RS_PreviewActionInterface("Stretch Entities", - container, graphicView) { - - firstCorner = Vector(false); - secondCorner = Vector(false); - referencePoint = Vector(false); - targetPoint = Vector(false); +RS_ActionModifyStretch::RS_ActionModifyStretch(RS_EntityContainer & container, + RS_GraphicView & graphicView): RS_PreviewActionInterface("Stretch Entities", + container, graphicView) +{ + firstCorner = Vector(false); + secondCorner = Vector(false); + referencePoint = Vector(false); + targetPoint = Vector(false); } -QAction* RS_ActionModifyStretch::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/) +RS_ActionModifyStretch::~RS_ActionModifyStretch() { - QAction * action = new QAction(tr("&Stretch"), 0); -// QAction* action = new QAction(tr("Stretch"), tr("&Stretch"), -// QKeySequence(), NULL); - action->setStatusTip(tr("Stretch Entities")); - return action; } - -void RS_ActionModifyStretch::init(int status) { - RS_ActionInterface::init(status); - +void RS_ActionModifyStretch::init(int status) +{ + RS_ActionInterface::init(status); } +void RS_ActionModifyStretch::trigger() +{ + RS_DEBUG->print("RS_ActionModifyStretch::trigger()"); + deletePreview(); + clearPreview(); -void RS_ActionModifyStretch::trigger() { - - RS_DEBUG->print("RS_ActionModifyStretch::trigger()"); - - deletePreview(); - clearPreview(); - - deleteSnapper(); + deleteSnapper(); - RS_Modification m(*container, graphicView); - m.stretch(firstCorner, secondCorner, targetPoint-referencePoint); + RS_Modification m(*container, graphicView); + m.stretch(firstCorner, secondCorner, targetPoint - referencePoint); - drawSnapper(); + drawSnapper(); - setStatus(SetFirstCorner); + setStatus(SetFirstCorner); - RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected()); + RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected()); } - - -void RS_ActionModifyStretch::mouseMoveEvent(QMouseEvent* e) { - RS_DEBUG->print("RS_ActionModifyStretch::mouseMoveEvent begin"); - - Vector mouse = snapPoint(e); - switch (getStatus()) { - case SetFirstCorner: - break; - - case SetSecondCorner: - if (firstCorner.valid) { - secondCorner = snapPoint(e); - deletePreview(); - clearPreview(); - preview->addEntity( - new RS_Line(preview, - RS_LineData(Vector(firstCorner.x, - firstCorner.y), - Vector(secondCorner.x, - firstCorner.y)))); - preview->addEntity( - new RS_Line(preview, - RS_LineData(Vector(secondCorner.x, - firstCorner.y), - Vector(secondCorner.x, - secondCorner.y)))); - preview->addEntity( - new RS_Line(preview, - RS_LineData(Vector(secondCorner.x, - secondCorner.y), - Vector(firstCorner.x, - secondCorner.y)))); - preview->addEntity( - new RS_Line(preview, - RS_LineData(Vector(firstCorner.x, - secondCorner.y), - Vector(firstCorner.x, - firstCorner.y)))); - drawPreview(); - } - break; - - case SetReferencePoint: - break; - - case SetTargetPoint: - if (referencePoint.valid) { - targetPoint = mouse; - - deletePreview(); - clearPreview(); - preview->addStretchablesFrom(*container, firstCorner, secondCorner); - //preview->move(targetPoint-referencePoint); - preview->stretch(firstCorner, secondCorner, - targetPoint-referencePoint); - drawPreview(); - } - break; - - default: - break; - } - - RS_DEBUG->print("RS_ActionModifyStretch::mouseMoveEvent end"); +void RS_ActionModifyStretch::mouseMoveEvent(QMouseEvent * e) +{ + RS_DEBUG->print("RS_ActionModifyStretch::mouseMoveEvent begin"); + + Vector mouse = snapPoint(e); + + switch (getStatus()) + { + case SetFirstCorner: + break; + + case SetSecondCorner: + + if (firstCorner.valid) + { + secondCorner = snapPoint(e); + deletePreview(); + clearPreview(); + preview->addEntity( + new RS_Line(preview, + RS_LineData(Vector(firstCorner.x, + firstCorner.y), + Vector(secondCorner.x, + firstCorner.y)))); + preview->addEntity( + new RS_Line(preview, + RS_LineData(Vector(secondCorner.x, + firstCorner.y), + Vector(secondCorner.x, + secondCorner.y)))); + preview->addEntity( + new RS_Line(preview, + RS_LineData(Vector(secondCorner.x, + secondCorner.y), + Vector(firstCorner.x, + secondCorner.y)))); + preview->addEntity( + new RS_Line(preview, + RS_LineData(Vector(firstCorner.x, + secondCorner.y), + Vector(firstCorner.x, + firstCorner.y)))); + drawPreview(); + } + break; + + case SetReferencePoint: + break; + + case SetTargetPoint: + + if (referencePoint.valid) + { + targetPoint = mouse; + + deletePreview(); + clearPreview(); + preview->addStretchablesFrom(*container, firstCorner, secondCorner); + //preview->move(targetPoint-referencePoint); + preview->stretch(firstCorner, secondCorner, + targetPoint - referencePoint); + drawPreview(); + } + break; + + default: + break; + } + + RS_DEBUG->print("RS_ActionModifyStretch::mouseMoveEvent end"); } - - -void RS_ActionModifyStretch::mouseReleaseEvent(QMouseEvent* 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_ActionModifyStretch::mouseReleaseEvent(QMouseEvent * e) +{ + if (e->button() == Qt::LeftButton) + { + Vector ce(snapPoint(e)); + coordinateEvent(&ce); + } + else if (e->button() == Qt::RightButton) + { + deletePreview(); + deleteSnapper(); + init(getStatus() - 1); + } } - - -void RS_ActionModifyStretch::coordinateEvent(RS_CoordinateEvent* e) { - if (e==NULL) { - return; - } - - Vector mouse = e->getCoordinate(); - - switch (getStatus()) { - case SetFirstCorner: - firstCorner = mouse; - setStatus(SetSecondCorner); - break; - - case SetSecondCorner: - secondCorner = mouse; - deletePreview(); - clearPreview(); - setStatus(SetReferencePoint); - break; - - case SetReferencePoint: - referencePoint = mouse; - graphicView->moveRelativeZero(referencePoint); - setStatus(SetTargetPoint); - break; - - case SetTargetPoint: - targetPoint = mouse; - graphicView->moveRelativeZero(targetPoint); - trigger(); - //finish(); - break; - - default: - break; - } - +void RS_ActionModifyStretch::coordinateEvent(Vector * e) +{ + if (e == NULL) + return; + + Vector mouse = *e; + + switch (getStatus()) + { + case SetFirstCorner: + firstCorner = mouse; + setStatus(SetSecondCorner); + break; + + case SetSecondCorner: + secondCorner = mouse; + deletePreview(); + clearPreview(); + setStatus(SetReferencePoint); + break; + + case SetReferencePoint: + referencePoint = mouse; + graphicView->moveRelativeZero(referencePoint); + setStatus(SetTargetPoint); + break; + + case SetTargetPoint: + targetPoint = mouse; + graphicView->moveRelativeZero(targetPoint); + trigger(); + //finish(); + break; + + default: + break; + } } - -void RS_ActionModifyStretch::updateMouseButtonHints() { - switch (getStatus()) { - case SetFirstCorner: - RS_DIALOGFACTORY->updateMouseWidget(tr("Specify first corner"), - tr("Cancel")); - break; - case SetSecondCorner: - RS_DIALOGFACTORY->updateMouseWidget(tr("Specify second corner"), - tr("Back")); - break; - case SetReferencePoint: - RS_DIALOGFACTORY->updateMouseWidget(tr("Specify reference point"), - tr("Back")); - break; - case SetTargetPoint: - RS_DIALOGFACTORY->updateMouseWidget(tr("Specify target point"), - tr("Back")); - break; - default: - RS_DIALOGFACTORY->updateMouseWidget("", ""); - break; - } +void RS_ActionModifyStretch::updateMouseButtonHints() +{ + switch (getStatus()) + { + case SetFirstCorner: + RS_DIALOGFACTORY->updateMouseWidget(tr("Specify first corner"), + tr("Cancel")); + break; + + case SetSecondCorner: + RS_DIALOGFACTORY->updateMouseWidget(tr("Specify second corner"), + tr("Back")); + break; + + case SetReferencePoint: + RS_DIALOGFACTORY->updateMouseWidget(tr("Specify reference point"), + tr("Back")); + break; + + case SetTargetPoint: + RS_DIALOGFACTORY->updateMouseWidget(tr("Specify target point"), + tr("Back")); + break; + + default: + RS_DIALOGFACTORY->updateMouseWidget("", ""); + break; + } } - - -void RS_ActionModifyStretch::updateMouseCursor() { - graphicView->setMouseCursor(RS2::CadCursor); +void RS_ActionModifyStretch::updateMouseCursor() +{ + graphicView->setMouseCursor(RS2::CadCursor); } - - -void RS_ActionModifyStretch::updateToolBar() { - if (!isFinished()) { - RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap); - } else { - RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarModify); - } +void RS_ActionModifyStretch::updateToolBar() +{ + if (!isFinished()) + RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap); + else + RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarModify); } - // EOF