Engauge Digitizer 2
Loading...
Searching...
No Matches
FileCmdFactory.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 "EngaugeAssert.h"
8#include "FileCmdClose.h"
9#include "FileCmdExport.h"
10#include "FileCmdImport.h"
11#include "FileCmdOpen.h"
12#include "FileCmdFactory.h"
13#include "FileCmdSerialize.h"
14#include <QXmlStreamReader>
15#include "Xml.h"
16
20
24
25FileCmdAbstract *FileCmdFactory::createFileCmd (QXmlStreamReader &reader) const
26{
27 FileCmdAbstract *cmd = nullptr;
28
29 QXmlStreamAttributes attributes = reader.attributes();
30 if (!attributes.hasAttribute (FILE_CMD_SERIALIZE_CMD_TYPE)) {
31 xmlExitWithError (reader,
32 QString ("Missing attribute %1").arg (FILE_CMD_SERIALIZE_CMD_TYPE));
33 }
34
35 // Get common attributes
36 QString cmdType = attributes.value (FILE_CMD_SERIALIZE_CMD_TYPE).toString();
37
38 if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_CLOSE) {
39 cmd = new FileCmdClose (reader);
40 } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_EXPORT) {
41 cmd = new FileCmdExport (reader);
42 } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_IMPORT) {
43 cmd = new FileCmdImport (reader);
44 } else if (cmdType == FILE_CMD_SERIALIZE_CMD_FILE_OPEN) {
45 cmd = new FileCmdOpen (reader);
46 } else {
47
48 // Invalid xml
49 ENGAUGE_ASSERT (false);
50
51 }
52
53 return cmd;
54}
55
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT.
const QString FILE_CMD_SERIALIZE_CMD_FILE_CLOSE
const QString FILE_CMD_SERIALIZE_CMD_FILE_OPEN
const QString FILE_CMD_SERIALIZE_CMD_FILE_EXPORT
const QString FILE_CMD_SERIALIZE_CMD_TYPE
const QString FILE_CMD_SERIALIZE_CMD_FILE_IMPORT
void xmlExitWithError(QXmlStreamReader &reader, const QString &message)
Show specified message for an error while reading xml, then quit.
Definition Xml.cpp:25
Base class for 'file commands' that are used specifically for regression testing of file import/open/...
Command for closing a file.
Command for exporting a file.
FileCmdAbstract * createFileCmd(QXmlStreamReader &reader) const
Create one FileCmdAbstract from the specified xml subtree.
FileCmdFactory()
Single constructor.
virtual ~FileCmdFactory()
Command for importing a file.
Command for opening a file.
Definition FileCmdOpen.h:16