00001
00002
00003
00004
00005
00006
00007 #include "CmdDelete.h"
00008 #include "DataKey.h"
00009 #include "Document.h"
00010 #include "DocumentSerialize.h"
00011 #include "EngaugeAssert.h"
00012 #include "ExportToClipboard.h"
00013 #include "GraphicsItemType.h"
00014 #include "GraphicsView.h"
00015 #include "Logger.h"
00016 #include "MainWindow.h"
00017 #include <QTextStream>
00018 #include <QtToString.h>
00019 #include <QXmlStreamReader>
00020 #include "Xml.h"
00021
00022 const QString CMD_DESCRIPTION ("Delete");
00023
00024 CmdDelete::CmdDelete(MainWindow &mainWindow,
00025 Document &document,
00026 const QStringList &selectedPointIdentifiers) :
00027 CmdPointChangeBase (mainWindow,
00028 document,
00029 CMD_DESCRIPTION)
00030 {
00031 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::CmdDelete"
00032 << " selected=" << selectedPointIdentifiers.count ();
00033
00034
00035 ExportToClipboard exportStrategy;
00036 QTextStream strCsv (&m_csv), strHtml (&m_html);
00037 exportStrategy.exportToClipboard (selectedPointIdentifiers,
00038 mainWindow.transformation(),
00039 strCsv,
00040 strHtml,
00041 document.curveAxes(),
00042 document.curvesGraphs(),
00043 m_curvesGraphsRemoved);
00044 }
00045
00046 CmdDelete::CmdDelete (MainWindow &mainWindow,
00047 Document &document,
00048 const QString &cmdDescription,
00049 QXmlStreamReader &reader) :
00050 CmdPointChangeBase (mainWindow,
00051 document,
00052 cmdDescription)
00053 {
00054 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::CmdDelete";
00055
00056 QXmlStreamAttributes attributes = reader.attributes();
00057
00058 if (!attributes.hasAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED) ||
00059 !attributes.hasAttribute(DOCUMENT_SERIALIZE_CSV) ||
00060 !attributes.hasAttribute(DOCUMENT_SERIALIZE_HTML)) {
00061 xmlExitWithError (reader,
00062 QString ("%1 %2, %3 %4 %5")
00063 .arg (QObject::tr ("Missing attribute(s)"))
00064 .arg (DOCUMENT_SERIALIZE_TRANSFORM_DEFINED)
00065 .arg (DOCUMENT_SERIALIZE_CSV)
00066 .arg (QObject::tr ("and/or"))
00067 .arg (DOCUMENT_SERIALIZE_HTML));
00068 }
00069
00070 QString defined = attributes.value(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED).toString();
00071
00072 m_transformIsDefined = (defined == DOCUMENT_SERIALIZE_BOOL_TRUE);
00073 m_csv = attributes.value(DOCUMENT_SERIALIZE_CSV).toString();
00074 m_html = attributes.value(DOCUMENT_SERIALIZE_HTML).toString();
00075 m_curvesGraphsRemoved.loadXml(reader);
00076 }
00077
00078 CmdDelete::~CmdDelete ()
00079 {
00080 }
00081
00082 void CmdDelete::cmdRedo ()
00083 {
00084 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::cmdRedo";
00085
00086 saveOrCheckPreCommandDocumentStateHash (document ());
00087 saveDocumentState (document ());
00088 document().removePointsInCurvesGraphs (m_curvesGraphsRemoved);
00089
00090 document().updatePointOrdinals (mainWindow().transformation());
00091 mainWindow().updateAfterCommand();
00092 saveOrCheckPostCommandDocumentStateHash (document ());
00093 }
00094
00095 void CmdDelete::cmdUndo ()
00096 {
00097 LOG4CPP_INFO_S ((*mainCat)) << "CmdDelete::cmdUndo";
00098
00099 saveOrCheckPostCommandDocumentStateHash (document ());
00100 restoreDocumentState (document ());
00101 mainWindow().updateAfterCommand();
00102 saveOrCheckPreCommandDocumentStateHash (document ());
00103 }
00104
00105 void CmdDelete::saveXml (QXmlStreamWriter &writer) const
00106 {
00107 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
00108 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_TYPE, DOCUMENT_SERIALIZE_CMD_DELETE);
00109 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
00110 writer.writeAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED,
00111 m_transformIsDefined ? DOCUMENT_SERIALIZE_BOOL_TRUE : DOCUMENT_SERIALIZE_BOOL_FALSE);
00112 writer.writeAttribute(DOCUMENT_SERIALIZE_CSV, m_csv);
00113 writer.writeAttribute(DOCUMENT_SERIALIZE_HTML, m_html);
00114 m_curvesGraphsRemoved.saveXml(writer);
00115 writer.writeEndElement();
00116 }