1 // rs_actioneditpaste.cpp
3 // Part of the Architektonas Project
4 // Originally part of QCad Community Edition by Andrew Mustun
5 // Extensively rewritten and refactored by James L. Hammons
6 // (C) 2010 Underground Software
8 // JLH = James L. Hammons <jlhamm@acm.org>
11 // --- ---------- -----------------------------------------------------------
12 // JLH 06/04/2010 Added this text. :-)
15 #include "rs_actioneditpaste.h"
17 #include "rs_clipboard.h"
18 #include "rs_dialogfactory.h"
19 #include "rs_modification.h"
20 #include "rs_preview.h"
26 * @param undo true for undo and false for redo.
28 RS_ActionEditPaste::RS_ActionEditPaste(RS_EntityContainer & container, GraphicView & graphicView): RS_PreviewActionInterface("Edit Paste",
29 container, graphicView)
33 RS_ActionEditPaste::~RS_ActionEditPaste()
37 void RS_ActionEditPaste::init(int status)
39 RS_PreviewActionInterface::init(status);
43 void RS_ActionEditPaste::trigger()
49 RS_Modification m(*container, graphicView);
50 m.paste(RS_PasteData(targetPoint, 1.0, 0.0, false, ""));
51 //std::cout << *RS_Clipboard::instance();
53 graphicView->redraw();
57 void RS_ActionEditPaste::mouseMoveEvent(QMouseEvent * e)
62 targetPoint = snapPoint(e);
66 preview->addAllFrom(*RS_CLIPBOARD->getGraphic());
67 preview->move(targetPoint);
71 RS2::Unit sourceUnit = RS_CLIPBOARD->getGraphic()->getUnit();
72 RS2::Unit targetUnit = graphic->getUnit();
73 double f = RS_Units::convert(1.0, sourceUnit, targetUnit);
74 preview->scale(targetPoint, Vector(f, f));
84 void RS_ActionEditPaste::mouseReleaseEvent(QMouseEvent * e)
86 if (e->button() == Qt::LeftButton)
88 Vector ce(snapPoint(e));
91 else if (e->button() == Qt::RightButton)
94 init(getStatus() - 1);
98 void RS_ActionEditPaste::coordinateEvent(Vector * e)
107 void RS_ActionEditPaste::updateMouseButtonHints()
112 RS_DIALOGFACTORY->updateMouseWidget(tr("Set reference point"),
117 RS_DIALOGFACTORY->updateMouseWidget("", "");
122 void RS_ActionEditPaste::updateMouseCursor()
124 graphicView->setMouseCursor(RS2::CadCursor);
127 void RS_ActionEditPaste::updateToolBar()
130 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
132 RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarMain);