#include "actioncreator.h" #include #include "model/step/tools.h" ActionCreator::ActionCreator(QString directory, QString name, QString code, bool exampleMode) : QObject() { _pluginDirectory = directory; _actionName = name; _pluginCode = code; _exampleMode = exampleMode; } QString ActionCreator::getFullName(const QString code, const QString name) { QString text = name; if (name == "") text = tr("Nom"); else text = Tools::getTitleCase(name); return QString("%1_Action%2").arg(code.toUpper(),text); } QString ActionCreator::createActionFiles() { QString logMessage = ""; QDir(_pluginDirectory).mkdir("actions"); QDir(_pluginDirectory).mkdir("views"); QDir(_pluginDirectory).mkdir("views/actions"); if (_exampleMode) _actionName += "04"; if (!create_ActionFile_h ()) logMessage.append(tr("Impossible de créer le fichier action (.h)\n")); if (!create_ActionFile_cpp ()) logMessage.append(tr("Impossible de créer le fichier action (.cpp)\n")); if (!create_ActionOptionFile_h ()) logMessage.append(tr("Impossible de créer le fichier actionOption (.h)\n")); if (!create_ActionOptionFile_cpp()) logMessage.append(tr("Impossible de créer le fichier actionOption (.cpp)\n")); if (!create_ActionOptionFile_ui ()) logMessage.append(tr("Impossible de créer le fichier actionOption (.ui)\n")); if (!modifyPluginManager_cpp ()) logMessage.append(tr("Impossible de modifier le fichier PluginManager (.cpp)\n")); return logMessage; } bool ActionCreator::create_ActionFile_h() { QString input = ":/templates/PluginAction_h.txt"; QString output = QString("%1/actions/%2.h").arg(_pluginDirectory, getFullName(_pluginCode,_actionName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_actionName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_actionName.toLower())); tags->append(QPair("{{NAME}}" ,_actionName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ActionCreator::create_ActionFile_cpp() { QString input = ":/templates/PluginAction_cpp.txt"; QString output = QString("%1/actions/%2.cpp").arg(_pluginDirectory, getFullName(_pluginCode,_actionName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_actionName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_actionName.toLower())); tags->append(QPair("{{NAME}}" ,_actionName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ActionCreator::create_ActionOptionFile_h() { QString input = ":/templates/PluginActionOption_h.txt"; QString output = QString("%1/views/actions/%2options.h").arg(_pluginDirectory, getFullName(_pluginCode,_actionName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_actionName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_actionName.toLower())); tags->append(QPair("{{NAME}}" ,_actionName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ActionCreator::create_ActionOptionFile_cpp() { QString input = ":/templates/PluginActionOption_cpp.txt"; QString output = QString("%1/views/actions/%2options.cpp").arg(_pluginDirectory, getFullName(_pluginCode,_actionName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_actionName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_actionName.toLower())); tags->append(QPair("{{NAME}}" ,_actionName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ActionCreator::create_ActionOptionFile_ui() { QString input = ":/templates/PluginActionOption_ui.txt"; QString output = QString("%1/views/actions/%2options.ui").arg(_pluginDirectory, getFullName(_pluginCode,_actionName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_actionName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_actionName.toLower())); tags->append(QPair("{{NAME}}" ,_actionName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool ActionCreator::modifyPluginManager_cpp() { if (!_exampleMode) { QString input = QString("%1/%2_pluginmanager.cpp").arg(_pluginDirectory,_pluginCode.toLower()); QString tag = "_pluginmanager.h\""; QString text = QString("#include \"actions/%1.h\"").arg(getFullName(_pluginCode,_actionName).toLower()); int offset = 1; bool fileOK = Tools::modifyManager(input, tag, text, offset); tag = "loadActions()"; text = QString(" //addNewAction(new %1());").arg(getFullName(_pluginCode,_actionName)); return fileOK && Tools::modifyManager(input, tag, text, offset); } else { // Nothing to do return true; } }