Engauge Digitizer 2
Loading...
Searching...
No Matches
CmdMediator.cpp
Go to the documentation of this file.
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
47void 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
63{
64 return m_document.curvesGraphsNames();
65}
66
67int 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
87void CmdMediator::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
88{
89 m_document.iterateThroughCurvePointsAxes (ftorWithCallback);
90}
91
92void CmdMediator::iterateThroughCurvePointsAxes (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback) const
93{
94 m_document.iterateThroughCurvePointsAxes (ftorWithCallback);
95}
96
97void CmdMediator::iterateThroughCurvesPointsGraphs (const Functor2wRet<const QString &, const Point &, CallbackSearchReturn> &ftorWithCallback)
98{
99 return m_document.iterateThroughCurvesPointsGraphs (ftorWithCallback);
100}
101
102QPixmap 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
114void 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
133{
134 m_document.setDocumentAxesPointsRequired (documentAxesPointsRequired);
135}
136
137void CmdMediator::setSelectedCurveName(const QString &selectedCurveName)
138{
140}
141
143{
144 return m_document.successfulRead();
145}
DocumentAxesPointsRequired
const QString DOCUMENT_SERIALIZE_CMD_MEDIATOR
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) define ENGAUGE...
Definition: EngaugeAssert.h:20
log4cpp::Category * mainCat
Definition: Logger.cpp:14
Wrapper around QUndoCommand. This simplifies the more complicated feature set of QUndoCommand.
Definition: CmdAbstract.h:20
virtual void saveXml(QXmlStreamWriter &writer) const =0
Save commands as xml for later uploading.
~CmdMediator()
Destructor.
Definition: CmdMediator.cpp:43
const Curve & curveAxes() const
See Document::curveAxes.
Definition: CmdMediator.cpp:57
QString selectedCurveName() const
Currently selected curve name. This is used to set the selected curve combobox in MainWindow.
QString reasonForUnsuccessfulRead() const
See Document::reasonForUnsuccessfulRead.
QPixmap pixmap() const
See Document::pixmap.
bool isModified() const
Dirty flag.
Definition: CmdMediator.cpp:82
void saveXml(QXmlStreamWriter &writer) const
Serialize to xml.
void iterateThroughCurvesPointsGraphs(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for all the graphs curves.
Definition: CmdMediator.cpp:97
void setSelectedCurveName(const QString &selectedCurveName)
Save curve name that is selected for the current coordinate system, for the next time the coordinate ...
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: CmdMediator.cpp:62
const CoordSystem & coordSystem() const
Provide the current CoordSystem to commands with read-only access, primarily for undo/redo processing...
Definition: CmdMediator.cpp:52
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
int curvesGraphsNumPoints(const QString &curveName) const
See CurvesGraphs::curvesGraphsNumPoints.
Definition: CmdMediator.cpp:67
bool successfulRead() const
Wrapper for Document::successfulRead.
void setDocumentAxesPointsRequired(DocumentAxesPointsRequired documentAxesPointsRequired)
Set the number of axes points required.
void iterateThroughCurvePointsAxes(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for the single axes curve.
Definition: CmdMediator.cpp:87
Document & document()
Provide the Document to commands, primarily for undo/redo processing.
Definition: CmdMediator.cpp:72
Storage of data belonging to one coordinate system.
Definition: CoordSystem.h:43
Container for one set of digitized Points.
Definition: Curve.h:34
Storage of one imported image and the data attached to that image.
Definition: Document.h:42
void iterateThroughCurvePointsAxes(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for the axes curve.
Definition: Document.cpp:449
QPixmap pixmap() const
Return the image that is being digitized.
Definition: Document.cpp:817
void setDocumentAxesPointsRequired(DocumentAxesPointsRequired documentAxesPointsRequired)
Set the number of axes points required.
Definition: Document.cpp:939
const Curve & curveAxes() const
Get method for axis curve.
Definition: Document.cpp:321
QString selectedCurveName() const
Currently selected curve name. This is used to set the selected curve combobox in MainWindow.
Definition: Document.cpp:913
void iterateThroughCurvesPointsGraphs(const Functor2wRet< const QString &, const Point &, CallbackSearchReturn > &ftorWithCallback)
See Curve::iterateThroughCurvePoints, for all the graphs curves.
Definition: Document.cpp:472
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: Document.cpp:349
const CoordSystem & coordSystem() const
Currently active CoordSystem.
Definition: Document.cpp:300
bool successfulRead() const
Return true if startup loading succeeded. If the loading failed then reasonForUnsuccessfulRed will ex...
Definition: Document.cpp:1061
QString reasonForUnsuccessfulRead() const
Return an informative text message explaining why startup loading failed. Applies if successfulRead r...
Definition: Document.cpp:856
int curvesGraphsNumPoints(const QString &curveName) const
See CurvesGraphs::curvesGraphsNumPoints.
Definition: Document.cpp:356
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:1056
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:92
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18