Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
CmdPaste.cpp
1 #include "CmdPaste.h"
2 #include "DataKey.h"
3 #include "Document.h"
4 #include "DocumentSerialize.h"
5 #include "EngaugeAssert.h"
6 #include "GraphicsItemType.h"
7 #include "GraphicsView.h"
8 #include "Logger.h"
9 #include "MainWindow.h"
10 #include "MimePoints.h"
11 #include <QApplication>
12 #include <QClipboard>
13 #include <QGraphicsItem>
14 #include <QTextStream>
15 #include "QtToString.h"
16 #include <QXmlStreamReader>
17 
18 const QString CMD_DESCRIPTION ("Paste");
19 
21  Document &document,
22  const QStringList &selectedPointIdentifiers) :
23  CmdAbstract(mainWindow,
24  document,
25  CMD_DESCRIPTION)
26 {
27  QStringList selected;
28  QStringList::const_iterator itr;
29  for (itr = selectedPointIdentifiers.begin (); itr != selectedPointIdentifiers.end (); itr++) {
30 
31  QString selectedPointIdentifier = *itr;
32 
33  selected << selectedPointIdentifier;
34  m_copiedPoints.setKeyValue (selectedPointIdentifier, true);
35  }
36 
37  LOG4CPP_INFO_S ((*mainCat)) << "CmdPaste::CmdPaste"
38  << " selected=" << selected.join (", ").toLatin1 ().data () << ")";
39 }
40 
42  Document &document,
43  const QString &cmdDescription,
44  QXmlStreamReader &reader) :
45  CmdAbstract (mainWindow,
46  document,
47  cmdDescription)
48 {
49  LOG4CPP_INFO_S ((*mainCat)) << "CmdPaste::CmdPaste";
50 
51  m_copiedPoints.loadXml (reader);
52 }
53 
54 CmdPaste::~CmdPaste ()
55 {
56 }
57 
59 {
60  LOG4CPP_INFO_S ((*mainCat)) << "CmdPaste::cmdRedo"
61  << " pasting=" << m_copiedPoints.count ();
62 
63  QClipboard *clipboard = QApplication::clipboard();
64  clipboard->setMimeData (&m_mimePoints, QClipboard::Clipboard);
65  document().updatePointOrdinals (mainWindow().transformation());
67 }
68 
70 {
71  LOG4CPP_INFO_S ((*mainCat)) << "CmdPaste::cmdUndo"
72  << " pasting=" << m_copiedPoints.count ();
73 
75 }
76 
77 void CmdPaste::saveXml (QXmlStreamWriter &writer) const
78 {
79  writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
80  writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_TYPE, DOCUMENT_SERIALIZE_CMD_PASTE);
81  writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
82  m_copiedPoints.saveXml (writer);
83  writer.writeEndElement();
84 }
virtual void cmdUndo()
Undo method that is called when QUndoStack is moved one command backward.
Definition: CmdPaste.cpp:69
void saveXml(QXmlStreamWriter &writer) const
Serialize table to xml.
Wrapper around QUndoCommand. This simplifies the more complicated feature set of QUndoCommand.
Definition: CmdAbstract.h:11
void setKeyValue(const QString &pointIdentifier, bool value)
Set key/value pair.
virtual void saveXml(QXmlStreamWriter &writer) const
Save commands as xml for later uploading.
Definition: CmdPaste.cpp:77
MainWindow & mainWindow()
Return the MainWindow so it can be updated by this command as a last step.
Definition: CmdAbstract.cpp:32
void updateAfterCommand()
See GraphicsScene::updateAfterCommand.
Storage of one imported image and the data attached to that image.
Definition: Document.h:29
void loadXml(QXmlStreamReader &reader)
Load from serialized xml.
int count() const
Number of entries.
CmdPaste(MainWindow &mainWindow, Document &document, const QStringList &selectedPointIdentifiers)
Constructor for normal creation.
Definition: CmdPaste.cpp:20
Document & document()
Return the Document that this command will modify during redo and undo.
Definition: CmdAbstract.cpp:22
virtual void cmdRedo()
Redo method that is called when QUndoStack is moved one command forward.
Definition: CmdPaste.cpp:58
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:60
void updatePointOrdinals(const Transformation &transformation)
Update point ordinals after point addition/removal or dragging.
Definition: Document.cpp:926