7 #include "FileCmdAbstract.h"
8 #include "FileCmdFactory.h"
9 #include "FileCmdScript.h"
10 #include "FileCmdSerialize.h"
12 #include "MainWindow.h"
15 #include <QMessageBox>
16 #include <QXmlStreamReader>
21 LOG4CPP_INFO_S ((*mainCat)) <<
"FileCmdScript::FileCmdScript"
22 <<
" curDir=" << QDir::currentPath().toLatin1().data();
26 if (!fileCmdScriptFile.isEmpty ()) {
29 QFile file (fileCmdScriptFile);
31 QXmlStreamReader reader (&file);
32 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
34 QString msg = QString (
"%1 %2 %3 %4")
35 .arg (QObject::tr (
"Cannot read script file"))
36 .arg (fileCmdScriptFile)
37 .arg (QObject::tr (
"from directory"))
38 .arg (QDir::currentPath());
39 QMessageBox::critical (
nullptr,
47 while (!reader.atEnd() && !reader.hasError()) {
49 if ((loadNextFromReader (reader) == QXmlStreamReader::StartElement) &&
50 (reader.name() == FILE_CMD_SERIALIZE_CMD)) {
60 FileCmdScript::~FileCmdScript()
66 LOG4CPP_INFO_S ((*mainCat)) <<
"FileCmdScript::canRedo";
68 return (m_fileCmdStack.count () > 0);
73 LOG4CPP_INFO_S ((*mainCat)) <<
"FileCmdScript::redo";
75 m_fileCmdStack.first()->redo(mainWindow);
76 m_fileCmdStack.pop_front();
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...