Engauge Digitizer 2
Loading...
Searching...
No Matches
CmdDelete.cpp
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 "CmdDelete.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 <QTextStream>
18#include <QtToString.h>
19#include <QXmlStreamReader>
20#include "Xml.h"
21
22const QString CMD_DESCRIPTION ("Delete");
23
25 Document &document,
26 const QStringList &selectedPointIdentifiers) :
27 CmdAbstract(mainWindow,
28 document,
29 CMD_DESCRIPTION)
30{
31 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::CmdDelete"
32 << " selected=(" << selectedPointIdentifiers.join (", ").toLatin1 ().data () << ")";
33
34 // Export to clipboard
35 ExportToClipboard exportStrategy;
36 QTextStream strCsv (&m_csv), strHtml (&m_html);
37 exportStrategy.exportToClipboard (selectedPointIdentifiers,
39 strCsv,
40 strHtml,
43 m_curvesGraphsRemoved);
44}
45
47 Document &document,
48 const QString &cmdDescription,
49 QXmlStreamReader &reader) :
50 CmdAbstract (mainWindow,
51 document,
52 cmdDescription)
53{
54 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::CmdDelete";
55
56 QXmlStreamAttributes attributes = reader.attributes();
57
58 if (!attributes.hasAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED) ||
59 !attributes.hasAttribute(DOCUMENT_SERIALIZE_CSV) ||
60 !attributes.hasAttribute(DOCUMENT_SERIALIZE_HTML)) {
61 xmlExitWithError (reader,
62 QString ("%1 %2, %3 %4 %5")
63 .arg (QObject::tr ("Missing attribute(s)"))
64 .arg (DOCUMENT_SERIALIZE_TRANSFORM_DEFINED)
65 .arg (DOCUMENT_SERIALIZE_CSV)
66 .arg (QObject::tr ("and/or"))
67 .arg (DOCUMENT_SERIALIZE_HTML));
68 }
69
70 QString defined = attributes.value(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED).toString();
71
72 m_transformIsDefined = (defined == DOCUMENT_SERIALIZE_BOOL_TRUE);
73 m_csv = attributes.value(DOCUMENT_SERIALIZE_CSV).toString();
74 m_html = attributes.value(DOCUMENT_SERIALIZE_HTML).toString();
75 m_curvesGraphsRemoved.loadXml(reader);
76}
77
78CmdDelete::~CmdDelete ()
79{
80}
81
83{
84 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::cmdRedo";
85
86 document().removePointsInCurvesGraphs (m_curvesGraphsRemoved);
87
88 document().updatePointOrdinals (mainWindow().transformation());
90}
91
93{
94 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::cmdUndo";
95
96 document().addPointsInCurvesGraphs (m_curvesGraphsRemoved);
97
98 document().updatePointOrdinals (mainWindow().transformation());
100}
101
102void CmdDelete::saveXml (QXmlStreamWriter &writer) const
103{
104 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
105 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_TYPE, DOCUMENT_SERIALIZE_CMD_DELETE);
106 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
107 writer.writeAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED,
108 m_transformIsDefined ? DOCUMENT_SERIALIZE_BOOL_TRUE : DOCUMENT_SERIALIZE_BOOL_FALSE);
109 writer.writeAttribute(DOCUMENT_SERIALIZE_CSV, m_csv);
110 writer.writeAttribute(DOCUMENT_SERIALIZE_HTML, m_html);
111 m_curvesGraphsRemoved.saveXml(writer);
112 writer.writeEndElement();
113}
Wrapper around QUndoCommand. This simplifies the more complicated feature set of QUndoCommand.
Definition CmdAbstract.h:19
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.
virtual void saveXml(QXmlStreamWriter &writer) const
Save commands as xml for later uploading.
virtual void cmdRedo()
Redo method that is called when QUndoStack is moved one command forward.
Definition CmdDelete.cpp:82
virtual void cmdUndo()
Undo method that is called when QUndoStack is moved one command backward.
Definition CmdDelete.cpp:92
CmdDelete(MainWindow &mainWindow, Document &document, const QStringList &selectedPointIdentifiers)
Constructor for normal creation.
Definition CmdDelete.cpp:24
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:41
void updatePointOrdinals(const Transformation &transformation)
Update point ordinals after point addition/removal or dragging.
Definition Document.cpp:903
const Curve & curveAxes() const
Get method for axis curve.
Definition Document.cpp:284
void removePointsInCurvesGraphs(CurvesGraphs &curvesGraphs)
Remove all points identified in the specified CurvesGraphs. See also addPointsInCurvesGraphs.
Definition Document.cpp:741
const CurvesGraphs & curvesGraphs() const
Make all Curves available, read only, for CmdAbstract classes only.
Definition Document.cpp:305
void addPointsInCurvesGraphs(CurvesGraphs &curvesGraphs)
Add all points identified in the specified CurvesGraphs. See also removePointsInCurvesGraphs.
Definition Document.cpp:210
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:78
void updateAfterCommand()
See GraphicsScene::updateAfterCommand.
Transformation transformation() const
Return read-only copy of transformation.