Esempio n. 1
0
bool Commands::image(Image *img, QString fp)
{
	if (!m_commandImage.isEmpty())
	{
		QStringList execs = img->path(m_commandImage, "", 0, false, true, false, false);
		for (QString exec : execs)
		{
			exec = QDir::toNativeSeparators(exec);
			exec.replace("%path%", fp);
			exec.replace(" \\C ", " /C ");
			log(QObject::tr("Execution de \"%1\"").arg(exec));
			logCommand(exec);
			QProcess::execute(exec);
		}
	}
	if (m_mysql && !m_mysqlSettings.image.isEmpty())
	{
		start();
		QStringList execs = img->path(m_mysqlSettings.image, "", 0, false, true, false, false);
		for (QString exec : execs)
		{
			exec.replace("%path%", fp);
			log(QObject::tr("Execution SQL de \"%1\"").arg(exec));
			logCommandSql(exec);
			QSqlQuery query;
			if (!query.exec(exec))
				return false;
		}
	}
	return true;
}
Esempio n. 2
0
GitCommitLog::GitCommitLog(const std::string& logfile) : RCommitLog(logfile, 'u') {

    log_command = logCommand();

    //can generate log from directory
    if(!logf && is_dir) {
        logf = generateLog(logfile);

        if(logf) {
            success  = true;
            seekable = true;
        }
    }
}
Esempio n. 3
0
SVNCommitLog::SVNCommitLog(const std::string& logfile) : RCommitLog(logfile, '<') {

    log_command = logCommand();

    //can generate log from directory
    if(!logf && is_dir) {
        logf = generateLog(logfile);

        if(logf) {
            success  = true;
            seekable = true;
        }
    }

    logentry.reserve(1024);
}
Esempio n. 4
0
bool Commands::tag(Tag tag)
{
	QMap<QString,int> types;
	types["general"] = 0;
	types["artist"] = 1;
	types["general"] = 2;
	types["copyright"] = 3;
	types["character"] = 4;
	types["model"] = 5;
	types["photo_set"] = 6;
	QString original = QString(tag.text()).replace(" ", "_");
	if (!m_commandTag.isEmpty())
	{
		QString exec = QString(m_commandTag)
		.replace("%tag%", original)
		.replace("%original%", tag.text())
		.replace("%type%", tag.type())
		.replace("%number%", QString::number(types[tag.type()]));
		log(QObject::tr("Execution seule de \"%1\"").arg(exec));
		logCommand(exec);
		QProcess::execute(exec);
	}
	if (m_mysql && !m_mysqlSettings.tag.isEmpty())
	{
		start();
		QString exec = QString(m_mysqlSettings.tag)
		.replace("%tag%", original)
		.replace("%original%", tag.text())
		.replace("%type%", tag.type())
		.replace("%number%", QString::number(types[tag.type()]));
		log(QObject::tr("Execution SQL de \"%1\"").arg(exec));
		logCommandSql(exec);
		QSqlQuery query;
		return query.exec(exec);
	}
	return true;
}
Esempio n. 5
0
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
	m_engine = new QScriptEngine(this);

	m_space = new Workspace(this);
	m_waveRepo = m_space->waveRepository();

	m_waves = new WaveListController(this);
	m_waves->setObjectName("waves");
	m_waves->setRepository(m_waveRepo);

	Wave* wave = m_waves->add();
	wave->setName("One");
	wave->setComment("Yay");
	wave->setSensitivity(1);

	wave = (Wave*) m_waves->add();
	wave->setName("Two");
	wave->setComment("Yay");
	wave->setSensitivity(2);

	m_itemModel = new ItemListModel(this);
	m_itemModel->setItemList(m_waveRepo->activeItems());
	m_itemModel->setProperties(QStringList() << "name" << "comment" << "sensitivity");

	qRegisterMetaType<Wave*>("Wave*");

	QScriptValue val = m_engine->newQObject(m_waves);
	m_engine->globalObject().setProperty("waves", val);
	qScriptRegisterMetaType(m_engine, itemToScript, scriptToItem);
	qScriptRegisterMetaType(m_engine, waveToScript, scriptToWave);

	createWidgets();

	connect(m_space, SIGNAL(logCommand(QString)), this, SLOT(on_proj_logCommand(QString)));
}
/*!
 * @brief Runs the specified test from the currently loaded test script
 *
 * @param[in] n - number of test to run
 * @return Returns a bool indicating if the tests should be aborted
 *
 * @author J. Peterson
 * @date 06/22/2014
*/
bool CTestScript::runTest(unsigned int n)
{
    m_errorEncountered = false;
    m_terminatedEarly = false;

    if (n >= m_testList.size())
    {
        return(true);
    }

    int firstCommand = m_testList[n];
    int lastCommand = (n < m_testList.size()-1) ? m_testList[n+1] : m_commandList.size();

    for (int i=firstCommand; i<lastCommand; i++)
    {
        if (CAbort::Instance()->abortRequested())
        {
            m_errorEncountered = true;
            return(true);
        }

        CCommand *pCommand = &m_commandList[i];

        switch (pCommand->m_type)
        {
            case CCommand::CMD_TEST:
            {
                m_currentTest = pCommand->m_stringArg;
                m_currentDesc.clear();
                m_currentUnits.clear();
                break;
            }

            case CCommand::CMD_VERSION:
            {
                break;
            }
#if 0
            case CCommand::CMD_TYPE:
            {
                QString line = "TestType: ";
                line.append(pCommand->m_stringArg);
                logStringBlack(line.toLocal8Bit());
                break;
            }
#endif

            case CCommand::CMD_DESC:
            {
                m_currentDesc = pCommand->m_stringArg;
                break;
            }

            case CCommand::CMD_SLEEP:
            {
                logStringGray(pCommand->m_line.toLocal8Bit());
                QEventLoop loop;
                QTimer::singleShot(pCommand->m_argInteger, &loop, SLOT(quit()));
                loop.exec();
                break;
            }

            case CCommand::CMD_PROMPT:
            {
                generateTestHeader();
                logStringBlack("Nominal: \"YES\"");
                QMessageBox::StandardButton reply;
                QString title = "VapoTherm Test";
                QString prefix = "<font size=20>";
                QString suffix = "</font>";
                QString line = prefix + pCommand->m_stringArg + suffix;
                reply = QMessageBox::question(NULL, title, line, QMessageBox::Yes|QMessageBox::No);
                if (reply == QMessageBox::No)
                {
                    m_errorEncountered = true;
                    logStringRed("Value: \"NO\"");
                    logStringRed("Result: FAIL");
                    logStringRed("FailDesc: failed operator inspection");
                }
                else
                {
                    logStringBlack("Value: \"YES\"");
                    logStringBlack("Result: PASS");
                }
                generateTestTrailer();
                break;
            }

            case CCommand::CMD_PAUSE:
            {
                QString title = "VapoTherm Test";
                QString prefix = "<font size=20>";
                QString suffix = "</font>";
                QString line = prefix + pCommand->m_stringArg + suffix;
                QMessageBox::information(NULL, title, line, QMessageBox::Ok);
                break;
            }

            case CCommand::CMD_SENDLINE_A:
            {
                if (!sendVapoThermCommand(0, pCommand->m_stringArg.toLocal8Bit()))
                {
                    m_errorEncountered = true;
                }
                logCommand(pCommand->m_stringArg.toLocal8Bit());
                readVapoThermResponse(0, m_responseBuffer, sizeof(m_responseBuffer), m_timeoutA_ms);
                logReply(m_responseBuffer);
                break;
            }

            case CCommand::CMD_READLINE_A:
            {
                qApp->processEvents();
                m_responseBuffer[0] = '\0';
                if (!readVapoThermResponse(0, m_responseBuffer, sizeof(m_responseBuffer), m_timeoutA_ms))
                {
                    logStringGray("Failed to read from device or fixture");
                    m_errorEncountered = true;
                }
                else
                {
                    logReply(m_responseBuffer);
                }
                break;
            }

            case CCommand::CMD_SENDLINE_B:
            {
                if (!sendVapoThermCommand(1, pCommand->m_stringArg.toLocal8Bit()))
                {
                    m_errorEncountered = true;
                }
                logCommand(pCommand->m_stringArg.toLocal8Bit());
                readVapoThermResponse(1, m_responseBuffer, sizeof(m_responseBuffer), m_timeoutB_ms);
                logReply(m_responseBuffer);
                break;
            }

            case CCommand::CMD_READLINE_B:
            {
                qApp->processEvents();
                m_responseBuffer[0] = '\0';
                if (!readVapoThermResponse(1, m_responseBuffer, sizeof(m_responseBuffer), m_timeoutB_ms))
                {
                    logStringGray("Failed to read from device or fixture");
                    m_errorEncountered = true;
                }
                else
                {
                    logReply(m_responseBuffer);
                }
                break;
            }

            case CCommand::CMD_FLUSH_A:
            {
                flushIncomingData(0);
                break;
            }

            case CCommand::CMD_FLUSH_B:
            {
                flushIncomingData(1);
                break;
            }

            case CCommand::CMD_UNITS:
            {
                m_currentUnits = pCommand->m_stringArg;
                //QString line = "Units: ";
                //line.append(pCommand->m_stringArg);
                //logStringGray(line);
                break;
            }

            case CCommand::CMD_EXPECT:
            {
                generateTestHeader();
                logStringGray(pCommand->m_line.toLocal8Bit());
                QString line = m_responseBuffer;
                line = line.trimmed();
                QStringList args = line.split(QRegExp(" "), QString::SkipEmptyParts);
                char msg[500];
                sprintf(msg, "LowerLimit: %0.3lf", pCommand->m_argMin);
                logStringBlack(msg);
                sprintf(msg, "UpperLimit: %0.3lf", pCommand->m_argMax);
                logStringBlack(msg);

                if (args.size() < pCommand->m_argNumber)
                {
                    logStringBlack("Value: none");
                    logStringRed("Result: FAIL");
                    logStringRed("FailDesc: expected field not found");
                    m_errorEncountered = true;
                }
                else
                {
                    bool ok;
                    double testNumber = args[pCommand->m_argNumber-1].toDouble(&ok);
                    if (!ok)
                    {
                        logStringBlack("Value: none");
                        logStringRed("Result: FAIL");
                        logStringRed("FailDesc: unexpected data returned from device or fixture");
                        m_errorEncountered = true;
                    }
                    else if ((testNumber < pCommand->m_argMin) || (testNumber > pCommand->m_argMax))
                    {
                        sprintf(msg, "Value: %0.3lf", testNumber);
                        logStringBlack(msg);
                        logStringRed("Result: FAIL");
                        m_errorEncountered = true;
                    }
                    else
                    {
                        sprintf(msg, "Value: %0.3lf", testNumber);
                        logStringBlack(msg);
                        logStringBlack("Result: PASS");
                    }
                }
                generateTestTrailer();
                break;
            }

        case CCommand::CMD_EXPECT_CHAR:
            {
                generateTestHeader();
                logStringGray(pCommand->m_line.toLocal8Bit());
                QString line = m_responseBuffer;
                line = line.trimmed();
                QStringList args = line.split(QRegExp(" "), QString::SkipEmptyParts);
                char msg[500];
                sprintf(msg, "Nominal: \'%c\'", pCommand->m_expectedChar);
                logStringBlack(msg);

                if (pCommand->m_argNumber > args.size())
                {
                    logStringBlack("Value: none");
                    logStringRed("Result: FAIL");
                    logStringRed("FailDesc: failed reading data from device or fixture");
                    m_errorEncountered = true;
                }
                else
                {
                    QString *arg = &args[pCommand->m_argNumber-1];
                    int argLength = arg->size();
                    if (pCommand->m_charNumber > argLength)
                    {
                        logStringBlack("Value: none");
                        logStringRed("Result: FAIL");
                        logStringRed("FailDesc: argument length is too short");
                        m_errorEncountered = true;
                    }
                    else if (arg->toLocal8Bit()[pCommand->m_charNumber-1] != pCommand->m_expectedChar)
                    {
                        char msg[200];

                        char c = arg->toLocal8Bit().at(pCommand->m_charNumber-1);
                        sprintf(msg, "Value: \'%c\'", c);
                        logStringRed(msg);
                        logStringRed("Result: FAIL");
                        m_errorEncountered = true;
                    }
                    else
                    {
                        char c = arg->toLocal8Bit().at(pCommand->m_charNumber-1);
                        sprintf(msg, "Value: \'%c\'", c);
                        logStringBlack(msg);
                        logStringBlack("Result: PASS");
                    }
                }
                generateTestTrailer();
                break;
            }

        case CCommand::CMD_EXPECT_STR:
            {
                generateTestHeader();
                logStringGray(pCommand->m_line.toLocal8Bit());
                QString line = m_responseBuffer;
                line = line.trimmed();
                QStringList args = line.split(QRegExp(" "), QString::SkipEmptyParts);
                char msg[500];
                sprintf(msg, "Nominal: \"%s\"", pCommand->m_stringArg.toLocal8Bit().data());
                logStringBlack(msg);
                if (pCommand->m_argNumber > args.size())
                {
                    logStringBlack("Value: none");
                    logStringRed("Result: FAIL");
                    logStringRed("FailDesc: failed to read data from device or fixture");
                    m_errorEncountered = true;
                }
                else
                {
                    sprintf(msg, "Value: \"%s\"", args[pCommand->m_argNumber-1].toLocal8Bit().data());
                    logStringBlack(msg);
                    QString *arg = &args[pCommand->m_argNumber-1];
                    if (arg != pCommand->m_stringArg)
                    {
                        logStringRed("Result: FAIL");
                        logStringRed("FailDesc: expected string not found");
                        m_errorEncountered = true;
                    }
                    else
                    {
                        logStringBlack("Result: PASS");
                    }
                }
                generateTestTrailer();
                break;
            }

        case CCommand::CMD_WAITFOR:
        {
            logStringGray(pCommand->m_line.toLocal8Bit());
            qApp->processEvents();
            m_errorEncountered = true;
            int timeout = pCommand->params_WAITFOR.m_timeoutMS;
            int channel = pCommand->params_WAITFOR.m_channelIndex;
            QTime t;
            t.start();
            while (t.elapsed() < timeout)
            {
                qApp->processEvents();
                m_responseBuffer[0] = '\0';
                if (readVapoThermResponse(channel, m_responseBuffer, sizeof(m_responseBuffer), timeout))
                {
                    logReply(m_responseBuffer);
                    QString str = m_responseBuffer;
                    if (str.contains(*pCommand->params_WAITFOR.m_expectedString))
                    {
                        m_errorEncountered = false;
                        break;
                    }
                }
            }
            if (m_errorEncountered)
            {
                logStringGray("WAITFOR: command timed out");
            }
            else
            {
                QString str = "WAITFOR: found expected string (";
                str.append(pCommand->params_WAITFOR.m_expectedString);
                str.append(")");
                logStringGray(str.toLocal8Bit());
            }
            break;
        }

        case CCommand::CMD_COMMENT:
            {
                if (pCommand->m_line.length() > 0)
                {
                    logStringGray(pCommand->m_line.toLocal8Bit());
                }
                break;
            }

        case CCommand::CMD_END_ON_ERROR:
        {
            if (m_errorEncountered)
            {
                m_terminatedEarly = true;
                return(false);
            }
            break;
        }

        case CCommand::CMD_UNKNOWN:
        default:
            {
                QString msg = "Unknown directive: " + pCommand->m_line;
                logStringRed(msg.toLocal8Bit());
                m_errorEncountered = true;
                break;
            }
        }

        //
        // Give the UI a chance to update
        //
        qApp->processEvents();

        if (m_errorEncountered && m_terminateOnError)
        {
            break;
        }
    }

    return(true);
}
Esempio n. 7
0
Application::Application(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MPQInit();
    instance = this;
    resources = NULL;
    imageLibrary = NULL;
    dotaLibrary = NULL;
    mainWindow = NULL;
    cache = NULL;
    hInstance = _hInstance;
    _loaded = false;

    root = String::getPath(getAppPath());
    cfg.read();

    warLoader = new MPQLoader("Custom_V1");
    warLoader->loadArchive(String::buildFullName(cfg.warPath, "war3.mpq"));
    warLoader->loadArchive(String::buildFullName(cfg.warPath, "war3x.mpq"));
    warLoader->loadArchive(String::buildFullName(cfg.warPath, "war3xlocal.mpq"));
    warLoader->loadArchive(String::buildFullName(cfg.warPath, "war3patch.mpq"));

    if (logCommand(lpCmdLine))
        return;

    ScriptType::initTypes();
    UpdateDialog::init(hInstance);

    INITCOMMONCONTROLSEX iccex;
    iccex.dwSize = sizeof iccex;
    iccex.dwICC = ICC_STANDARD_CLASSES | ICC_PROGRESS_CLASS |
                  ICC_BAR_CLASSES | ICC_TREEVIEW_CLASSES | ICC_LISTVIEW_CLASSES |
                  ICC_TAB_CLASSES | ICC_UPDOWN_CLASS | ICC_DATE_CLASSES;
    InitCommonControlsEx(&iccex);
    LoadLibrary("Riched20.dll");
    OleInitialize(NULL);

    String path = String::getPath(getAppPath());
    String resPath = String::buildFullName(path, "resources.mpq");
    String patchPath = String::buildFullName(path, "install.mpq");
    File* tOpen = File::open(resPath, File::READ);
    if (tOpen == NULL)
    {
        tOpen = File::open(patchPath, File::READ);
        if (tOpen)
        {
            delete tOpen;
            MoveFile(patchPath, resPath);
        }
    }
    else
        delete tOpen;
    resources = MPQArchive::open(resPath);
    MPQArchive* patch = MPQArchive::open(patchPath, File::READ);
    if (patch)
    {
        for (uint32 i = 0; i < patch->getHashSize(); i++)
        {
            char const* name = patch->getFileName(i);
            if (name)
            {
                MPQFile* source = patch->openFile(i, File::READ);
                if (source)
                {
                    MPQFile* dest = resources->openFile(name, File::REWRITE);
                    if (dest)
                    {
                        static uint8 buf[1024];
                        while (int length = source->read(buf, sizeof buf))
                            dest->write(buf, length);
                        delete dest;
                    }
                    delete source;
                }
            }
        }
        delete patch;
        DeleteFile(patchPath);
    }

    imageLibrary = new ImageLibrary(resources);

    cache = new CacheManager();
    dotaLibrary = new DotaLibrary();

#if 0
    File* dlog = File::open("diff.txt", File::REWRITE);
    for (int pt = 0; pt < 120; pt++)
    {
        String prev = "";
        bool different = false;
        for (int ver = 1; ver <= 80 && !different; ver++)
        {
            Dota* dota = dotaLibrary->getDota(makeVersion(6, ver));
            if (dota)
            {
                Dota::Hero* hero = dota->getHero(pt);
                if (hero)
                {
                    if (prev == "")
                        prev = hero->name;
                    else if (prev.icompare(hero->name))
                        different = true;
                }
            }
        }
        if (different)
        {
            dlog->printf("  Pt=%d\r\n", pt);
            prev = "";
            for (int ver = 1; ver <= 80; ver++)
            {
                Dota* dota = dotaLibrary->getDota(makeVersion(6, ver));
                if (dota)
                {
                    Dota::Hero* hero = dota->getHero(pt);
                    if (hero)
                    {
                        if (prev.icompare(hero->name))
                        {
                            dlog->printf("6.%02d = %s\r\n", ver, hero->name);
                            prev = hero->name;
                        }
                    }
                }
            }
        }
    }
    delete dlog;
#endif
#if 0
    dotaLibrary->getDota(parseVersion("6.79e"),
                         "K:\\Progs\\DotAReplay\\maps\\DotA v6.79e.w3x");
    WIN32_FIND_DATA data;
    String enumPath = "K:\\Progs\\DotAReplay\\maps";
    HANDLE hFind = FindFirstFile(String::buildFullName(enumPath, "*"), &data);
    BOOL success = (hFind != INVALID_HANDLE_VALUE);
    while (success)
    {
        String file(data.cFileName);
        if (String::getExtension(file).icompare(".w3x") == 0)
        {
            file.toLower();
            Array<String> sub;
            if (file.rfind("dota{{_| }allstars}?{_| }v(\\d)\\.(\\d\\d)([b-z]?)[^b-z]", 0, &sub) >= 0)
            {
                int major = sub[1].toInt();
                int minor = sub[2].toInt();
                int build = 0;
                if (!sub[3].isEmpty())
                    build = int(sub[3][0] - 'a');
                uint32 version = makeVersion(major, minor, build);

                dotaLibrary->getDota(version, String::buildFullName(enumPath, file));
            }
        }
        success = FindNextFile(hFind, &data);
    }
    FindClose(hFind);
#endif

    mainWindow = new MainWnd();

    mainWindow->postLoad();
    _loaded = true;

    if (lpCmdLine[0])
    {
        COPYDATASTRUCT cd;
        cd.dwData = MAINWND_OPEN_REPLAY;
        cd.cbData = strlen(lpCmdLine) + 1;
        cd.lpData = lpCmdLine;
        PostMessage(getMainWindow(), WM_COPYDATA_FAKE, NULL, (LPARAM) &cd);
    }
}