Engauge Digitizer 2
Loading...
Searching...
No Matches
FileCmdScript.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 "FileCmdAbstract.h"
8#include "FileCmdFactory.h"
9#include "FileCmdScript.h"
10#include "FileCmdSerialize.h"
11#include "Logger.h"
12#include "MainWindow.h"
13#include <QFile>
14#include <QXmlStreamReader>
15#include "Xml.h"
16
17FileCmdScript::FileCmdScript(const QString &fileCmdScriptFile)
18{
19 // Read commands into stack. The file is known to exist since it was checked in parseCmdLine
20 QFile file (fileCmdScriptFile);
21
22 QXmlStreamReader reader (&file);
23 file.open(QIODevice::ReadOnly | QIODevice::Text);
24
25 // Load commands
26 FileCmdFactory factory;
27 while (!reader.atEnd() && !reader.hasError()) {
28
29 if ((loadNextFromReader (reader) == QXmlStreamReader::StartElement) &&
30 (reader.name() == FILE_CMD_SERIALIZE_CMD)) {
31
32 // Extract and append new command to command stack
33 m_fileCmdStack.push_back (factory.createFileCmd (reader));
34 }
35 }
36 file.close();
37}
38
39FileCmdScript::~FileCmdScript()
40{
41}
42
44{
45 LOG4CPP_INFO_S ((*mainCat)) << "FileCmdScript::canRedo";
46
47 return (m_fileCmdStack.count () > 0);
48}
49
51{
52 LOG4CPP_INFO_S ((*mainCat)) << "FileCmdScript::redo";
53
54 m_fileCmdStack.first()->redo(mainWindow);
55 m_fileCmdStack.pop_front();
56}
Factory that creates FileCmds from a file cmd script file, in xml format.
FileCmdAbstract * createFileCmd(QXmlStreamReader &reader) const
Create one FileCmdAbstract from the specified xml subtree.
bool canRedo() const
Returns true if there is at least one command on the stack.
void redo(MainWindow &mainWindow)
Apply the next command. Requires non-empty stack.
FileCmdScript(const QString &fileCmdScriptFile)
Single constructor.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition MainWindow.h:78