#include "exportercreator.h" #include #include "model/step/tools.h" ExporterCreator::ExporterCreator(QString directory, QString name, QString code, bool exampleMode) : QObject() { _pluginDirectory = directory; _exporterName = name; _pluginCode = code; _exampleMode = exampleMode; } QString ExporterCreator::getFullName(const QString code, const QString name) { QString text = name; if (name == "") text = tr("Nom"); else text = Tools::getTitleCase(name); return QString("%1_Exporter%2").arg(code.toUpper(),text); } QString ExporterCreator::createExporterFiles() { QString logMessage = ""; QDir(_pluginDirectory).mkdir("exporters"); if (_exampleMode) _exporterName += "08"; if (!create_ExporterFile_h ()) logMessage.append(tr("Impossible de créer le fichier exporter (.h)\n")); if (!create_ExporterFile_cpp()) logMessage.append(tr("Impossible de créer le fichier exporter (.cpp)\n")); if (!modifyPluginManager_cpp()) logMessage.append(tr("Impossible de modifier le fichier PluginManager (.cpp)\n")); return logMessage; } bool ExporterCreator::create_ExporterFile_h() { QString input = ":/templates/PluginExporter_h.txt"; QString output = QString("%1/exporters/%2.h").arg(_pluginDirectory, getFullName(_pluginCode,_exporterName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_exporterName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_exporterName.toLower())); tags->append(QPair("{{NAME}}" ,_exporterName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ExporterCreator::create_ExporterFile_cpp() { QString input = ":/templates/PluginExporter_cpp.txt"; QString output = QString("%1/exporters/%2.cpp").arg(_pluginDirectory, getFullName(_pluginCode,_exporterName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_exporterName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_exporterName.toLower())); tags->append(QPair("{{NAME}}" ,_exporterName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ExporterCreator::modifyPluginManager_cpp() { if (!_exampleMode) { QString input = QString("%1/%2_pluginmanager.cpp").arg(_pluginDirectory,_pluginCode.toLower()); QString tag = "_pluginmanager.h\""; QString text = QString("#include \"exporters/%1.h\"").arg(getFullName(_pluginCode,_exporterName).toLower()); int offset = 1; bool fileOK = Tools::modifyManager(input, tag, text, offset); tag = "loadExporters()"; text = QString(" //addNewExporter(new %1());").arg(getFullName(_pluginCode,_exporterName)); return fileOK && Tools::modifyManager(input, tag, text, offset); } else { // Nothing to do return true; } }