#include "readercreator.h" #include #include "model/step/tools.h" ReaderCreator::ReaderCreator(QString directory, QString name, QString code, bool exampleMode) : QObject() { _pluginDirectory = directory; _readerName = name; _pluginCode = code; _exampleMode = exampleMode; } QString ReaderCreator::getFullName(const QString code, const QString name) { QString text = name; if (name == "") text = tr("Nom"); else text = Tools::getTitleCase(name); return QString("%1_Reader%2").arg(code.toUpper(),text); } QString ReaderCreator::createReaderFiles() { QString logMessage = ""; QDir(_pluginDirectory).mkdir("readers"); if (_exampleMode) _readerName += "07"; if (!create_ReaderFile_h ()) logMessage.append(tr("Impossible de créer le fichier reader (.h)\n")); if (!create_ReaderFile_cpp ()) logMessage.append(tr("Impossible de créer le fichier reader (.cpp)\n")); if (!modifyPluginManager_cpp()) logMessage.append(tr("Impossible de modifier le fichier PluginManager (.cpp)\n")); return logMessage; } bool ReaderCreator::create_ReaderFile_h() { QString input = ":/templates/PluginReader_h.txt"; QString output = QString("%1/readers/%2.h").arg(_pluginDirectory, getFullName(_pluginCode,_readerName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_readerName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_readerName.toLower())); tags->append(QPair("{{NAME}}" ,_readerName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ReaderCreator::create_ReaderFile_cpp() { QString input = ":/templates/PluginReader_cpp.txt"; QString output = QString("%1/readers/%2.cpp").arg(_pluginDirectory, getFullName(_pluginCode,_readerName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_readerName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_readerName.toLower())); tags->append(QPair("{{NAME}}" ,_readerName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ReaderCreator::modifyPluginManager_cpp() { if (!_exampleMode) { QString input = QString("%1/%2_pluginmanager.cpp").arg(_pluginDirectory,_pluginCode.toLower()); QString tag = "_pluginmanager.h\""; QString text = QString("#include \"readers/%1.h\"").arg(getFullName(_pluginCode,_readerName).toLower()); int offset = 1; bool fileOK = Tools::modifyManager(input, tag, text, offset); tag = "loadReaders()"; text = QString(" //addNewReader(new %1());").arg(getFullName(_pluginCode,_readerName)); return fileOK && Tools::modifyManager(input, tag, text, offset); } else { // Nothing to do return true; } }