Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
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 
17 FileCmdScript::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 
39 FileCmdScript::~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 }
FileCmdScript(const QString &fileCmdScriptFile)
Single constructor.
bool canRedo() const
Returns true if there is at least one command on the stack.
FileCmdAbstract * createFileCmd(QXmlStreamReader &reader) const
Create one FileCmdAbstract from the specified xml subtree.
void redo(MainWindow &mainWindow)
Apply the next command. Requires non-empty stack.
Factory that creates FileCmds from a file cmd script file, in xml format.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:77