Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
CmdMediator.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 "CmdAbstract.h"
8 #include "CmdFactory.h"
9 #include "CmdMediator.h"
10 #include "Document.h"
11 #include "DocumentSerialize.h"
12 #include "EngaugeAssert.h"
13 #include "Logger.h"
14 #include "LoggerUpload.h"
15 #include "MainWindow.h"
16 #include "Point.h"
17 #include <QDomNode>
18 #include <QImage>
19 #include <QUndoCommand>
20 #include <QXmlStreamReader>
21 #include <QXmlStreamWriter>
22 #include "Transformation.h"
23 #include "Xml.h"
24 
26  const QImage &image) :
27  m_document (image)
28 {
29  LOG4CPP_INFO_S ((*mainCat)) << "CmdMediator::CmdMediator image=" << image.width() << "x" << image.height ();
30 
31  connectSignals(mainWindow);
32 }
33 
35  const QString &fileName) :
36  m_document (fileName)
37 {
38  LOG4CPP_INFO_S ((*mainCat)) << "CmdMediator::CmdMediator filename=" << fileName.toLatin1().data();
39 
40  connectSignals(mainWindow);
41 }
42 
44 {
45 }
46 
47 void CmdMediator::connectSignals (MainWindow &mainWindow)
48 {
49  connect (this, SIGNAL (cleanChanged (bool)), &mainWindow, SLOT (slotCleanChanged (bool)));
50 }
51 
53 {
54  return m_document.coordSystem();
55 }
56 
58 {
59  return m_document.curveAxes ();
60 }
61 
62 QStringList CmdMediator::curvesGraphsNames () const
63 {
64  return m_document.curvesGraphsNames();
65 }
66 
67 int CmdMediator::curvesGraphsNumPoints (const QString &curveName) const
68 {
69  return m_document.curvesGraphsNumPoints(curveName);
70 }
71 
73 {
74  return m_document;
75 }
76 
78 {
79  return m_document;
80 }
81 
83 {
84  return !isClean();
85 }
86 
87 void CmdMediator::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
88 {
89  m_document.iterateThroughCurvePointsAxes (ftorWithCallback);
90 }
91 
92 void CmdMediator::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const
93 {
94  m_document.iterateThroughCurvePointsAxes (ftorWithCallback);
95 }
96 
97 void CmdMediator::iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
98 {
99  return m_document.iterateThroughCurvesPointsGraphs (ftorWithCallback);
100 }
101 
102 QPixmap CmdMediator::pixmap () const
103 {
104  ENGAUGE_ASSERT (m_document.successfulRead ());
105 
106  return m_document.pixmap ();
107 }
108 
110 {
111  return m_document.reasonForUnsuccessfulRead ();
112 }
113 
114 void CmdMediator::saveXml(QXmlStreamWriter &writer) const
115 {
116  writer.writeStartElement(DOCUMENT_SERIALIZE_CMD_MEDIATOR);
117 
118  for (int i = 0; i < index(); i++) {
119 
120  const CmdAbstract *cmd = dynamic_cast<const CmdAbstract *>(command(i));
121  cmd->saveXml (writer);
122  }
123 
124  writer.writeEndElement();
125 }
126 
128 {
129  return m_document.selectedCurveName ();
130 }
131 
132 void CmdMediator::setDocumentAxesPointsRequired (DocumentAxesPointsRequired documentAxesPointsRequired)
133 {
134  m_document.setDocumentAxesPointsRequired (documentAxesPointsRequired);
135 }
136 
137 void CmdMediator::setSelectedCurveName(const QString &selectedCurveName)
138 {
139  m_document.setSelectedCurveName (selectedCurveName);
140 }
141 
143 {
144  return m_document.successfulRead();
145 }
const Curve & curveAxes() const
See Document::curveAxes.
Definition: CmdMediator.cpp:57
void setSelectedCurveName(const QString &selectedCurveName)
Save curve name that is selected for the current coordinate system, for the next time the coordinate ...
void saveXml(QXmlStreamWriter &writer) const
Serialize to xml.
const CoordSystem & coordSystem() const
Currently active CoordSystem.
Definition: Document.cpp:268
Wrapper around QUndoCommand. This simplifies the more complicated feature set of QUndoCommand.
Definition: CmdAbstract.h:19
Storage of data belonging to one coordinate system.
Definition: CoordSystem.h:41
void iterateThroughCurvePointsAxes(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for the axes curve.
Definition: Document.cpp:397
const Curve & curveAxes() const
Get method for axis curve.
Definition: Document.cpp:289
int curvesGraphsNumPoints(const QString &curveName) const
See CurvesGraphs::curvesGraphsNumPoints.
Definition: Document.cpp:324
QPixmap pixmap() const
Return the image that is being digitized.
Definition: Document.cpp:723
void setDocumentAxesPointsRequired(DocumentAxesPointsRequired documentAxesPointsRequired)
Set the number of axes points required.
bool successfulRead() const
Return true if startup loading succeeded. If the loading failed then reasonForUnsuccessfulRed will ex...
Definition: Document.cpp:955
Document & document()
Provide the Document to commands, primarily for undo/redo processing.
Definition: CmdMediator.cpp:72
bool isModified() const
Dirty flag.
Definition: CmdMediator.cpp:82
~CmdMediator()
Destructor.
Definition: CmdMediator.cpp:43
const CoordSystem & coordSystem() const
Provide the current CoordSystem to commands with read-only access, primarily for undo/redo processing...
Definition: CmdMediator.cpp:52
QString selectedCurveName() const
Currently selected curve name. This is used to set the selected curve combobox in MainWindow...
Definition: Document.cpp:819
QPixmap pixmap() const
See Document::pixmap.
Storage of one imported image and the data attached to that image.
Definition: Document.h:41
Container for one set of digitized Points.
Definition: Curve.h:32
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: Document.cpp:317
void setDocumentAxesPointsRequired(DocumentAxesPointsRequired documentAxesPointsRequired)
Set the number of axes points required.
Definition: Document.cpp:845
void iterateThroughCurvesPointsGraphs(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for all the graphs curves.
Definition: Document.cpp:420
QString selectedCurveName() const
Currently selected curve name. This is used to set the selected curve combobox in MainWindow...
virtual void saveXml(QXmlStreamWriter &writer) const =0
Save commands as xml for later uploading.
void iterateThroughCurvesPointsGraphs(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for all the graphs curves.
Definition: CmdMediator.cpp:97
void iterateThroughCurvePointsAxes(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for the single axes curve.
Definition: CmdMediator.cpp:87
QString reasonForUnsuccessfulRead() const
Return an informative text message explaining why startup loading failed. Applies if successfulRead r...
Definition: Document.cpp:762
CmdMediator(MainWindow &mainWindow, const QImage &image)
Constructor for imported images and dragged images. Only one coordinate system is created but others ...
Definition: CmdMediator.cpp:25
QString reasonForUnsuccessfulRead() const
See Document::reasonForUnsuccessfulRead.
int curvesGraphsNumPoints(const QString &curveName) const
See CurvesGraphs::curvesGraphsNumPoints.
Definition: CmdMediator.cpp:67
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:82
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: CmdMediator.cpp:62
bool successfulRead() const
Wrapper for Document::successfulRead.
void setSelectedCurveName(const QString &selectedCurveName)
Save curve name that is selected for the current coordinate system, for the next time the coordinate ...
Definition: Document.cpp:950