X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Factions%2Factiondrawlineangle.cpp;h=e0c1d6839327872f05e89cebc36395e4f0657ae0;hb=1f0d096a7fc370ff02477f3860beae2669bf8903;hp=0022d6fd3137d095c2959de82d08e38c53de08b2;hpb=20cce16e98fc9b052c5862efa6394a285971e846;p=architektonas diff --git a/src/actions/actiondrawlineangle.cpp b/src/actions/actiondrawlineangle.cpp index 0022d6f..e0c1d68 100644 --- a/src/actions/actiondrawlineangle.cpp +++ b/src/actions/actiondrawlineangle.cpp @@ -23,16 +23,17 @@ #include "graphicview.h" #include "rs_preview.h" -ActionDrawLineAngle::ActionDrawLineAngle(RS_EntityContainer & container, GraphicView & graphicView, double angle, bool fixedAngle): - ActionInterface("Draw lines with given angle", - container, graphicView) +ActionDrawLineAngle::ActionDrawLineAngle(RS_EntityContainer & container, + GraphicView & graphicView, double a, bool fa): + ActionInterface("Draw lines with given angle", container, graphicView), + pos(Vector(false)), angle(a), length(1.0), fixedAngle(fa), snpPoint(0) { - this->angle = angle; - length = 1.0; - snpPoint = 0; - this->fixedAngle = fixedAngle; - pos = Vector(false); reset(); + //hm. +// graphicView.snapper.SetContainer(&container); +// graphicView.snapper.SetGraphicView(&graphicView); +// graphicView.snapper.SetVisible(); +// graphicView.preview.SetVisible(); } ActionDrawLineAngle::~ActionDrawLineAngle() @@ -52,21 +53,19 @@ void ActionDrawLineAngle::reset() void ActionDrawLineAngle::init(int status) { ActionInterface::init(status); - reset(); } void ActionDrawLineAngle::trigger() { ActionInterface::trigger(); - preparePreview(); RS_Line * line = new RS_Line(container, data); line->setLayerToActive(); line->setPenToActive(); container->addEntity(line); - // upd. undo list: + // Update undo list: if (document) { document->startUndoCycle(); @@ -74,12 +73,12 @@ void ActionDrawLineAngle::trigger() document->endUndoCycle(); } - deleteSnapper(); +// deleteSnapper(); graphicView->moveRelativeZero(Vector(0.0, 0.0)); graphicView->drawEntity(line); graphicView->moveRelativeZero(data.startpoint); - RS_DEBUG->print("ActionDrawLineAngle::trigger(): line added: %d", - line->getId()); + graphicView->redraw(); + RS_DEBUG->print("ActionDrawLineAngle::trigger(): line added: %d", line->getId()); } void ActionDrawLineAngle::mouseMoveEvent(QMouseEvent * e) @@ -89,13 +88,17 @@ void ActionDrawLineAngle::mouseMoveEvent(QMouseEvent * e) if (getStatus() == SetPos) { pos = snapPoint(e); - deletePreview(); - clearPreview(); - preparePreview(); +// deletePreview(); +// clearPreview(); +// preparePreview(); // preview->addEntity(new RS_Line(preview, data)); - drawPreview(); +// drawPreview(); + preparePreview(); + graphicView->preview.clear(); + graphicView->preview.addEntity(new RS_Line(&(graphicView->preview), data)); } + graphicView->redraw(); RS_DEBUG->print("ActionDrawLineAngle::mouseMoveEvent end"); } @@ -105,16 +108,20 @@ void ActionDrawLineAngle::mouseReleaseEvent(QMouseEvent * e) { if (getStatus() == SetPos) { - Vector ce(snapPoint(e)); +// Vector ce(snapPoint(e)); + Vector ce(graphicView->snapper.snapPoint(e)); coordinateEvent(&ce); } } else if (e->button() == Qt::RightButton) { - deletePreview(); - deleteSnapper(); +// deletePreview(); +// deleteSnapper(); init(getStatus() - 1); } + + graphicView->preview.clear(); // Remove entities from container + graphicView->redraw(); } void ActionDrawLineAngle::preparePreview() @@ -139,7 +146,7 @@ void ActionDrawLineAngle::preparePreview() void ActionDrawLineAngle::coordinateEvent(Vector * e) { - if (e == NULL) + if (!e) return; switch (getStatus()) @@ -168,48 +175,51 @@ void ActionDrawLineAngle::commandEvent(RS_CommandEvent * e) switch (getStatus()) { case SetPos: - if (!fixedAngle && checkCommand("angle", c)) { - deleteSnapper(); - deletePreview(); - clearPreview(); +// deleteSnapper(); +// deletePreview(); +// clearPreview(); setStatus(SetAngle); } else if (checkCommand("length", c)) { - deleteSnapper(); - deletePreview(); - clearPreview(); +// deleteSnapper(); +// deletePreview(); +// clearPreview(); setStatus(SetLength); } break; - case SetAngle: { + case SetAngle: + { bool ok; double a = RS_Math::eval(c, &ok); - if (ok == true) + if (ok) angle = RS_Math::deg2rad(a); else RS_DIALOGFACTORY->commandMessage(tr("Not a valid expression")); + RS_DIALOGFACTORY->requestOptions(this, true, true); setStatus(SetPos); } - break; + break; - case SetLength: { + case SetLength: + { bool ok; double l = RS_Math::eval(c, &ok); - if (ok == true) + if (ok) length = l; else RS_DIALOGFACTORY->commandMessage(tr("Not a valid expression")); + RS_DIALOGFACTORY->requestOptions(this, true, true); setStatus(SetPos); } - break; + break; default: break; @@ -223,9 +233,9 @@ QStringList ActionDrawLineAngle::getAvailableCommands() switch (getStatus()) { case SetPos: - if (!fixedAngle) cmd += command("angle"); + cmd += command("length"); break; @@ -241,8 +251,7 @@ void ActionDrawLineAngle::updateMouseButtonHints() switch (getStatus()) { case SetPos: - RS_DIALOGFACTORY->updateMouseWidget(tr("Specify position"), - tr("Cancel")); + RS_DIALOGFACTORY->updateMouseWidget(tr("Specify position"), tr("Cancel")); break; case SetAngle: @@ -261,14 +270,12 @@ void ActionDrawLineAngle::updateMouseButtonHints() void ActionDrawLineAngle::showOptions() { ActionInterface::showOptions(); - RS_DIALOGFACTORY->requestOptions(this, true); } void ActionDrawLineAngle::hideOptions() { ActionInterface::hideOptions(); - RS_DIALOGFACTORY->requestOptions(this, false); } @@ -288,6 +295,7 @@ void ActionDrawLineAngle::updateToolBar() void ActionDrawLineAngle::setSnapPoint(int sp) { snpPoint = sp; +// graphicView->redraw(); } int ActionDrawLineAngle::getSnapPoint() @@ -298,6 +306,7 @@ int ActionDrawLineAngle::getSnapPoint() void ActionDrawLineAngle::setAngle(double a) { angle = a; +// graphicView->redraw(); } double ActionDrawLineAngle::getAngle() @@ -308,6 +317,7 @@ double ActionDrawLineAngle::getAngle() void ActionDrawLineAngle::setLength(double l) { length = l; +// graphicView->redraw(); } double ActionDrawLineAngle::getLength()