00001 /****************************************************************************************************** 00002 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released * 00003 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file * 00004 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. * 00005 ******************************************************************************************************/ 00006 00007 #ifndef CMD_MEDIATOR_H 00008 #define CMD_MEDIATOR_H 00009 00010 #include "CoordsType.h" 00011 #include "Document.h" 00012 #include "DocumentAxesPointsRequired.h" 00013 #include "PointStyle.h" 00014 #include <QUndoStack> 00015 00016 class MainWindow; 00017 class QImage; 00018 00023 class CmdMediator : public QUndoStack 00024 { 00025 public: 00027 CmdMediator (MainWindow &mainWindow, 00028 const QImage &image); 00029 00031 CmdMediator (MainWindow &mainWindow, 00032 const QString &fileName); 00033 00035 ~CmdMediator(); 00036 00038 const CoordSystem &coordSystem () const; 00039 00041 const Curve &curveAxes () const; 00042 00044 QStringList curvesGraphsNames () const; 00045 00047 int curvesGraphsNumPoints (const QString &curveName) const; 00048 00050 Document &document(); 00051 00053 const Document &document () const; 00054 00057 bool isModified () const; 00058 00060 void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback); 00061 00063 void iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const; 00064 00066 void iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback); 00067 00069 QPixmap pixmap () const; 00070 00072 QString reasonForUnsuccessfulRead () const; 00073 00075 void saveXml(QXmlStreamWriter &writer) const; 00076 00078 QString selectedCurveName () const; 00079 00082 void setDocumentAxesPointsRequired (DocumentAxesPointsRequired documentAxesPointsRequired); 00083 00085 void setSelectedCurveName (const QString &selectedCurveName); 00086 00088 bool successfulRead () const; 00089 00090 private: 00091 CmdMediator (); 00092 00093 void connectSignals (MainWindow &mainWindow); 00094 00095 Document m_document; 00096 00097 }; 00098 00099 #endif // CMD_MEDIATOR_H