#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()
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();
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)
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");
}
{
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()
void ActionDrawLineAngle::coordinateEvent(Vector * e)
{
- if (e == NULL)
+ if (!e)
return;
switch (getStatus())
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;
switch (getStatus())
{
case SetPos:
-
if (!fixedAngle)
cmd += command("angle");
+
cmd += command("length");
break;
switch (getStatus())
{
case SetPos:
- RS_DIALOGFACTORY->updateMouseWidget(tr("Specify position"),
- tr("Cancel"));
+ RS_DIALOGFACTORY->updateMouseWidget(tr("Specify position"), tr("Cancel"));
break;
case SetAngle:
void ActionDrawLineAngle::showOptions()
{
ActionInterface::showOptions();
-
RS_DIALOGFACTORY->requestOptions(this, true);
}
void ActionDrawLineAngle::hideOptions()
{
ActionInterface::hideOptions();
-
RS_DIALOGFACTORY->requestOptions(this, false);
}
void ActionDrawLineAngle::setSnapPoint(int sp)
{
snpPoint = sp;
+// graphicView->redraw();
}
int ActionDrawLineAngle::getSnapPoint()
void ActionDrawLineAngle::setAngle(double a)
{
angle = a;
+// graphicView->redraw();
}
double ActionDrawLineAngle::getAngle()
void ActionDrawLineAngle::setLength(double l)
{
length = l;
+// graphicView->redraw();
}
double ActionDrawLineAngle::getLength()