10 #include "DocumentSerialize.h" 11 #include "EngaugeAssert.h" 12 #include "ExportToClipboard.h" 13 #include "GraphicsItemType.h" 14 #include "GraphicsView.h" 16 #include "MainWindow.h" 17 #include "MimePointsExport.h" 18 #include <QApplication> 20 #include <QTextStream> 21 #include "QtToString.h" 22 #include <QXmlStreamReader> 25 const QString CMD_DESCRIPTION (
"Copy");
29 const QStringList &selectedPointIdentifiers) :
33 m_transformIsDefined (mainWindow.transformIsDefined())
35 LOG4CPP_INFO_S ((*mainCat)) <<
"CmdCopy::CmdCopy" 36 <<
" selected=" << selectedPointIdentifiers.count ();
39 QTextStream strCsv (&m_csv), strHtml (&m_html);
51 const QString &cmdDescription,
52 QXmlStreamReader &reader) :
57 LOG4CPP_INFO_S ((*mainCat)) <<
"CmdCopy::CmdCopy";
59 QXmlStreamAttributes attributes = reader.attributes();
61 if (!attributes.hasAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED) ||
62 !attributes.hasAttribute(DOCUMENT_SERIALIZE_CSV) ||
63 !attributes.hasAttribute(DOCUMENT_SERIALIZE_HTML)) {
64 xmlExitWithError (reader,
65 QString (
"%1 %2, %3 %4 %5")
66 .arg (QObject::tr (
"Missing attribute(s)"))
67 .arg (DOCUMENT_SERIALIZE_TRANSFORM_DEFINED)
68 .arg (DOCUMENT_SERIALIZE_CSV)
69 .arg (QObject::tr (
"and/or"))
70 .arg (DOCUMENT_SERIALIZE_HTML));
73 QString defined = attributes.value(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED).toString();
75 m_transformIsDefined = (defined == DOCUMENT_SERIALIZE_BOOL_TRUE);
76 m_csv = attributes.value(DOCUMENT_SERIALIZE_CSV).toString();
77 m_html = attributes.value(DOCUMENT_SERIALIZE_HTML).toString();
87 LOG4CPP_INFO_S ((*mainCat)) <<
"CmdCopy::cmdRedo";
90 if (m_transformIsDefined) {
97 QClipboard *clipboard = QApplication::clipboard();
98 clipboard->setMimeData (mimePointsExport, QClipboard::Clipboard);
108 LOG4CPP_INFO_S ((*mainCat)) <<
"CmdCopy::cmdUndo";
118 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
119 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_TYPE, DOCUMENT_SERIALIZE_CMD_COPY);
120 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
121 writer.writeAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED,
122 m_transformIsDefined ? DOCUMENT_SERIALIZE_BOOL_TRUE : DOCUMENT_SERIALIZE_BOOL_FALSE);
123 writer.writeAttribute(DOCUMENT_SERIALIZE_CSV, m_csv);
124 writer.writeAttribute(DOCUMENT_SERIALIZE_HTML, m_html);
125 m_curvesGraphs.
saveXml(writer);
126 writer.writeEndElement();
virtual void cmdUndo()
Undo method that is called when QUndoStack is moved one command backward.
CmdCopy(MainWindow &mainWindow, Document &document, const QStringList &selectedPointIdentifiers)
Constructor for normal creation.
void loadXml(QXmlStreamReader &reader)
Load from serialized xml post-version 5 file.
Wrapper around QUndoCommand. This simplifies the more complicated feature set of QUndoCommand.
Transformation transformation() const
Return read-only copy of transformation.
void saveOrCheckPostCommandDocumentStateHash(const Document &document)
Save, when called the first time, a hash value representing the state of the Document.
void saveXml(QXmlStreamWriter &writer) const
Serialize curves.
virtual void cmdRedo()
Redo method that is called when QUndoStack is moved one command forward.
void saveOrCheckPreCommandDocumentStateHash(const Document &document)
Save, when called the first time, a hash value representing the state of the Document.
Custom mime type for separate treatment of graph coordinates and, when there is no transform...
MainWindow & mainWindow()
Return the MainWindow so it can be updated by this command as a last step.
virtual void saveXml(QXmlStreamWriter &writer) const
Save commands as xml for later uploading.
void updateAfterCommand()
See GraphicsScene::updateAfterCommand.
Storage of one imported image and the data attached to that image.
Strategy class for exporting to the clipboard. This strategy is external to the Document class so tha...
Document & document()
Return the Document that this command will modify during redo and undo.
const CurvesGraphs & curvesGraphs() const
Make all Curves available, read only, for CmdAbstract classes only.
const Curve & curveAxes() const
Get method for axis curve.
void exportToClipboard(const QStringList &selected, const Transformation &transformation, QTextStream &strCsv, QTextStream &strHtml, const Curve &curveAxis, const CurvesGraphs &curvesGraphsAll, CurvesGraphs &curvesGraphsSelected) const
Export, curve-by-curve, raw data points to a string that will be copied to the clipboard.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
void updatePointOrdinals(const Transformation &transformation)
Update point ordinals after point addition/removal or dragging.