00001
00002
00003
00004
00005
00006
00007 #include "CmdAbstract.h"
00008 #include "CmdFactory.h"
00009 #include "CmdMediator.h"
00010 #include "Document.h"
00011 #include "DocumentSerialize.h"
00012 #include "EngaugeAssert.h"
00013 #include "Logger.h"
00014 #include "LoggerUpload.h"
00015 #include "MainWindow.h"
00016 #include "Point.h"
00017 #include <QDomNode>
00018 #include <QImage>
00019 #include <QUndoCommand>
00020 #include <QXmlStreamReader>
00021 #include <QXmlStreamWriter>
00022 #include "Transformation.h"
00023 #include "Xml.h"
00024
00025 CmdMediator::CmdMediator (MainWindow &mainWindow,
00026 const QImage &image) :
00027 m_document (image)
00028 {
00029 LOG4CPP_INFO_S ((*mainCat)) << "CmdMediator::CmdMediator image=" << image.width() << "x" << image.height ();
00030
00031 connectSignals(mainWindow);
00032 }
00033
00034 CmdMediator::CmdMediator (MainWindow &mainWindow,
00035 const QString &fileName) :
00036 m_document (fileName)
00037 {
00038 LOG4CPP_INFO_S ((*mainCat)) << "CmdMediator::CmdMediator filename=" << fileName.toLatin1().data();
00039
00040 connectSignals(mainWindow);
00041 }
00042
00043 CmdMediator::~CmdMediator()
00044 {
00045 }
00046
00047 void CmdMediator::connectSignals (MainWindow &mainWindow)
00048 {
00049 connect (this, SIGNAL (cleanChanged (bool)), &mainWindow, SLOT (slotCleanChanged (bool)));
00050 }
00051
00052 const CoordSystem &CmdMediator::coordSystem() const
00053 {
00054 return m_document.coordSystem();
00055 }
00056
00057 const Curve &CmdMediator::curveAxes () const
00058 {
00059 return m_document.curveAxes ();
00060 }
00061
00062 QStringList CmdMediator::curvesGraphsNames () const
00063 {
00064 return m_document.curvesGraphsNames();
00065 }
00066
00067 int CmdMediator::curvesGraphsNumPoints (const QString &curveName) const
00068 {
00069 return m_document.curvesGraphsNumPoints(curveName);
00070 }
00071
00072 Document &CmdMediator::document()
00073 {
00074 return m_document;
00075 }
00076
00077 const Document &CmdMediator::document() const
00078 {
00079 return m_document;
00080 }
00081
00082 bool CmdMediator::isModified () const
00083 {
00084 return !isClean();
00085 }
00086
00087 void CmdMediator::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
00088 {
00089 m_document.iterateThroughCurvePointsAxes (ftorWithCallback);
00090 }
00091
00092 void CmdMediator::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const
00093 {
00094 m_document.iterateThroughCurvePointsAxes (ftorWithCallback);
00095 }
00096
00097 void CmdMediator::iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
00098 {
00099 return m_document.iterateThroughCurvesPointsGraphs (ftorWithCallback);
00100 }
00101
00102 QPixmap CmdMediator::pixmap () const
00103 {
00104 ENGAUGE_ASSERT (m_document.successfulRead ());
00105
00106 return m_document.pixmap ();
00107 }
00108
00109 QString CmdMediator::reasonForUnsuccessfulRead () const
00110 {
00111 return m_document.reasonForUnsuccessfulRead ();
00112 }
00113
00114 void CmdMediator::saveXml(QXmlStreamWriter &writer) const
00115 {
00116 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD_MEDIATOR);
00117
00118 for (int i = 0; i < index(); i++) {
00119
00120 const CmdAbstract *cmd = dynamic_cast<const CmdAbstract *>(command(i));
00121 cmd->saveXml (writer);
00122 }
00123
00124 writer.writeEndElement();
00125 }
00126
00127 QString CmdMediator::selectedCurveName () const
00128 {
00129 return m_document.selectedCurveName ();
00130 }
00131
00132 void CmdMediator::setDocumentAxesPointsRequired (DocumentAxesPointsRequired documentAxesPointsRequired)
00133 {
00134 m_document.setDocumentAxesPointsRequired (documentAxesPointsRequired);
00135 }
00136
00137 void CmdMediator::setSelectedCurveName(const QString &selectedCurveName)
00138 {
00139 m_document.setSelectedCurveName (selectedCurveName);
00140 }
00141
00142 bool CmdMediator::successfulRead () const
00143 {
00144 return m_document.successfulRead();
00145 }