00001
00002
00003
00004
00005
00006
00007 #include "FileCmdAbstract.h"
00008 #include "FileCmdFactory.h"
00009 #include "FileCmdScript.h"
00010 #include "FileCmdSerialize.h"
00011 #include "Logger.h"
00012 #include "MainWindow.h"
00013 #include <QDir>
00014 #include <QFile>
00015 #include <QMessageBox>
00016 #include <QXmlStreamReader>
00017 #include "Xml.h"
00018
00019 FileCmdScript::FileCmdScript(const QString &fileCmdScriptFile)
00020 {
00021 LOG4CPP_INFO_S ((*mainCat)) << "FileCmdScript::FileCmdScript"
00022 << " curDir=" << QDir::currentPath().toLatin1().data();
00023
00024
00025 QFile file (fileCmdScriptFile);
00026
00027 QXmlStreamReader reader (&file);
00028 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
00029
00030 QString msg = QString ("%1 %2 %3 %4")
00031 .arg (QObject::tr ("Cannot read script file"))
00032 .arg (fileCmdScriptFile)
00033 .arg (QObject::tr ("from directory"))
00034 .arg (QDir::currentPath());
00035 QMessageBox::critical (0,
00036 "Script File",
00037 msg);
00038 exit (-1);
00039 }
00040
00041
00042 FileCmdFactory factory;
00043 while (!reader.atEnd() && !reader.hasError()) {
00044
00045 if ((loadNextFromReader (reader) == QXmlStreamReader::StartElement) &&
00046 (reader.name() == FILE_CMD_SERIALIZE_CMD)) {
00047
00048
00049 m_fileCmdStack.push_back (factory.createFileCmd (reader));
00050 }
00051 }
00052 file.close();
00053 }
00054
00055 FileCmdScript::~FileCmdScript()
00056 {
00057 }
00058
00059 bool FileCmdScript::canRedo() const
00060 {
00061 LOG4CPP_INFO_S ((*mainCat)) << "FileCmdScript::canRedo";
00062
00063 return (m_fileCmdStack.count () > 0);
00064 }
00065
00066 void FileCmdScript::redo(MainWindow &mainWindow)
00067 {
00068 LOG4CPP_INFO_S ((*mainCat)) << "FileCmdScript::redo";
00069
00070 m_fileCmdStack.first()->redo(mainWindow);
00071 m_fileCmdStack.pop_front();
00072 }