Engauge Digitizer 2
Loading...
Searching...
No Matches
CmdSettingsGeneral.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
8#include "Document.h"
9#include "DocumentSerialize.h"
10#include "Logger.h"
11#include "MainWindow.h"
12#include <QXmlStreamReader>
13#include "Xml.h"
14
15const QString CMD_DESCRIPTION ("General settings");
16
18 Document &document,
19 const DocumentModelGeneral &modelGeneralBefore,
20 const DocumentModelGeneral &modelGeneralAfter) :
21 CmdAbstract(mainWindow,
22 document,
24 m_modelGeneralBefore (modelGeneralBefore),
25 m_modelGeneralAfter (modelGeneralAfter)
26{
27 LOG4CPP_INFO_S ((*mainCat)) << "CmdSettingsGeneral::CmdSettingsGeneral";
28}
29
31 Document &document,
32 const QString &cmdDescription,
33 QXmlStreamReader &reader) :
34 CmdAbstract (mainWindow,
35 document,
36 cmdDescription)
37{
38 LOG4CPP_INFO_S ((*mainCat)) << "CmdSettingsGeneral::CmdSettingsGeneral";
39
40 bool success = true;
41
42 // Read until end of this subtree
43 bool isBefore = true;
44 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
45 (reader.name() != DOCUMENT_SERIALIZE_CMD)){
46 loadNextFromReader(reader);
47 if (reader.atEnd()) {
48 xmlExitWithError (reader,
49 QString ("%1 %2")
50 .arg (QObject::tr ("Reached end of file before finding end element for"))
52 success = false;
53 break;
54 }
55
56 if ((reader.tokenType() == QXmlStreamReader::StartElement) &&
57 (reader.name() == DOCUMENT_SERIALIZE_GENERAL)) {
58
59 if (isBefore) {
60
61 m_modelGeneralBefore.loadXml (reader);
62 isBefore = false;
63
64 } else {
65
66 m_modelGeneralAfter.loadXml (reader);
67
68 }
69 }
70 }
71
72 if (!success) {
73 reader.raiseError ("Cannot read general settings");
74 }
75}
76
80
90
100
101void CmdSettingsGeneral::saveXml (QXmlStreamWriter &writer) const
102{
103 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
105 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
106 m_modelGeneralBefore.saveXml(writer);
107 m_modelGeneralAfter.saveXml(writer);
108 writer.writeEndElement();
109}
const QString CMD_DESCRIPTION("General settings")
const QString DOCUMENT_SERIALIZE_GENERAL
const QString DOCUMENT_SERIALIZE_CMD
const QString DOCUMENT_SERIALIZE_CMD_TYPE
const QString DOCUMENT_SERIALIZE_CMD_SETTINGS_GENERAL
const QString DOCUMENT_SERIALIZE_CMD_DESCRIPTION
log4cpp::Category * mainCat
Definition Logger.cpp:14
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition Xml.cpp:14
void xmlExitWithError(QXmlStreamReader &reader, const QString &message)
Show specified message for an error while reading xml, then quit.
Definition Xml.cpp:25
Wrapper around QUndoCommand. This simplifies the more complicated feature set of QUndoCommand.
Definition CmdAbstract.h:20
Document & document()
Return the Document that this command will modify during redo and undo.
MainWindow & mainWindow()
Return the MainWindow so it can be updated by this command as a last step.
void saveOrCheckPostCommandDocumentStateHash(const Document &document)
Save, when called the first time, a hash value representing the state of the Document.
void saveOrCheckPreCommandDocumentStateHash(const Document &document)
Save, when called the first time, a hash value representing the state of the Document.
virtual void saveXml(QXmlStreamWriter &writer) const
Save commands as xml for later uploading.
virtual void cmdUndo()
Undo method that is called when QUndoStack is moved one command backward.
CmdSettingsGeneral(MainWindow &mainWindow, Document &document, const DocumentModelGeneral &modelGeneralBefore, const DocumentModelGeneral &modelGeneralAfter)
Constructor for normal creation.
virtual void cmdRedo()
Redo method that is called when QUndoStack is moved one command forward.
Model for DlgSettingsGeneral and CmdSettingsGeneral.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Storage of one imported image and the data attached to that image.
Definition Document.h:42
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition MainWindow.h:92
void updateAfterCommand()
See GraphicsScene::updateAfterCommand.
void updateSettingsGeneral(const DocumentModelGeneral &modelGeneral)
Update with new general properties.
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18