X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmirroraction.cpp;h=6bc5b59f207c844f9ea5709a1e8af5670aee9bd9;hb=dbfab6256efe6b03e9750e33081d9dcdcdfc1c34;hp=af786d7f1dc72393c3698cd09b3af38b69bf1098;hpb=921bf050ffe5fc81a9ab377e634180e659ee5d5d;p=architektonas diff --git a/src/mirroraction.cpp b/src/mirroraction.cpp index af786d7..6bc5b59 100644 --- a/src/mirroraction.cpp +++ b/src/mirroraction.cpp @@ -27,13 +27,10 @@ enum { FIRST_POINT, NEXT_POINT }; MirrorAction::MirrorAction(): state(FIRST_POINT), line(NULL), - shiftWasPressedOnNextPoint(false), mirror(new Container(Vector())) + shiftWasPressedOnNextPoint(false), ctrlWasPressed(false), + mirror(new Container(Vector())) { -// ApplicationWindow::drawing->document.CopySelectedContentsTo(selected); ApplicationWindow::drawing->document.CopySelectedContentsTo(mirror); - -// for(std::vector::iterator i=mirror->objects.begin(); i!=mirror->objects.end(); i++) -// (*i)->Save(); mirror->Save(); } @@ -68,8 +65,10 @@ MirrorAction::~MirrorAction() QString text = QChar(0x2221) + QObject::tr(": %1"); text = text.arg(absAngle); -// QString text = tr("Length: %1 in."); -// text = text.arg(Vector::Magnitude(p1, p2)); + + if (ctrlWasPressed) + text += " (Copy)"; + painter->DrawInformativeText(text); // Draw the mirror only if there's been a line to mirror around @@ -98,12 +97,8 @@ MirrorAction::~MirrorAction() else { p2 = point; - - for(std::vector::iterator i=mirror->objects.begin(); i!=mirror->objects.end(); i++) - { - (*i)->Restore(); - (*i)->Mirror(p1, p2); - } + mirror->Restore(); + mirror->Mirror(p1, p2); } } @@ -117,24 +112,25 @@ MirrorAction::~MirrorAction() } else if (state == NEXT_POINT) { - state = FIRST_POINT; - - std::vector & objs = ApplicationWindow::drawing->document.objects; + if (!ctrlWasPressed) + { + state = FIRST_POINT; + ApplicationWindow::drawing->document.MirrorSelected(p1, p2); - for(std::vector::iterator i=objs.begin(); i!=objs.end(); i++) + mirror->Clear(); + ApplicationWindow::drawing->document.CopySelectedContentsTo(mirror); + mirror->Save(); + } + else { - if ((*i)->state == OSSelected) - (*i)->Mirror(p1, p2); + mirror->CopyContentsTo(&(ApplicationWindow::drawing->document)); +// mirror->CopyContentsTo(&(DrawingView.document)); } - - mirror->Clear(); - ApplicationWindow::drawing->document.CopySelectedContentsTo(mirror); - mirror->Save(); } } -/*virtual*/ bool MirrorAction::KeyDown(int key) +/*virtual*/ void MirrorAction::KeyDown(int key) { if ((key == Qt::Key_Shift) && (state == NEXT_POINT)) { @@ -142,14 +138,17 @@ MirrorAction::~MirrorAction() p1Save = p1; p1 = p2; state = FIRST_POINT; - return true; + emit(NeedRefresh()); + } + else if (key == Qt::Key_Control) + { + ctrlWasPressed = true; + emit(NeedRefresh()); } - - return false; } -/*virtual*/ bool MirrorAction::KeyReleased(int key) +/*virtual*/ void MirrorAction::KeyReleased(int key) { if ((key == Qt::Key_Shift) && shiftWasPressedOnNextPoint) { @@ -157,9 +156,12 @@ MirrorAction::~MirrorAction() p2 = p1; p1 = p1Save; state = NEXT_POINT; - return true; + emit(NeedRefresh()); + } + else if (key == Qt::Key_Control) + { + ctrlWasPressed = false; + emit(NeedRefresh()); } - - return false; }