-
-void RS_ActionDrawLineBisector::commandEvent(RS_CommandEvent* e) {
- QString c = e->getCommand().toLower();
-
- if (checkCommand("help", c)) {
- RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
- + getAvailableCommands().join(", "));
- return;
- }
-
- switch (getStatus()) {
- case SetLine1:
- case SetLine2:
- lastStatus = (Status)getStatus();
- if (checkCommand("length", c)) {
- deleteSnapper();
- deletePreview();
- clearPreview();
- setStatus(SetLength);
- } else if (checkCommand("number", c)) {
- deleteSnapper();
- deletePreview();
- clearPreview();
- setStatus(SetNumber);
- }
- break;
-
- case SetLength: {
- bool ok;
- double l = RS_Math::eval(c, &ok);
- if (ok==true) {
- length = l;
- } else {
- RS_DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
- }
- RS_DIALOGFACTORY->requestOptions(this, true, true);
- setStatus(lastStatus);
- }
- break;
-
- case SetNumber: {
- bool ok;
- int n = (int)RS_Math::eval(c, &ok);
- if (ok==true) {
- number = n;
- } else {
- RS_DIALOGFACTORY->commandMessage(tr("Not a valid expression"));
- }
- RS_DIALOGFACTORY->requestOptions(this, true, true);
- setStatus(lastStatus);
- }
- break;
-
-
- default:
- break;
- }
+void RS_ActionDrawLineBisector::mouseReleaseEvent(QMouseEvent * e)
+{
+ if (e->button() == Qt::RightButton)
+ {
+ deletePreview();
+ clearPreview();
+ init(getStatus() - 1);
+ }
+ else
+ {
+ Vector mouse = Vector(graphicView->toGraphX(e->x()),
+ graphicView->toGraphY(e->y()));
+
+ switch (getStatus())
+ {
+ case SetLine1: {
+ coord1 = mouse;
+ RS_Entity * en = catchEntity(e, RS2::ResolveAll);
+
+ if (en != NULL && en->rtti() == RS2::EntityLine)
+ line1 = (RS_Line *)en;
+ }
+ setStatus(SetLine2);
+ break;
+
+ case SetLine2:
+ coord2 = mouse;
+ trigger();
+ setStatus(SetLine1);
+ break;
+ }
+ }