Engauge Digitizer 2
Loading...
Searching...
No Matches
CmdCut.cpp
Go to the documentation of this file.
1/******************************************************************************************************
2 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5 ******************************************************************************************************/
6
7#include "CmdCut.h"
8#include "DataKey.h"
9#include "Document.h"
10#include "DocumentSerialize.h"
11#include "EngaugeAssert.h"
12#include "ExportToClipboard.h"
13#include "GraphicsItemType.h"
14#include "GraphicsView.h"
15#include "Logger.h"
16#include "MainWindow.h"
17#include "MimePointsExport.h"
18#include <QApplication>
19#include <QClipboard>
20#include <QTextStream>
21#include "QtToString.h"
22#include <QXmlStreamReader>
23#include "Xml.h"
24
25const QString CMD_DESCRIPTION ("Cut");
26
28 Document &document,
29 const QStringList &selectedPointIdentifiers) :
30 CmdPointChangeBase (mainWindow,
31 document,
33 m_transformIsDefined (mainWindow.transformIsDefined())
34{
35 LOG4CPP_INFO_S ((*mainCat)) << "CmdCut::CmdCut"
36 << " selected=" << selectedPointIdentifiers.count ();
37
38 // Export to clipboard
39 ExportToClipboard exportStrategy;
40 QTextStream strCsv (&m_csv), strHtml (&m_html);
41 exportStrategy.exportToClipboard (selectedPointIdentifiers,
43 strCsv,
44 strHtml,
47 m_curvesGraphsRemoved);
48}
49
51 Document &document,
52 const QString &cmdDescription,
53 QXmlStreamReader &reader) :
54 CmdPointChangeBase (mainWindow,
55 document,
56 cmdDescription)
57{
58 LOG4CPP_INFO_S ((*mainCat)) << "CmdCut::CmdCut";
59
60 QXmlStreamAttributes attributes = reader.attributes();
61
62 if (!attributes.hasAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED) ||
63 !attributes.hasAttribute(DOCUMENT_SERIALIZE_CSV) ||
64 !attributes.hasAttribute(DOCUMENT_SERIALIZE_HTML)) {
65 xmlExitWithError (reader,
66 QString ("%1 %2, %3 %4 %5")
67 .arg (QObject::tr ("Missing argument(s)"))
70 .arg (QObject::tr ("and/or"))
72 }
73
74 QString defined = attributes.value(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED).toString();
75
76 m_transformIsDefined = (defined == DOCUMENT_SERIALIZE_BOOL_TRUE);
77 m_csv = attributes.value(DOCUMENT_SERIALIZE_CSV).toString();
78 m_html = attributes.value(DOCUMENT_SERIALIZE_HTML).toString();
79 m_curvesGraphsRemoved.loadXml(reader);
80}
81
83{
84}
85
87{
88 LOG4CPP_INFO_S ((*mainCat)) << "CmdCut::cmdRedo";
89
90 MimePointsExport *mimePointsExport;
91 if (m_transformIsDefined) {
92 mimePointsExport = new MimePointsExport (m_csv,
93 m_html);
94 } else {
95 mimePointsExport = new MimePointsExport (m_csv);
96 }
97
98 QClipboard *clipboard = QApplication::clipboard();
99 clipboard->setMimeData (mimePointsExport, QClipboard::Clipboard);
100
103 document().removePointsInCurvesGraphs (m_curvesGraphsRemoved);
104
105 document().updatePointOrdinals (mainWindow().transformation());
108}
109
119
120void CmdCut::saveXml (QXmlStreamWriter &writer) const
121{
122 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
124 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
125 writer.writeAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED,
127 writer.writeAttribute(DOCUMENT_SERIALIZE_CSV, m_csv);
128 writer.writeAttribute(DOCUMENT_SERIALIZE_HTML, m_html);
129 m_curvesGraphsRemoved.saveXml(writer);
130 writer.writeEndElement();
131}
const QString CMD_DESCRIPTION("Cut")
const QString DOCUMENT_SERIALIZE_TRANSFORM_DEFINED
const QString DOCUMENT_SERIALIZE_CMD
const QString DOCUMENT_SERIALIZE_CMD_TYPE
const QString DOCUMENT_SERIALIZE_CMD_CUT
const QString DOCUMENT_SERIALIZE_CMD_DESCRIPTION
const QString DOCUMENT_SERIALIZE_HTML
const QString DOCUMENT_SERIALIZE_CSV
const QString DOCUMENT_SERIALIZE_BOOL_TRUE
const QString DOCUMENT_SERIALIZE_BOOL_FALSE
log4cpp::Category * mainCat
Definition Logger.cpp:14
void xmlExitWithError(QXmlStreamReader &reader, const QString &message)
Show specified message for an error while reading xml, then quit.
Definition Xml.cpp:25
Document & document()
Return the Document that this command will modify during redo and undo.
MainWindow & mainWindow()
Return the MainWindow so it can be updated by this command as a last step.
void saveOrCheckPostCommandDocumentStateHash(const Document &document)
Save, when called the first time, a hash value representing the state of the Document.
void saveOrCheckPreCommandDocumentStateHash(const Document &document)
Save, when called the first time, a hash value representing the state of the Document.
virtual void cmdRedo()
Redo method that is called when QUndoStack is moved one command forward.
Definition CmdCut.cpp:86
virtual ~CmdCut()
Definition CmdCut.cpp:82
CmdCut(MainWindow &mainWindow, Document &document, const QStringList &selectedPointIdentifiers)
Constructor for normal creation.
Definition CmdCut.cpp:27
virtual void cmdUndo()
Undo method that is called when QUndoStack is moved one command backward.
Definition CmdCut.cpp:110
virtual void saveXml(QXmlStreamWriter &writer) const
Save commands as xml for later uploading.
Definition CmdCut.cpp:120
Base class for CmdBase leaf subclasses that involve point additions, deletions and/or modifications.
void saveDocumentState(const Document &document)
Save the document state for restoration by restoreDocumentState.
void restoreDocumentState(Document &document) const
Restore the document previously saved by saveDocumentState.
void saveXml(QXmlStreamWriter &writer) const
Serialize curves.
void loadXml(QXmlStreamReader &reader)
Load from serialized xml post-version 5 file.
Storage of one imported image and the data attached to that image.
Definition Document.h:42
void updatePointOrdinals(const Transformation &transformation)
Update point ordinals after point addition/removal or dragging.
const Curve & curveAxes() const
Get method for axis curve.
Definition Document.cpp:321
void removePointsInCurvesGraphs(CurvesGraphs &curvesGraphs)
Remove all points identified in the specified CurvesGraphs. See also addPointsInCurvesGraphs.
Definition Document.cpp:877
const CurvesGraphs & curvesGraphs() const
Make all Curves available, read only, for CmdAbstract classes only.
Definition Document.cpp:342
Strategy class for exporting to the clipboard. This strategy is external to the Document class so tha...
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...
Definition MainWindow.h:92
void updateAfterCommand()
See GraphicsScene::updateAfterCommand.
Transformation transformation() const
Return read-only copy of transformation.
Custom mime type for separate treatment of graph coordinates and, when there is no transform,...
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18