00001
00002
00003
00004
00005
00006
00007 #include "CmdCut.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 "MimePointsExport.h"
00018 #include <QApplication>
00019 #include <QClipboard>
00020 #include <QTextStream>
00021 #include "QtToString.h"
00022 #include <QXmlStreamReader>
00023 #include "Xml.h"
00024
00025 const QString CMD_DESCRIPTION ("Cut");
00026
00027 CmdCut::CmdCut(MainWindow &mainWindow,
00028 Document &document,
00029 const QStringList &selectedPointIdentifiers) :
00030 CmdPointChangeBase (mainWindow,
00031 document,
00032 CMD_DESCRIPTION),
00033 m_transformIsDefined (mainWindow.transformIsDefined())
00034 {
00035 LOG4CPP_INFO_S ((*mainCat)) << "CmdCut::CmdCut"
00036 << " selected=" << selectedPointIdentifiers.count ();
00037
00038
00039 ExportToClipboard exportStrategy;
00040 QTextStream strCsv (&m_csv), strHtml (&m_html);
00041 exportStrategy.exportToClipboard (selectedPointIdentifiers,
00042 mainWindow.transformation(),
00043 strCsv,
00044 strHtml,
00045 document.curveAxes(),
00046 document.curvesGraphs(),
00047 m_curvesGraphsRemoved);
00048 }
00049
00050 CmdCut::CmdCut (MainWindow &mainWindow,
00051 Document &document,
00052 const QString &cmdDescription,
00053 QXmlStreamReader &reader) :
00054 CmdPointChangeBase (mainWindow,
00055 document,
00056 cmdDescription)
00057 {
00058 LOG4CPP_INFO_S ((*mainCat)) << "CmdCut::CmdCut";
00059
00060 QXmlStreamAttributes attributes = reader.attributes();
00061
00062 if (!attributes.hasAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED) ||
00063 !attributes.hasAttribute(DOCUMENT_SERIALIZE_CSV) ||
00064 !attributes.hasAttribute(DOCUMENT_SERIALIZE_HTML)) {
00065 xmlExitWithError (reader,
00066 QString ("%1 %2, %3 %4 %5")
00067 .arg (QObject::tr ("Missing argument(s)"))
00068 .arg (DOCUMENT_SERIALIZE_TRANSFORM_DEFINED)
00069 .arg (DOCUMENT_SERIALIZE_CSV)
00070 .arg (QObject::tr ("and/or"))
00071 .arg (DOCUMENT_SERIALIZE_HTML));
00072 }
00073
00074 QString defined = attributes.value(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED).toString();
00075
00076 m_transformIsDefined = (defined == DOCUMENT_SERIALIZE_BOOL_TRUE);
00077 m_csv = attributes.value(DOCUMENT_SERIALIZE_CSV).toString();
00078 m_html = attributes.value(DOCUMENT_SERIALIZE_HTML).toString();
00079 m_curvesGraphsRemoved.loadXml(reader);
00080 }
00081
00082 CmdCut::~CmdCut ()
00083 {
00084 }
00085
00086 void CmdCut::cmdRedo ()
00087 {
00088 LOG4CPP_INFO_S ((*mainCat)) << "CmdCut::cmdRedo";
00089
00090 MimePointsExport *mimePointsExport;
00091 if (m_transformIsDefined) {
00092 mimePointsExport = new MimePointsExport (m_csv,
00093 m_html);
00094 } else {
00095 mimePointsExport = new MimePointsExport (m_csv);
00096 }
00097
00098 QClipboard *clipboard = QApplication::clipboard();
00099 clipboard->setMimeData (mimePointsExport, QClipboard::Clipboard);
00100
00101 saveOrCheckPreCommandDocumentStateHash (document ());
00102 saveDocumentState (document ());
00103 document().removePointsInCurvesGraphs (m_curvesGraphsRemoved);
00104
00105 document().updatePointOrdinals (mainWindow().transformation());
00106 mainWindow().updateAfterCommand();
00107 saveOrCheckPostCommandDocumentStateHash (document ());
00108 }
00109
00110 void CmdCut::cmdUndo ()
00111 {
00112 LOG4CPP_INFO_S ((*mainCat)) << "CmdCut::cmdUndo";
00113
00114 saveOrCheckPostCommandDocumentStateHash (document ());
00115 restoreDocumentState (document ());
00116 mainWindow().updateAfterCommand();
00117 saveOrCheckPreCommandDocumentStateHash (document ());
00118 }
00119
00120 void CmdCut::saveXml (QXmlStreamWriter &writer) const
00121 {
00122 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
00123 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_TYPE, DOCUMENT_SERIALIZE_CMD_CUT);
00124 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
00125 writer.writeAttribute(DOCUMENT_SERIALIZE_TRANSFORM_DEFINED,
00126 m_transformIsDefined ? DOCUMENT_SERIALIZE_BOOL_TRUE: DOCUMENT_SERIALIZE_BOOL_FALSE);
00127 writer.writeAttribute(DOCUMENT_SERIALIZE_CSV, m_csv);
00128 writer.writeAttribute(DOCUMENT_SERIALIZE_HTML, m_html);
00129 m_curvesGraphsRemoved.saveXml(writer);
00130 writer.writeEndElement();
00131 }