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; }
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; } } }
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); }
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; }
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); }
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); } }