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();
25 QFile file (fileCmdScriptFile);
27 QXmlStreamReader reader (&file);
28 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
30 QString msg = QString (
"%1 %2 %3 %4")
31 .arg (QObject::tr (
"Cannot read script file"))
32 .arg (fileCmdScriptFile)
33 .arg (QObject::tr (
"from directory"))
34 .arg (QDir::currentPath());
35 QMessageBox::critical (0,
43 while (!reader.atEnd() && !reader.hasError()) {
45 if ((loadNextFromReader (reader) == QXmlStreamReader::StartElement) &&
46 (reader.name() == FILE_CMD_SERIALIZE_CMD)) {
55 FileCmdScript::~FileCmdScript()
61 LOG4CPP_INFO_S ((*mainCat)) <<
"FileCmdScript::canRedo";
63 return (m_fileCmdStack.count () > 0);
68 LOG4CPP_INFO_S ((*mainCat)) <<
"FileCmdScript::redo";
70 m_fileCmdStack.first()->redo(mainWindow);
71 m_fileCmdStack.pop_front();
bool canRedo() const
Returns true if there is at least one command on the stack.
FileCmdScript(const QString &fileCmdScriptFile)
Single constructor.
void redo(MainWindow &mainWindow)
Apply the next command. Requires non-empty stack.
FileCmdAbstract * createFileCmd(QXmlStreamReader &reader) const
Create one FileCmdAbstract from the specified xml subtree.
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...