本文整理汇总了C++中QProcess::waitForFinished方法的典型用法代码示例。如果您正苦于以下问题:C++ QProcess::waitForFinished方法的具体用法?C++ QProcess::waitForFinished怎么用?C++ QProcess::waitForFinished使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QProcess
的用法示例。
在下文中一共展示了QProcess::waitForFinished方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: adjustNewstuffFile
bool Upload::adjustNewstuffFile(const Package &package)
{
if (m_xml.isNull()) {
QTemporaryFile tempFile(QDir::tempPath() + "/monav-maps-XXXXXX.xml");
tempFile.setAutoRemove(false);
tempFile.open();
QString monavFilename = tempFile.fileName();
tempFile.close();
QProcess wget;
QStringList const arguments = QStringList() << "http://filesmaster.kde.org/marble/newstuff/maps-monav.xml" << "-O" << monavFilename;
wget.start("wget", arguments);
wget.waitForFinished(1000 * 60 * 60 * 12); // wait up to 12 hours for download to complete
if (wget.exitStatus() != QProcess::NormalExit || wget.exitCode() != 0) {
qDebug() << "Failed to download newstuff file from filesmaster.kde.org";
changeStatus( package, "error", "Failed to sync newstuff file: " + wget.readAllStandardError());
return false;
}
QFile file(monavFilename);
if (!file.open(QFile::ReadOnly)) {
qDebug() << "Failed to open newstuff file" << monavFilename;
changeStatus( package, "error", "Failed to open newstuff file.");
return false;
}
if ( !m_xml.setContent( &file ) ) {
qDebug() << "Cannot parse newstuff xml file.";
changeStatus( package, "error", "Failed to parse newstuff .xml file.");
return false;
}
QFile::remove(monavFilename);
}
QDomElement root = m_xml.documentElement();
QDomNodeList regions = root.elementsByTagName( "stuff" );
for ( unsigned int i = 0; i < regions.length(); ++i ) {
QDomNode node = regions.item( i );
if (!node.namedItem("payload").isNull()) {
QUrl url = node.namedItem("payload").toElement().text();
QFileInfo fileInfo(url.path());
if (fileInfo.fileName() == package.file.fileName()) {
QString removeFile;
QDomNode dateNode = node.namedItem("releasedate");
if (!dateNode.isNull()) {
dateNode.removeChild(dateNode.firstChild());
dateNode.appendChild(m_xml.createTextNode(releaseDate()));
}
QDomNode versionNode = node.namedItem("version");
if (!versionNode.isNull()) {
double version = versionNode.toElement().text().toDouble();
versionNode.removeChild(versionNode.firstChild());
versionNode.appendChild(m_xml.createTextNode(QString::number(version+0.1, 'f', 1)));
}
QDomNode payloadNode = node.namedItem("payload");
payloadNode.removeChild(payloadNode.firstChild());
if (fileInfo.dir().dirName() != targetDir()) {
removeFile = QString("/home/marble/web/monav/%1/%2").arg(fileInfo.dir().dirName()).arg(package.file.fileName());
qDebug() << "Going to remove the old file " << removeFile;
}
QString payload = "http://files.kde.org/marble/monav/%1/%2";
payload = payload.arg(targetDir()).arg(package.file.fileName());
payloadNode.appendChild(m_xml.createTextNode(payload));
return removeFile.isEmpty() ? uploadNewstuff() : (uploadNewstuff() && deleteRemoteFile(removeFile));
}
}
}
QDomNode stuff = root.appendChild(m_xml.createElement("stuff"));
stuff.toElement().setAttribute("category", "marble/routing/monav");
QDomNode nameNode = stuff.appendChild(m_xml.createElement("name"));
nameNode.toElement().setAttribute("lang", "en");
QString name = "%1 / %2 (%3)";
if (package.region.country().isEmpty()) {
name = name.arg(package.region.continent()).arg(package.region.name());
name = name.arg(package.transport);
} else {
name = "%1 / %2 / %3 (%4)";
name = name.arg(package.region.continent()).arg(package.region.country());
name = name.arg(package.region.name()).arg(package.transport);
}
nameNode.appendChild(m_xml.createTextNode(name));
QDomNode authorNode = stuff.appendChild(m_xml.createElement("author"));
authorNode.appendChild(m_xml.createTextNode("Automatically created from map data assembled by the OpenStreetMap community"));
QDomNode licenseNode = stuff.appendChild(m_xml.createElement("license"));
licenseNode.appendChild(m_xml.createTextNode("Creative Commons by-SA 2.0"));
QDomNode summaryNode = stuff.appendChild(m_xml.createElement("summary"));
QString summary = "Requires KDE >= 4.6: Offline Routing in %1, %2";
summary = summary.arg(package.region.name()).arg(package.region.continent());
summaryNode.appendChild(m_xml.createTextNode(summary));
QDomNode versionNode = stuff.appendChild(m_xml.createElement("version"));
versionNode.appendChild(m_xml.createTextNode("0.1"));
QDomNode dateNode = stuff.appendChild(m_xml.createElement("releasedate"));
dateNode.appendChild(m_xml.createTextNode(releaseDate()));
//.........这里部分代码省略.........
示例2: executeSCPFrom
bool SSHConnectionCLI::executeSCPFrom(const QString& source,
const QString& dest,
const QStringList& args,
QString* stdout_str, QString* stderr_str,
int* ec)
{
QProcess proc;
// Start with input args
QStringList fullArgs(args);
// Add port number
fullArgs << "-P" << QString::number(m_port);
// Add source
fullArgs << QString("%1%2%3:%4")
.arg(m_user)
.arg(m_user.isEmpty() ? "" : "@")
.arg(m_host)
.arg(source);
// Add destination
fullArgs << dest;
proc.start("scp", fullArgs);
int timeout_ms = 60000; // one minute
if (!proc.waitForStarted(timeout_ms)) {
qWarning() << QString("Failed to start scp command with args \"%1\" "
"after %2 seconds.")
.arg(fullArgs.join(","))
.arg(timeout_ms / 1000);
return false;
}
proc.closeWriteChannel();
if (!proc.waitForFinished(timeout_ms)) {
qWarning() << QString("scp command with args \"%1\" failed to finish "
"within %2 seconds.")
.arg(fullArgs.join(","))
.arg(timeout_ms / 1000);
return false;
}
if (proc.exitCode() != 0) {
qWarning() << QString("scp command with args \"%1\" failed with an exit "
"code of %2.")
.arg(fullArgs.join(","))
.arg(proc.exitCode())
<< "\nstdout:\n"
<< QString(proc.readAllStandardOutput()) << "\nstderr:\n"
<< QString(proc.readAllStandardError());
return false;
}
if (stdout_str != nullptr)
*stdout_str = QString(proc.readAllStandardOutput());
if (stderr_str != nullptr)
*stderr_str = QString(proc.readAllStandardError());
if (ec != nullptr)
*ec = proc.exitCode();
proc.close();
return true;
}
示例3: on_buttonBox_accepted
//.........这里部分代码省略.........
return;
}
QTemporaryFile output_file(QString("%1/edb_asm_temp_%2_XXXXXX.bin").arg(QDir::tempPath()).arg(getpid()));
if(!output_file.open()) {
QMessageBox::critical(this, tr("Error Creating File"), tr("Failed to create temporary object file."));
return;
}
QSettings settings;
const QString assembler = settings.value("Assembler/helper_application", "/usr/bin/yasm").toString();
const QFile file(assembler);
if(assembler.isEmpty() || !file.exists()) {
QMessageBox::warning(this, tr("Couldn't Find Assembler"), tr("Failed to locate your assembler, please specify one in the options."));
return;
}
const QFileInfo info(assembler);
QProcess process;
QStringList arguments;
QString program(assembler);
if(info.fileName() == "yasm") {
switch(edb::v1::debugger_core->cpu_type()) {
case edb::string_hash<'x', '8', '6'>::value:
source_file.write("[BITS 32]\n");
break;
case edb::string_hash<'x', '8', '6', '-', '6', '4'>::value:
source_file.write("[BITS 64]\n");
break;
default:
Q_ASSERT(0);
}
source_file.write(QString("[SECTION .text vstart=0x%1 valign=1]\n\n").arg(edb::v1::format_pointer(address_)).toLatin1());
source_file.write(nasm_syntax.toLatin1());
source_file.write("\n");
source_file.close();
arguments << "-o" << output_file.fileName();
arguments << "-f" << "bin";
arguments << source_file.fileName();
} else if(info.fileName() == "nasm") {
switch(edb::v1::debugger_core->cpu_type()) {
case edb::string_hash<'x', '8', '6'>::value:
source_file.write("[BITS 32]\n");
break;
case edb::string_hash<'x', '8', '6', '-', '6', '4'>::value:
source_file.write("[BITS 64]\n");
break;
default:
Q_ASSERT(0);
}
source_file.write(QString("ORG 0x%1\n\n").arg(edb::v1::format_pointer(address_)).toLatin1());
source_file.write(nasm_syntax.toLatin1());
source_file.write("\n");
source_file.close();
arguments << "-o" << output_file.fileName();
arguments << "-f" << "bin";
arguments << source_file.fileName();
}
process.start(program, arguments);
if(process.waitForFinished()) {
const int exit_code = process.exitCode();
if(exit_code != 0) {
QMessageBox::warning(this, tr("Error In Code"), process.readAllStandardError());
} else {
QByteArray bytes = output_file.readAll();
if(bytes.size() <= instruction_size_) {
if(ui->fillWithNOPs->isChecked()) {
// TODO: get system independent nop-code
edb::v1::modify_bytes(address_, instruction_size_, bytes, 0x90);
} else {
edb::v1::modify_bytes(address_, instruction_size_, bytes, 0x00);
}
} else {
if(ui->keepSize->isChecked()) {
QMessageBox::warning(this, tr("Error In Code"), tr("New instruction is too big to fit."));
} else {
edb::v1::modify_bytes(address_, bytes.size(), bytes, 0x00);
}
}
}
}
} else {
QMessageBox::warning(this, tr("Error In Code"), tr("Failed to assembly the given assemble code."));
}
}
示例4: updateTOPPAS
void updateTOPPAS(const String& infile, const String& outfile)
{
Int this_instance = getIntOption_("instance");
INIUpdater updater;
String tmp_ini_file = File::getTempDirectory() + "/" + File::getUniqueName() + "_INIUpdater.ini";
tmp_files_.push_back(tmp_ini_file);
String path = File::getExecutablePath();
ParamXMLFile paramFile;
Param p;
paramFile.load(infile, p);
// get version of TOPPAS file
String version = "Unknown";
if (!p.exists("info:version"))
{
writeLog_("No OpenMS version information found in file " + infile + "! Assuming OpenMS 1.8 and below.");
version = "1.8.0";
}
else
{
version = p.getValue("info:version");
// TODO: return on newer version?!
}
Int vertices = p.getValue("info:num_vertices");
// update sections
writeDebug_("#Vertices: " + String(vertices), 1);
bool update_success = true;
for (Int v = 0; v < vertices; ++v)
{
String sec_inst = "vertices:" + String(v) + ":";
// check for default instance
if (!p.exists(sec_inst + "toppas_type"))
{
writeLog_("Update for file " + infile + " failed because the vertex #" + String(v) + " does not have a 'toppas_type' node. Check INI file for corruption!");
update_success = false;
break;
}
if (p.getValue(sec_inst + "toppas_type") != "tool") // not a tool (but input/output/merge node)
{
continue;
}
if (!p.exists(sec_inst + "tool_name"))
{
writeLog_("Update for file " + infile + " failed because the vertex #" + String(v) + " does not have a 'tool_name' node. Check INI file for corruption!");
update_success = false;
break;
}
String old_name = p.getValue(sec_inst + "tool_name");
String new_tool;
String ttype;
// find mapping to new tool (might be the same name)
if (p.exists(sec_inst + "tool_type")) ttype = p.getValue(sec_inst + "tool_type");
if (!updater.getNewToolName(old_name, ttype, new_tool))
{
String type_text = ((ttype == "") ? "" : " with type '" + ttype + "' ");
writeLog_("Update for file " + infile + " failed because the tool '" + old_name + "'" + type_text + "is unknown. TOPPAS file seems to be corrupted!");
update_success = false;
break;
}
// set new tool name
p.setValue(sec_inst + "tool_name", new_tool);
// delete TOPPAS type
if (new_tool != "GenericWrapper")
{
p.setValue(sec_inst + "tool_type", "");
}
// get defaults of new tool by calling it
QProcess pr;
QStringList arguments;
arguments << "-write_ini";
arguments << tmp_ini_file.toQString();
arguments << "-instance";
arguments << String(this_instance).toQString();
pr.start((path + "/" + new_tool).toQString(), arguments);
if (!pr.waitForFinished(-1))
{
writeLog_("Update for file " + infile + " failed because the tool '" + new_tool + "' returned with an error! Check if the tool works properly.");
update_success = false;
break;
}
// update defaults with old values
Param new_param;
paramFile.load(tmp_ini_file, new_param);
new_param = new_param.copy(new_tool + ":1", true);
Param old_param = p.copy(sec_inst + "parameters", true);
new_param.update(old_param);
// push back changes
p.remove(sec_inst + "parameters:");
p.insert(sec_inst + "parameters", new_param);
}
//.........这里部分代码省略.........
示例5: main
int main(int argc, char **argv)
{
QApplication app(argc, argv);
App::initializeDependencies();
auto aboutData = App::getAboutData();
QCommandLineParser parser;
KAboutData::setApplicationData(aboutData);
parser.addVersionOption();
parser.addHelpOption();
aboutData.setupCommandLine(&parser);
parser.process(app);
aboutData.processCommandLine(&parser);
KSharedConfig::Ptr config = KSharedConfig::openConfig(QStringLiteral("zanshin-migratorrc"));
KConfigGroup group = config->group("Migrations");
if (!group.readEntry("Migrated021Projects", false)) {
std::cerr << "Migrating data from zanshin 0.2, please wait..." << std::endl;
QProcess proc;
proc.start(QStringLiteral("zanshin-migrator"));
proc.waitForFinished(-1);
if (proc.exitStatus() == QProcess::CrashExit) {
std::cerr << "Migrator crashed!" << std::endl;
} else if (proc.exitCode() == 0) {
std::cerr << "Migration done" << std::endl;
} else {
std::cerr << "Migration error, code" << proc.exitCode() << std::endl;
}
}
auto widget = new QWidget;
auto components = new Widgets::ApplicationComponents(widget);
components->setModel(Presentation::ApplicationModel::Ptr::create());
auto layout = new QVBoxLayout;
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(components->pageView());
widget->setLayout(layout);
auto sourcesDock = new QDockWidget(QObject::tr("Sources"));
sourcesDock->setObjectName(QStringLiteral("sourcesDock"));
sourcesDock->setWidget(components->availableSourcesView());
auto pagesDock = new QDockWidget(QObject::tr("Pages"));
pagesDock->setObjectName(QStringLiteral("pagesDock"));
pagesDock->setWidget(components->availablePagesView());
auto editorDock = new QDockWidget(QObject::tr("Editor"));
editorDock->setObjectName(QStringLiteral("editorDock"));
editorDock->setWidget(components->editorView());
auto window = new KXmlGuiWindow;
window->setCentralWidget(widget);
window->addDockWidget(Qt::RightDockWidgetArea, editorDock);
window->addDockWidget(Qt::LeftDockWidgetArea, pagesDock);
window->addDockWidget(Qt::LeftDockWidgetArea, sourcesDock);
auto actions = components->globalActions();
actions.insert(QStringLiteral("dock_sources"), sourcesDock->toggleViewAction());
actions.insert(QStringLiteral("dock_pages"), pagesDock->toggleViewAction());
actions.insert(QStringLiteral("dock_editor"), editorDock->toggleViewAction());
auto ac = window->actionCollection();
ac->addAction(KStandardAction::Quit, window, SLOT(close()));
for (auto it = actions.constBegin(); it != actions.constEnd(); ++it) {
auto shortcut = it.value()->shortcut();
if (!shortcut.isEmpty()) {
ac->setDefaultShortcut(it.value(), shortcut);
}
ac->addAction(it.key(), it.value());
}
window->setupGUI(QSize(1024, 600),
KXmlGuiWindow::ToolBar
| KXmlGuiWindow::Keys
| KXmlGuiWindow::Save
| KXmlGuiWindow::Create);
window->show();
return app.exec();
}
示例6: asyncStart
void AndroidRunner::asyncStart()
{
QMutexLocker locker(&m_mutex);
forceStop();
if (m_useCppDebugger) {
// Remove pong file.
QProcess adb;
adb.start(m_adb, selector() << _("shell") << _("rm") << m_pongFile);
adb.waitForFinished();
}
QStringList args = selector();
args << _("shell") << _("am") << _("start") << _("-n") << m_intentName;
if (m_useCppDebugger) {
QProcess adb;
adb.start(m_adb, selector() << _("forward")
<< QString::fromLatin1("tcp:%1").arg(m_localGdbServerPort)
<< _("localfilesystem:") + m_gdbserverSocket);
if (!adb.waitForStarted()) {
emit remoteProcessFinished(tr("Failed to forward C++ debugging ports. Reason: %1.").arg(adb.errorString()));
return;
}
if (!adb.waitForFinished(5000)) {
emit remoteProcessFinished(tr("Failed to forward C++ debugging ports."));
return;
}
args << _("-e") << _("debug_ping") << _("true");
args << _("-e") << _("ping_file") << m_pingFile;
args << _("-e") << _("pong_file") << m_pongFile;
args << _("-e") << _("gdbserver_command") << m_gdbserverCommand;
args << _("-e") << _("gdbserver_socket") << m_gdbserverSocket;
}
if (m_useQmlDebugger || m_useQmlProfiler) {
// currently forward to same port on device and host
const QString port = QString::fromLatin1("tcp:%1").arg(m_qmlPort);
QProcess adb;
adb.start(m_adb, selector() << _("forward") << port << port);
if (!adb.waitForStarted()) {
emit remoteProcessFinished(tr("Failed to forward QML debugging ports. Reason: %1.").arg(adb.errorString()));
return;
}
if (!adb.waitForFinished()) {
emit remoteProcessFinished(tr("Failed to forward QML debugging ports."));
return;
}
args << _("-e") << _("qml_debug") << _("true");
args << _("-e") << _("qmljsdebugger") << QString::fromLatin1("port:%1,block").arg(m_qmlPort);
}
if (m_useLocalQtLibs) {
args << _("-e") << _("use_local_qt_libs") << _("true");
args << _("-e") << _("libs_prefix") << _("/data/local/tmp/qt/");
args << _("-e") << _("load_local_libs") << m_localLibs;
args << _("-e") << _("load_local_jars") << m_localJars;
if (!m_localJarsInitClasses.isEmpty())
args << _("-e") << _("static_init_classes") << m_localJarsInitClasses;
}
QProcess adb;
adb.start(m_adb, args);
if (!adb.waitForStarted()) {
emit remoteProcessFinished(tr("Failed to start the activity. Reason: %1.").arg(adb.errorString()));
return;
}
if (!adb.waitForFinished(5000)) {
adb.terminate();
emit remoteProcessFinished(tr("Unable to start '%1'.").arg(m_packageName));
return;
}
if (m_useCppDebugger) {
// Handling ping.
for (int i = 0; ; ++i) {
QTemporaryFile tmp(_("pingpong"));
tmp.open();
tmp.close();
QProcess process;
process.start(m_adb, selector() << _("pull") << m_pingFile << tmp.fileName());
process.waitForFinished();
QFile res(tmp.fileName());
const bool doBreak = res.size();
res.remove();
if (doBreak)
break;
if (i == 20) {
emit remoteProcessFinished(tr("Unable to start '%1'.").arg(m_packageName));
return;
}
qDebug() << "WAITING FOR " << tmp.fileName();
QThread::msleep(500);
}
}
//.........这里部分代码省略.........
示例7: loadNewEditor
void MetaEditorSupportPlugin::loadNewEditor(QString const &directoryName
, QPair<QString, QString> const &metamodelNames
, QString const &commandFirst
, QString const &commandSecond
, QString const &extension
, QString const &prefix
, QString const &buildConfiguration
)
{
int const progressBarWidth = 240;
int const progressBarHeight = 20;
QString const metamodelName = metamodelNames.first;
QString const normalizerMetamodelName = metamodelNames.second;
if ((commandFirst == "") || (commandSecond == "") || (extension == "")) {
QMessageBox::warning(mMainWindowInterface->windowWidget(), tr("error"), tr("please, fill compiler settings"));
return;
}
QString const normalizeDirName = metamodelName.at(0).toUpper() + metamodelName.mid(1);
QProgressBar * const progress = new QProgressBar(mMainWindowInterface->windowWidget());
progress->show();
QApplication::processEvents();
QRect const screenRect = qApp->desktop()->availableGeometry();
progress->move(screenRect.width() / 2 - progressBarWidth / 2, screenRect.height() / 2 - progressBarHeight / 2);
progress->setFixedWidth(progressBarWidth);
progress->setFixedHeight(progressBarHeight);
progress->setRange(0, 100);
progress->setValue(5);
const bool stateOfLoad = mMainWindowInterface->pluginLoaded(normalizeDirName);
if (!mMainWindowInterface->unloadPlugin(normalizeDirName)) {
progress->close();
delete progress;
return;
}
progress->setValue(20);
QStringList qmakeArgs;
qmakeArgs.append("CONFIG+=" + buildConfiguration);
qmakeArgs.append(metamodelName + ".pro");
QProcess builder;
builder.setWorkingDirectory(directoryName);
const QStringList environment = QProcess::systemEnvironment();
builder.setEnvironment(environment);
builder.start(commandFirst, qmakeArgs);
if ((builder.waitForFinished()) && (builder.exitCode() == 0)) {
progress->setValue(60);
builder.start(commandSecond);
if (builder.waitForFinished(60000) && (builder.exitCode() == 0)) {
progress->setValue(80);
if (stateOfLoad) {
QMessageBox::warning(mMainWindowInterface->windowWidget()
, tr("Attention!"), tr("Please restart QReal."));
progress->close();
delete progress;
return;
} else if (buildConfiguration == "debug") {
if (mMainWindowInterface->loadPlugin(prefix + metamodelName
+ "-d"+ "." + extension, normalizeDirName))
{
progress->setValue(100);
}
} else {
if (mMainWindowInterface->loadPlugin(prefix + metamodelName + "." + extension, normalizeDirName)) {
progress->setValue(100);
}
}
}
}
if (progress->value() == 20) {
QMessageBox::warning(mMainWindowInterface->windowWidget(), tr("error"), tr("cannot qmake new editor"));
} else if (progress->value() == 60) {
QMessageBox::warning(mMainWindowInterface->windowWidget(), tr("error"), tr("cannot make new editor"));
}
progress->setValue(100);
progress->close();
delete progress;
}
示例8: analyzeFile
const AudioFileModel AnalyzeTask::analyzeFile(const QString &filePath, int *type)
{
*type = fileTypeNormal;
AudioFileModel audioFile(filePath);
QFile readTest(filePath);
if(!readTest.open(QIODevice::ReadOnly))
{
*type = fileTypeDenied;
return audioFile;
}
if(checkFile_CDDA(readTest))
{
*type = fileTypeCDDA;
return audioFile;
}
readTest.close();
bool skipNext = false;
QPair<quint32, quint32> id_val(UINT_MAX, UINT_MAX);
quint32 coverType = UINT_MAX;
QByteArray coverData;
QStringList params;
params << QString("--Inform=file://%1").arg(QDir::toNativeSeparators(m_templateFile));
params << QDir::toNativeSeparators(filePath);
QProcess process;
MUtils::init_process(process, QFileInfo(m_mediaInfoBin).absolutePath());
process.start(m_mediaInfoBin, params);
if(!process.waitForStarted())
{
qWarning("MediaInfo process failed to create!");
qWarning("Error message: \"%s\"\n", process.errorString().toLatin1().constData());
process.kill();
process.waitForFinished(-1);
return audioFile;
}
while(process.state() != QProcess::NotRunning)
{
if(*m_abortFlag)
{
process.kill();
qWarning("Process was aborted on user request!");
break;
}
if(!process.waitForReadyRead())
{
if(process.state() == QProcess::Running)
{
qWarning("MediaInfo time out. Killing process and skipping file!");
process.kill();
process.waitForFinished(-1);
return audioFile;
}
}
QByteArray data;
while(process.canReadLine())
{
QString line = QString::fromUtf8(process.readLine().constData()).simplified();
if(!line.isEmpty())
{
//qDebug("Line:%s", MUTILS_UTF8(line));
int index = line.indexOf('=');
if(index > 0)
{
QString key = line.left(index).trimmed();
QString val = line.mid(index+1).trimmed();
if(!key.isEmpty())
{
updateInfo(audioFile, skipNext, id_val, coverType, coverData, key, val);
}
}
}
}
}
if(audioFile.metaInfo().title().isEmpty())
{
QString baseName = QFileInfo(filePath).fileName();
int index = baseName.lastIndexOf(".");
if(index >= 0)
{
baseName = baseName.left(index);
}
baseName = baseName.replace("_", " ").simplified();
index = baseName.lastIndexOf(" - ");
if(index >= 0)
{
baseName = baseName.mid(index + 3).trimmed();
//.........这里部分代码省略.........
示例9: analyzeAvisynthFile
bool AnalyzeTask::analyzeAvisynthFile(const QString &filePath, AudioFileModel &info)
{
QProcess process;
MUtils::init_process(process, QFileInfo(m_avs2wavBin).absolutePath());
process.start(m_avs2wavBin, QStringList() << QDir::toNativeSeparators(filePath) << "?");
if(!process.waitForStarted())
{
qWarning("AVS2WAV process failed to create!");
qWarning("Error message: \"%s\"\n", process.errorString().toLatin1().constData());
process.kill();
process.waitForFinished(-1);
return false;
}
bool bInfoHeaderFound = false;
while(process.state() != QProcess::NotRunning)
{
if(*m_abortFlag)
{
process.kill();
qWarning("Process was aborted on user request!");
break;
}
if(!process.waitForReadyRead())
{
if(process.state() == QProcess::Running)
{
qWarning("AVS2WAV time out. Killing process and skipping file!");
process.kill();
process.waitForFinished(-1);
return false;
}
}
QByteArray data;
while(process.canReadLine())
{
QString line = QString::fromUtf8(process.readLine().constData()).simplified();
if(!line.isEmpty())
{
int index = line.indexOf(':');
if(index > 0)
{
QString key = line.left(index).trimmed();
QString val = line.mid(index+1).trimmed();
if(bInfoHeaderFound && !key.isEmpty() && !val.isEmpty())
{
if(key.compare("TotalSeconds", Qt::CaseInsensitive) == 0)
{
bool ok = false;
unsigned int duration = val.toUInt(&ok);
if(ok) info.techInfo().setDuration(duration);
}
if(key.compare("SamplesPerSec", Qt::CaseInsensitive) == 0)
{
bool ok = false;
unsigned int samplerate = val.toUInt(&ok);
if(ok) info.techInfo().setAudioSamplerate (samplerate);
}
if(key.compare("Channels", Qt::CaseInsensitive) == 0)
{
bool ok = false;
unsigned int channels = val.toUInt(&ok);
if(ok) info.techInfo().setAudioChannels(channels);
}
if(key.compare("BitsPerSample", Qt::CaseInsensitive) == 0)
{
bool ok = false;
unsigned int bitdepth = val.toUInt(&ok);
if(ok) info.techInfo().setAudioBitdepth(bitdepth);
}
}
}
else
{
if(line.contains("[Audio Info]", Qt::CaseInsensitive))
{
info.techInfo().setAudioType("Avisynth");
info.techInfo().setContainerType("Avisynth");
bInfoHeaderFound = true;
}
}
}
}
}
process.waitForFinished();
if(process.state() != QProcess::NotRunning)
{
process.kill();
process.waitForFinished(-1);
}
//Check exit code
//.........这里部分代码省略.........
示例10: main_
ExitCodes main_(int, const char**) override
{
String tmp_dir = QDir::toNativeSeparators((File::getTempDirectory() + "/" + File::getUniqueName() + "/").toQString()); // body for the tmp files
{
QDir d;
d.mkpath(tmp_dir.toQString());
}
String logfile(getStringOption_("log"));
String myrimatch_executable(getStringOption_("myrimatch_executable"));
//-------------------------------------------------------------
// get version of MyriMatch
//-------------------------------------------------------------
QProcess qp;
String myrimatch_version;
MyriMatchVersion myrimatch_version_i;
// we invoke myrimatch w/o arguments. that yields a return code != 0. but
// there is no other way for version 2.1 to get the version number
qp.start(myrimatch_executable.toQString(), QStringList(), QIODevice::ReadOnly); // does automatic escaping etc...
qp.waitForFinished();
String output(QString(qp.readAllStandardOutput()));
vector<String> lines;
vector<String> version_split;
output.split('\n', lines);
// the version number is expected to be in the second line
if (lines.size() < 2)
{
writeLog_("Warning: MyriMatch version output (" + output + ") not formatted as expected!");
return EXTERNAL_PROGRAM_ERROR;
}
// the version is expected to be something like:
// MyriMatch 2.1.111 (2011-12-27)
lines[1].split(' ', version_split);
if (version_split.size() == 3 && getVersion_(version_split[1], myrimatch_version_i))
{
myrimatch_version = version_split[1].removeWhitespaces();
writeDebug_("Setting MyriMatch version to " + myrimatch_version, 1);
}
else
{
writeLog_("Warning: MyriMatch version output (" + output + ") not formatted as expected!");
return EXTERNAL_PROGRAM_ERROR;
}
if (! ( (myrimatch_version_i.myrimatch_major == 2) && // major must be 2
(myrimatch_version_i.myrimatch_minor == 1 || myrimatch_version_i.myrimatch_minor == 2) // minor .1 or .2
))
{
writeLog_("Warning: unsupported MyriMatch version (" + myrimatch_version + "). Tested only for MyriMatch 2.1.x and 2.2.x."
"\nIf you encounter parameter errors, you can try the flag 'ignoreConfigErrors', but be aware that MyriMatch might be misconfigured.");
}
//-------------------------------------------------------------
// parsing parameters
//-------------------------------------------------------------
String inputfile_name = File::absolutePath(getStringOption_("in"));
String outputfile_name = getStringOption_("out");
String db_name = File::absolutePath(String(getStringOption_("database")));
// building parameter String
StringList parameters;
if (getFlag_("ignoreConfigErrors")) parameters << "-ignoreConfigErrors";
// Common Identification engine options
StringList static_mod_list;
StringList dynamic_mod_list;
translateModifications(static_mod_list, dynamic_mod_list);
if (!static_mod_list.empty())
parameters << "-StaticMods" << ListUtils::concatenate(static_mod_list, " ");
if (!dynamic_mod_list.empty())
parameters << "-DynamicMods" << ListUtils::concatenate(dynamic_mod_list, " ");
parameters << "-ProteinDatabase" << File::absolutePath(db_name);
if (getFlag_("precursor_mass_tolerance_avg"))
{
parameters << "-AvgPrecursorMzTolerance";
}
else
{
parameters << "-MonoPrecursorMzTolerance";
}
String precursor_mass_tolerance_unit = getStringOption_("precursor_mass_tolerance_unit") == "Da" ? " m/z" : " ppm";
parameters << String(getDoubleOption_("precursor_mass_tolerance")) + precursor_mass_tolerance_unit;
String fragment_mass_tolerance_unit = getStringOption_("fragment_mass_tolerance_unit");
if (fragment_mass_tolerance_unit == "Da")
{
fragment_mass_tolerance_unit = "m/z";
}
parameters << "-FragmentMzTolerance" << String(getDoubleOption_("fragment_mass_tolerance")) + " " + fragment_mass_tolerance_unit;
StringList slf = getStringList_("SpectrumListFilters");
//.........这里部分代码省略.........
示例11: QString
bool CommandLineExporter::executeCommand
(
const QString& command,
const QString& inputFilePath,
const QString& textInput,
const QString& outputFilePath,
QString& stdoutOutput,
QString& stderrOutput
)
{
QProcess process;
process.setReadChannel(QProcess::StandardOutput);
QString expandedCommand = command + QString(" ");
if (!outputFilePath.isNull() && !outputFilePath.isEmpty())
{
// Redirect stdout to the output file path if the path variable wasn't
// set in the command string.
//
if (!expandedCommand.contains(OUTPUT_FILE_PATH_VAR))
{
process.setStandardOutputFile(outputFilePath);
}
else
{
// Surround file path with quotes in case there are spaces in the
// path.
//
QString outputFilePathWithQuotes = QString('\"') +
outputFilePath + '\"';
expandedCommand.replace(OUTPUT_FILE_PATH_VAR, outputFilePathWithQuotes);
}
}
if
(
this->getSmartTypographyEnabled() &&
!this->smartTypographyOnArgument.isNull()
)
{
expandedCommand.replace
(
SMART_TYPOGRAPHY_ARG,
smartTypographyOnArgument
);
}
else if
(
!this->getSmartTypographyEnabled() &&
!this->smartTypographyOffArgument.isNull()
)
{
expandedCommand.replace
(
SMART_TYPOGRAPHY_ARG,
smartTypographyOffArgument
);
}
if (!inputFilePath.isNull() && !inputFilePath.isEmpty())
{
process.setWorkingDirectory(QFileInfo(inputFilePath).dir().path());
}
process.start(expandedCommand);
if (!process.waitForStarted())
{
return false;
}
else
{
if (!textInput.isNull() && !textInput.isEmpty())
{
process.write(textInput.toUtf8());
process.closeWriteChannel();
}
if (!process.waitForFinished())
{
return false;
}
else
{
stdoutOutput = QString::fromUtf8(process.readAllStandardOutput().data());
stderrOutput = QString::fromUtf8(process.readAllStandardError().data());
}
}
return true;
}
示例12: init
void StelLogger::init(const QString& logFilePath)
{
logFile.setFileName(logFilePath);
if (logFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text | QIODevice::Unbuffered))
qInstallMessageHandler(StelLogger::debugLogHandler);
// write timestamp
writeLog(QString("%1").arg(QDateTime::currentDateTime().toString(Qt::ISODate)));
// write info about operating system
writeLog(StelUtils::getOperatingSystemInfo());
// write compiler version
#if defined __GNUC__ && !defined __clang__
#ifdef __MINGW32__
#define COMPILER "MinGW GCC"
#else
#define COMPILER "GCC"
#endif
writeLog(QString("Compiled using %1 %2.%3.%4").arg(COMPILER).arg(__GNUC__).arg(__GNUC_MINOR__).arg(__GNUC_PATCHLEVEL__));
#elif defined __clang__
writeLog(QString("Compiled using %1 %2.%3.%4").arg("Clang").arg(__clang_major__).arg(__clang_minor__).arg(__clang_patchlevel__));
#elif defined _MSC_VER
writeLog(QString("Compiled using %1").arg(getMsvcVersionString(_MSC_VER)));
#else
writeLog("Unknown compiler");
#endif
// write Qt version
writeLog(QString("Qt runtime version: %1").arg(qVersion()));
writeLog(QString("Qt compilation version: %1").arg(QT_VERSION_STR));
// write addressing mode
#if defined(__LP64__) || defined(_WIN64)
writeLog("Addressing mode: 64-bit");
#else
writeLog("Addressing mode: 32-bit");
#endif
// write memory and CPU info
#ifdef Q_OS_LINUX
#ifndef BUILD_FOR_MAEMO
QFile infoFile("/proc/meminfo");
if(!infoFile.open(QIODevice::ReadOnly | QIODevice::Text))
writeLog("Could not get memory info.");
else
{
while(!infoFile.peek(1).isEmpty())
{
QString line = infoFile.readLine();
line.chop(1);
if (line.startsWith("Mem") || line.startsWith("SwapTotal"))
writeLog(line);
}
infoFile.close();
}
infoFile.setFileName("/proc/cpuinfo");
if (!infoFile.open(QIODevice::ReadOnly | QIODevice::Text))
writeLog("Could not get CPU info.");
else
{
while(!infoFile.peek(1).isEmpty())
{
QString line = infoFile.readLine();
line.chop(1);
if(line.startsWith("model name") || line.startsWith("cpu MHz"))
writeLog(line);
}
infoFile.close();
}
QProcess lspci;
lspci.start("lspci -v", QIODevice::ReadOnly);
lspci.waitForFinished(300);
const QString pciData(lspci.readAll());
QStringList pciLines = pciData.split('\n', QString::SkipEmptyParts);
for (int i = 0; i<pciLines.size(); i++)
{
if(pciLines.at(i).contains("VGA compatible controller"))
{
writeLog(pciLines.at(i));
i++;
while(i < pciLines.size() && pciLines.at(i).startsWith('\t'))
{
if(pciLines.at(i).contains("Kernel driver in use"))
writeLog(pciLines.at(i).trimmed());
else if(pciLines.at(i).contains("Kernel modules"))
writeLog(pciLines.at(i).trimmed());
i++;
}
}
}
#endif
// Aargh Windows API
#elif defined Q_OS_WIN
// Hopefully doesn't throw a linker error on earlier systems. Not like
// I'm gonna test it or anything.
//.........这里部分代码省略.........
示例13: start_pserve
/**************************************************************************************************
* inicia o pserve para receber as imagens e plota na ui
**************************************************************************************************/
void MainWindow::start_pserve()
{
contagem=0;
pixeis_lidos=0;
QProcess *myProcess = new QProcess;
QStringList arguments_pserve;
process_pserve = Current_Path+"/pserve";
arguments_pserve<<Count_L<<NImage<<Save_Path;
myProcess->setProcessChannelMode(QProcess::MergedChannels);
myProcess->start(process_pserve,arguments_pserve);
myProcess->waitForStarted();
QPixmap pixmap;
float contagem_anterior;
/**************************************************************************************************
* le uma imagem
**************************************************************************************************/
if(NImage.toInt()==1)
{
if(Count_L.toInt()==0) // 1 bit
{
contagem=0;
pixeis_lidos=0;
myProcess->waitForFinished((Time.toFloat()*1000)+100);
QImage image(256,256,QImage::Format_Indexed8);
if(image.load(Save_Path+"1.ppm","pbm")==true)
{
image.invertPixels();
for(int a=0;a<=255;a++)
{
for(int b=0;b<=255;b++)
{
contagem=contagem+(1-image.pixelIndex(b,a));
pixeis_lidos=contagem;
}
}
}
else
{
image.fill(Qt::black);
ui->textBrowser->append("Error Reading Image!!!");
}
pixmap = QPixmap::fromImage(image,Qt::ColorOnly);
}
else if(Count_L.toInt()==1) // 12 bits
{
contagem=0;
pixeis_lidos=0;
myProcess->waitForFinished((Time.toFloat()*1000)+1000);
QImage image(256,256,QImage::Format_RGB16);
QByteArray teste;
QFile filestr(Save_Path+"1.ppm");
if(filestr.open(QIODevice::ReadOnly)==true)
{
teste=filestr.readAll();
QString colorstr(teste);
QStringList colors = colorstr.split(QRegExp("\\s+"));
colors.removeLast();
colors.removeFirst();
colors.removeFirst();
colors.removeFirst();
colors.removeFirst();
QVector<QRgb> colortable;
Lookup_Tables ctable;
colortable=ctable.colorPalete1280();
image.setColorTable(colortable);
int cont=0;
for(int a=0;a<=255;a++)
{
for(int b=0;b<=255;b++)
{
if(qCeil(colors.at(cont).toInt()/3.2)>=1280)
{
image.setPixel(b,a, image.colorTable().at(1279));
}
else
{
image.setPixel(b,a, image.colorTable().at(qCeil(colors.at(cont).toUInt()/3.2)));
}
contagem_anterior=contagem;
contagem=contagem+colors.at(cont).toFloat();
cont++;
if(contagem_anterior!=contagem)
{
pixeis_lidos++;
}
}
}
}
else
{
image.fill(Qt::black);
ui->textBrowser->append("Error Reading Image!!!");
}
pixmap = QPixmap::fromImage(image,Qt::ColorOnly);
}
else if(Count_L.toInt()==2) // 6 bits
{
//.........这里部分代码省略.........
示例14: generateMobileApplication
TemplateCore::GenerationResult FlashCardCore::generateMobileApplication(const QString &input_apk_file, QString &output_file) {
emit generationProgress(5, tr("Preparing workspace..."));
qApp->templateManager()->generator()->cleanWorkspace();
emit generationProgress(10, tr("Extracting raw data from editor..."));
// We need data which will be imported into apk/zip file.
QString quiz_data = editor()->generateBundleData();
if (quiz_data.isEmpty()) {
// No date received, this is big problem.
return BundleProblem;
}
QString temp_folder = qApp->templateManager()->tempDirectory();
QDir temp_directory(temp_folder);
QString base_folder = temp_folder + "/" + APP_LOW_NAME;
QDir base_directory(base_folder);
// Preparation of target bundle file
emit generationProgress(20, tr("Creating base temporary folder..."));
temp_directory.mkdir(APP_LOW_NAME);
base_directory.mkdir("assets");
QFile index_file(base_folder + "/assets/flash_content.xml");
index_file.open(QIODevice::WriteOnly | QIODevice::Text);
emit generationProgress(30, tr("Writting info data into file..."));
QTextStream out(&index_file);
out << quiz_data;
out.flush();
index_file.close();
emit generationProgress(40, tr("Copying template apk file..."));
// Copying of target apk file.
QString new_apk_name = input_apk_file;
if (!QFile::copy(APP_TEMPLATES_PATH + "/" + entryPoint()->baseFolder() + "/" + entryPoint()->mobileApplicationApkFile(),
base_folder + "/" + new_apk_name)) {
qApp->templateManager()->generator()->cleanWorkspace();
return CopyProblem;
}
emit generationProgress(60, tr("Inserting data into apk file..."));
// Inserting bundle file into apk file.
QProcess zip;
zip.setWorkingDirectory(base_folder);
zip.start(qApp->zipUtilityPath(), QStringList() << "-m" << "-r" << new_apk_name << "assets");
zip.waitForFinished();
if (zip.exitCode() != EXIT_STATUS_ZIP_NORMAL) {
// Error during inserting quiz data via zip.
qApp->templateManager()->generator()->cleanWorkspace();
return ZipProblem;
}
emit generationProgress(70, tr("Signing apk file..."));
// Signing and renaming target file.
QString pem_certificate = QDir::toNativeSeparators(APP_CERT_PATH + "/" + CERTIFICATE_PATH);
QString pk_certificate = QDir::toNativeSeparators(APP_CERT_PATH + "/" + KEY_PATH);
QProcess signapk;
signapk.setWorkingDirectory(base_folder);
signapk.start(qApp->javaInterpreterPath(), QStringList() << "-jar" << qApp->signApkUtlityPath() <<
pem_certificate << pk_certificate << new_apk_name <<
QDir::toNativeSeparators(new_apk_name + ".new"));
signapk.waitForFinished();
if (signapk.exitCode() != EXIT_STATUS_SIGNAPK_WORKING) {
qApp->templateManager()->generator()->cleanWorkspace();
return SignApkProblem;
}
emit generationProgress(90, tr("Copying final apk file to output directory..."));
// Now, our file is created. We need to move it to target directory.
if (!IOFactory::copyFile(base_folder + "/" + new_apk_name + ".new",
qApp->templateManager()->outputDirectory() + "/" + new_apk_name)) {
qApp->templateManager()->generator()->cleanWorkspace();
return CopyProblem;
}
output_file = QDir(qApp->templateManager()->outputDirectory()).filePath(new_apk_name);
// Removing temporary files and exit.
qApp->templateManager()->generator()->cleanWorkspace();
return Success;
}
示例15: readUDP
void UdpManager::readUDP()
{
QByteArray Temp;
Temp.resize(socket->pendingDatagramSize());
QHostAddress sender;
quint16 senderPort;
socket->readDatagram(Temp.data(),Temp.size(),&sender,&senderPort);
QString debugMessage = "Got \"" + QString(Temp.data()) + "\" from " + sender.toString() + ":"+ QString::number(senderPort) + " (UDP)";
emit updateClientGUIConsole(debugMessage);
QString compareString = "BLENDER";
QString message;
if(Temp.data() == compareString)
{
if (workerIsBusy)
message = "BLENDER0"; //is busy
else{
if (isGPUWorker)
message = "BLENDER2"; // is available GPU-Worker
else
message = "BLENDER1"; // is available CPU-Worker
}
writeUDP(message, sender);
}
else if( QString(Temp.data()).at(0) == '#' && !workerIsBusy )
{
message = "";
QString filepathToBlend = QDir::currentPath() + "/awesome.blend";
QByteArray fileData;
QFile file( filepathToBlend ); //e.g.: /.../build/awesome.blend
if( file.open(QIODevice::ReadOnly) )
{
fileData = file.readAll();
file.close();
//Generate MD5 Hash
QByteArray hashData = QCryptographicHash::hash(fileData, QCryptographicHash::Md5);
file_hash = hashData.toHex();
qDebug() << "Hex-Hash: " << hashData.toHex();
}
else
{
//Error
file_hash = "Th15I5Th3DummymD5HasH0fGSORF.0RG";
}
//Send UDP Response
writeUDP( "#" + file_hash, sender );
if(file_hash==QString(Temp.data()).remove('#') )
{
emit setFileCached(true);
}
else
{
emit setFileCached(false);
}
}
else if( QString(Temp.data()).startsWith("killall"))
{
qDebug()<<"Bye Bye Blender";
QProcess *myProcess = new QProcess(this);
myProcess->start("killall blender");
myProcess->waitForFinished();
}
emit setServerAddress(sender);
}