本文整理汇总了C++中QProcessEnvironment::value方法的典型用法代码示例。如果您正苦于以下问题:C++ QProcessEnvironment::value方法的具体用法?C++ QProcessEnvironment::value怎么用?C++ QProcessEnvironment::value使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QProcessEnvironment
的用法示例。
在下文中一共展示了QProcessEnvironment::value方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
//.........这里部分代码省略.........
// the region is read by a module even if waitForStarted() is used
// -> necessary to pass region as environment variable
// but the feature is available in GRASS 6.1 only since 23.3.2006
if ( resetRegion )
{
QString reg = QgsGrass::regionString( &tempWindow );
QgsDebugMsg( "reg: " + reg );
environment.insert( QStringLiteral( "GRASS_REGION" ), reg );
}
if ( mDirect )
{
QStringList variables;
setDirectLibraryPath( environment );
#ifdef Q_OS_WIN
variables << "PATH";
#elif defined(Q_OS_MAC)
variables << "DYLD_LIBRARY_PATH";
#else
variables << QStringLiteral( "LD_LIBRARY_PATH" );
#endif
environment.insert( QStringLiteral( "QGIS_PREFIX_PATH" ), QgsApplication::prefixPath() );
if ( crs.isValid() ) // it should always be valid
{
environment.insert( QStringLiteral( "QGIS_GRASS_CRS" ), crs.toProj4() );
}
// Suppress debug output
environment.insert( QStringLiteral( "QGIS_DEBUG" ), QStringLiteral( "-1" ) );
// Print some important variables
variables << QStringLiteral( "QGIS_PREFIX_PATH" ) << QStringLiteral( "QGIS_GRASS_CRS" ) << QStringLiteral( "GRASS_REGION" );
Q_FOREACH ( const QString &v, variables )
{
mOutputTextBrowser->append( v + "=" + environment.value( v ) + "<BR>" );
}
}
QString commandHtml = mXName + " " + argumentsHtml.join( QStringLiteral( " " ) );
QgsDebugMsg( "command: " + commandHtml );
commandHtml.replace( QLatin1String( "&" ), QLatin1String( "&" ) );
commandHtml.replace( QLatin1String( "<" ), QLatin1String( "<" ) );
commandHtml.replace( QLatin1String( ">" ), QLatin1String( ">" ) );
mOutputTextBrowser->append( "<B>" + commandHtml + "</B>" );
// I was not able to get scripts working on Windows
// via QProcess and sh.exe (MinGW). g.parser runs wellQProcessEnvironment::systemE
// and it sets parameters correctly as environment variables
// but it fails (without error) to re-run the script with
// execlp(). And I could not figure out why it fails.
// Because of this problem we simulate here what g.parser
// normally does and that way we can avoid it.
QStringList execArguments = QgsGrassModule::execArguments( mXName );
if ( execArguments.size() == 0 )
{
QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot find module %1" ).arg( mXName ) );
return;
}
#ifdef Q_OS_WIN
// we already know it exists from execArguments()
QString exe = QgsGrass::findModule( mXName );
QFileInfo fi( exe );
if ( !fi.isExecutable() )
示例2: main
int main(int argc, char** argv)
{
QCoreApplication app(argc, argv);
const QStringList args = app.arguments();
QString arg_port;
QString arg_server;
QString arg_xmlFile;
bool arg_crash = false;
bool arg_garbage = false;
uint arg_wait = 0;
const QProcessEnvironment sysEnv = QProcessEnvironment::systemEnvironment();
arg_xmlFile = sysEnv.value("QCIT_INPUT_FILE");
for (int i = 1; i < args.size(); ++i) {
const QString& arg = args.at(i);
if (arg.startsWith(QLatin1String("--xml-socket="))) {
arg_server = arg.mid(13, arg.indexOf(':') - 13);
arg_port = arg.mid(13 + arg_server.length() + 1);
} else if (args.size() > i + 1
&& (args.at(i) == QLatin1String("-i")
|| args.at(i) == QLatin1String("--xml-input"))) {
arg_xmlFile = args.at(i+1);
++i;
} else if (arg == QLatin1String("-c") || arg == QLatin1String("--crash")) {
arg_crash = true;
} else if (arg == QLatin1String("-g") || arg == QLatin1String("--garbage")) {
arg_garbage = true;
} else if (args.size() > i + 1 && (arg == QLatin1String("-w") || arg == QLatin1String("--wait"))) {
bool ok;
arg_wait = args.at(i+1).toUInt(&ok);
if (!ok) {
qerr << "ERROR: invalid wait time given" << args.at(i+1) << endl;
usage(qerr);
return 4;
}
} else if (args.at(i) == QLatin1String("--help") || args.at(i) == QLatin1String("-h")) {
usage(qout);
return 0;
}
}
if (arg_xmlFile.isEmpty()) {
qerr << "ERROR: no XML input file given" << endl;
usage(qerr);
return 1;
}
if (arg_server.isEmpty()) {
qerr << "ERROR: no server given" << endl;
usage(qerr);
return 2;
}
if (arg_port.isEmpty()) {
qerr << "ERROR: no port given" << endl;
usage(qerr);
return 3;
}
QFile xmlFile(arg_xmlFile);
if (!xmlFile.exists() || !xmlFile.open(QIODevice::ReadOnly)) {
qerr << "ERROR: invalid XML file" << endl;
usage(qerr);
return 10;
}
bool ok = false;
quint16 port = arg_port.toUInt(&ok);
if (!ok) {
qerr << "ERROR: invalid port" << endl;
usage(qerr);
return 30;
}
QTcpSocket socket;
socket.connectToHost(arg_server, port, QIODevice::WriteOnly);
if (!socket.isOpen()) {
qerr << "ERROR: could not open socket to server:" << arg_server << ":" << port << endl;
usage(qerr);
return 20;
}
if (!socket.waitForConnected()) {
qerr << "ERROR: could not connect to socket: " << socket.errorString() << endl;
return 21;
}
OutputGenerator generator(&socket, &xmlFile);
QObject::connect(&generator, SIGNAL(finished()), &app, SLOT(quit()));
generator.setCrashRandomly(arg_crash);
generator.setOutputGarbage(arg_garbage);
generator.setWait(arg_wait);
return app.exec();
}
示例3: startSimulator
//.........这里部分代码省略.........
Stream << *it << '\n';
}
}
Stream << '\n';
isVerilog = ((Schematic*)DocWidget)->isVerilog;
SimTime = ((Schematic*)DocWidget)->createNetlist(Stream, SimPorts);
if(SimTime.length()>0&&SimTime.at(0) == '\xA7') {
NetlistFile.close();
ErrText->insert(SimTime.mid(1));
FinishSimulation(-1);
return;
}
if (isVerilog) {
Stream << "\n"
<< " initial begin\n"
<< " $dumpfile(\"digi.vcd\");\n"
<< " $dumpvars();\n"
<< " #" << SimTime << " $finish;\n"
<< " end\n\n"
<< "endmodule // TestBench\n";
}
NetlistFile.close();
ProgText->insert(tr("done.")+"\n"); // of "creating netlist...
if(SimPorts < 0) {
if((SimOpt = findOptimization((Schematic*)DocWidget))) {
((Optimize_Sim*)SimOpt)->createASCOnetlist();
Program = QucsSettings.AscoDir + "asco"+ executablePostfix;
Arguments << "-qucs" << QucsHomeDir.filePath("asco_netlist.txt")
<< "-o" << "asco_out";
}
else {
Program = QucsSettings.BinDir + "qucsator" + executablePostfix;
Arguments << "-b" << "-g" << "-i"
<< QucsHomeDir.filePath("netlist.txt")
<< "-o" << DataSet;
}
} else {
if (isVerilog) {
Program = pathName(QucsSettings.BinDir + QucsVeri);
Arguments << "netlist.txt" << DataSet
<< SimTime << pathName(SimPath)
<< pathName(QucsSettings.BinDir) << "-c";
} else {
#ifdef __MINGW32__
Program = pathName(QucsSettings.BinDir + QucsDigi);
Arguments << "netlist.txt" << DataSet << SimTime << pathName(SimPath)
<< pathName(QucsSettings.BinDir) << "-Wl" << "-c";
#else
Program = pathName(QucsSettings.BinDir + QucsDigi);
Arguments << "netlist.txt" << DataSet << SimTime << pathName(SimPath)
<< pathName(QucsSettings.BinDir) << "-Wall" << "-c";
#endif
}
}
}
disconnect(&SimProcess, 0, 0, 0);
connect(&SimProcess, SIGNAL(readyReadStandardError()), SLOT(slotDisplayErr()));
connect(&SimProcess, SIGNAL(readyReadStandardOutput()), SLOT(slotDisplayMsg()));
connect(&SimProcess, SIGNAL(finished(int)), SLOT(slotSimEnded(int)));
#ifdef SPEEDUP_PROGRESSBAR
waitForUpdate = false;
#endif
wasLF = false;
ProgressText = "";
#ifdef __MINGW32__
QString sep(";"); // path separator
#else
QString sep(":");
#endif
// append process PATH
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PATH", env.value("PATH") + sep + QucsSettings.BinDir );
SimProcess.setProcessEnvironment(env);
QFile file(Program);
if ( !file.exists() ){
ErrText->insert(tr("ERROR: Program not found: %1").arg(Program));
FinishSimulation(-1);
return;
}
else
file.close();
SimProcess.start(Program, Arguments); // launch the program
if(!SimProcess.Running) {
ErrText->insert(tr("ERROR: Cannot start simulator!"));
FinishSimulation(-1);
return;
}
}
示例4: startXSession
bool XProcess::startXSession(){
//Check that the necessary info to start the session is available
if( xuser.isEmpty() || xcmd.isEmpty() || xhome.isEmpty() || xde.isEmpty() ){
emit InvalidLogin(); //Make sure the GUI knows that it was a failure
return FALSE;
}
//Backend::log("Starting up Desktop environment ("+xcmd+") as user ("+xuser+")");
//Check for PAM username/password validity
if( !pam_checkPW() ){ emit InvalidLogin(); pam_shutdown(); return FALSE; }
//Save the current user/desktop as the last login
Backend::saveLoginInfo(Backend::getDisplayNameFromUsername(xuser),xde);
// Get the users uid/gid information
struct passwd *pw;
int uid;
char *ok;
if (!(pw = getpwnam(xuser.toLatin1()))) {
uid = strtol(xuser.toLatin1(), &ok, 10);
if (!(pw = getpwuid(uid))) {
emit InvalidLogin(); //Make sure the GUI knows that it was a failure
return FALSE;
}
}
// Get the environment before we drop priv
QProcessEnvironment environ = QProcessEnvironment::systemEnvironment(); //current environment
QWidget *wid = new QWidget();
if (setgid(pw->pw_gid) < 0) {
qDebug() << "setgid() failed!";
emit InvalidLogin(); //Make sure the GUI knows that it was a failure
return FALSE;
}
// Setup our other groups
if (initgroups(xuser.toLatin1(), pw->pw_gid) < 0) {
qDebug() << "initgroups() failed!";
emit InvalidLogin(); //Make sure the GUI knows that it was a failure
setgid(0);
return FALSE;
}
// Lets drop to user privs
if (setuid(pw->pw_uid) < 0) {
qDebug() << "setuid() failed!";
emit InvalidLogin(); //Make sure the GUI knows that it was a failure
return FALSE;
}
//Startup the PAM session
if( !pam_startSession() ){ pam_shutdown(); return FALSE; }
pam_session_open = TRUE; //flag that pam has an open session
QString cmd;
// Configure the DE startup command
// - Setup to run the user's <home-dir>/.xprofile startup script
if(QFile::exists(xhome+"/.xprofile")){
//cmd.append(". "+xhome+"/.xprofile; "); //make sure to start it in parallel
}
// - Add the DE startup command to the end
//cmd.append("dbus-launch --exit-with-session "+xcmd);
cmd.append(xcmd);
//cmd.append("; kill -l KILL"); //to clean up the session afterwards
// Get the current locale code
QLocale mylocale;
QString langCode = mylocale.name();
//Backend::log("Startup command: "+cmd);
// Setup the process environment
// Setup any specialized environment variables
// USER, HOME, and SHELL are set by the "su" login
environ.insert("LOGNAME",xuser); //Login name
environ.insert("USERNAME",xuser); // Username
environ.insert("PATH",environ.value("PATH")+":"+xhome+"/bin"); // Append the user's home dir to the path
if( langCode.toLower() == "c" ){} // do nothing extra to it
else if(!environ.value("MM_CHARSET").isEmpty() ){ langCode.append( "."+environ.value("MM_CHARSET") ); }
else{ langCode.append(".UTF-8"); }
environ.insert("LANG",langCode); //Set the proper localized language
environ.insert("MAIL","/var/mail/"+xuser); //Set the mail variable
environ.insert("GROUP",xuser); //Set the proper group id
environ.insert("SHLVL","0"); //Set the proper shell level
environ.insert("HOME",xhome); //Set the users home directory
this->setProcessEnvironment(environ);
this->setWorkingDirectory(xhome); //set the current directory to the user's home directory
//Log the DE startup outputs as well
this->setStandardOutputFile(xhome+"/.pcdm-startup.log",QIODevice::Truncate);
this->setStandardErrorFile(xhome+"/.pcdm-startup.err",QIODevice::Truncate);
// Startup the process
QMessageBox::warning(wid, "My Application", "CMD: " + cmd, QMessageBox::Ok, QMessageBox::Ok);
this->start(cmd);
return TRUE;
}
示例5: init
void StelFileMgr::init()
{
// Set the userDir member.
#ifdef Q_OS_WIN
QString winApiPath = getWin32SpecialDirPath(CSIDL_APPDATA);
if (!winApiPath.isEmpty())
{
userDir = winApiPath + "\\Stellarium";
}
#elif defined(Q_OS_MAC)
userDir = QDir::homePath() + "/Library/Application Support/Stellarium";
#else
userDir = QDir::homePath() + "/.stellarium";
#endif
#if QT_VERSION >= 0x050A00
if (qEnvironmentVariableIsSet("STEL_USERDIR"))
{
userDir=qEnvironmentVariable("STEL_USERDIR");
}
#else
QByteArray userDirCand=qgetenv("STEL_USERDIR");
if (userDirCand.length()>0)
{
userDir=QString::fromLocal8Bit(userDirCand);
}
#endif
if (!QFile(userDir).exists())
{
qWarning() << "User config directory does not exist: " << QDir::toNativeSeparators(userDir);
}
try
{
makeSureDirExistsAndIsWritable(userDir);
}
catch (std::runtime_error &e)
{
qFatal("Error: cannot create user config directory: %s", e.what());
}
// OK, now we have the userDir set, add it to the search path
fileLocations.append(userDir);
// Determine install data directory location
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString envRoot = env.value("STELLARIUM_DATA_ROOT", ".");
if (QFileInfo(envRoot + QDir::separator() + QString(CHECK_FILE)).exists())
{
installDir = envRoot;
}
else
{
#if defined(Q_OS_MAC)
QString relativePath = "/../Resources";
if (QCoreApplication::applicationDirPath().contains("src")) {
relativePath = "/../..";
}
QFileInfo MacOSdir(QCoreApplication::applicationDirPath() + relativePath);
// These two lines are used to see if the Qt bug still exists.
// The output from C: should simply be the parent of what is show for B:
// qDebug() << "B: " << MacOSdir.absolutePath();
// qDebug() << "C: " << MacOSdir.dir().absolutePath();
QDir ResourcesDir(MacOSdir.absolutePath());
if (!QCoreApplication::applicationDirPath().contains("src")) {
ResourcesDir.cd(QString("Resources"));
}
QFileInfo installLocation(ResourcesDir.absolutePath());
QFileInfo checkFile(installLocation.filePath() + QDir::separator() + QString(CHECK_FILE));
#elif defined(Q_OS_WIN)
QFileInfo installLocation(QCoreApplication::applicationDirPath());
QFileInfo checkFile(installLocation.filePath() + QDir::separator() + QString(CHECK_FILE));
#else
// Linux, BSD, Solaris etc.
// We use the value from the config.h filesystem
QFileInfo installLocation(QFile::decodeName(INSTALL_DATADIR));
QFileInfo checkFile(QFile::decodeName(INSTALL_DATADIR "/" CHECK_FILE));
#endif
#ifdef DEBUG
if (!checkFile.exists())
{ // for DEBUG use sources location
QString debugDataPath = INSTALL_DATADIR_FOR_DEBUG;
checkFile = QFileInfo(debugDataPath + QDir::separator() + CHECK_FILE);
installLocation = QFileInfo(debugDataPath);
}
#endif
if (checkFile.exists())
{
installDir = installLocation.filePath();
}
else
{
qWarning() << "WARNING StelFileMgr::StelFileMgr: could not find install location:"
<< QDir::toNativeSeparators(installLocation.filePath())
<< " (we checked for "
<< QDir::toNativeSeparators(checkFile.filePath()) << ").";
//.........这里部分代码省略.........
示例6: launch
bool PreloadInjector::launch(const QStringList &programAndArgs,
const QString &probeDll,
const QString &probeFunc)
{
Q_UNUSED(probeFunc);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
#ifdef Q_OS_MAC
env.insert("DYLD_FORCE_FLAT_NAMESPACE", QLatin1String("1"));
env.insert("DYLD_INSERT_LIBRARIES", probeDll);
env.insert("GAMMARAY_UNSET_DYLD", "1");
#else
env.insert("LD_PRELOAD", probeDll);
env.insert("GAMMARAY_UNSET_PRELOAD", "1");
PreloadCheck check;
bool success = check.test("qt_startup_hook");
if (!success) {
mExitCode = 1;
mErrorString = check.errorString();
return false;
}
#endif
InteractiveProcess proc;
proc.setProcessEnvironment(env);
proc.setProcessChannelMode(QProcess::ForwardedChannels);
QStringList args = programAndArgs;
if (env.value("GAMMARAY_GDB").toInt()) {
QStringList newArgs;
newArgs << "gdb";
#ifndef Q_OS_MAC
newArgs << "--eval-command" << "run";
#endif
newArgs << "--args";
newArgs += args;
args = newArgs;
} else if (env.value("GAMMARAY_MEMCHECK").toInt()) {
QStringList newArgs;
newArgs << "valgrind"
<< "--tool=memcheck"
<< "--track-origins=yes"
<< "--num-callers=25"
<< "--leak-check=full";
newArgs += args;
args = newArgs;
} else if (env.value("GAMMARAY_HELGRIND").toInt()) {
QStringList newArgs;
newArgs << "valgrind" << "--tool=helgrind";
newArgs += args;
args = newArgs;
}
const QString program = args.takeFirst();
proc.start(program, args);
proc.waitForFinished(-1);
mExitCode = proc.exitCode();
mProcessError = proc.error();
mExitStatus = proc.exitStatus();
mErrorString = proc.errorString();
return mExitCode == EXIT_SUCCESS && mExitStatus == QProcess::NormalExit
&& mProcessError == QProcess::UnknownError;
}
示例7: Initialize
void Mapviz::Initialize()
{
if (!initialized_)
{
if (is_standalone_)
{
// If this Mapviz is running as a standalone application, it needs to init
// ROS and start spinning. If it's running as an rqt plugin, rqt will
// take care of that.
ros::init(argc_, argv_, "mapviz", ros::init_options::AnonymousName);
spin_timer_.start(30);
connect(&spin_timer_, SIGNAL(timeout()), this, SLOT(SpinOnce()));
}
node_ = new ros::NodeHandle("~");
// Create a sub-menu that lists all available Image Transports
image_transport::ImageTransport it(*node_);
std::vector<std::string> transports = it.getLoadableTransports();
QActionGroup* group = new QActionGroup(image_transport_menu_);
for (std::vector<std::string>::iterator iter = transports.begin(); iter != transports.end(); iter++)
{
QString transport = QString::fromStdString(*iter).replace(
QString::fromStdString(IMAGE_TRANSPORT_PARAM) + "/", "");
QAction* action = image_transport_menu_->addAction(transport);
action->setCheckable(true);
group->addAction(action);
}
connect(group, SIGNAL(triggered(QAction*)), this, SLOT(SetImageTransport(QAction*)));
tf_ = boost::make_shared<tf::TransformListener>();
tf_manager_ = boost::make_shared<swri_transform_util::TransformManager>();
tf_manager_->Initialize(tf_);
loader_ = new pluginlib::ClassLoader<MapvizPlugin>(
"mapviz", "mapviz::MapvizPlugin");
std::vector<std::string> plugins = loader_->getDeclaredClasses();
for (unsigned int i = 0; i < plugins.size(); i++)
{
ROS_INFO("Found mapviz plugin: %s", plugins[i].c_str());
}
canvas_->InitializeTf(tf_);
canvas_->SetFixedFrame(ui_.fixedframe->currentText().toStdString());
canvas_->SetTargetFrame(ui_.targetframe->currentText().toStdString());
ros::NodeHandle priv("~");
add_display_srv_ = node_->advertiseService("add_mapviz_display", &Mapviz::AddDisplay, this);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString default_path = QDir::homePath();
if (env.contains(ROS_WORKSPACE_VAR))
{
// If the ROS_WORKSPACE environment variable is defined, try to read our
// config file out of that. If we can't read it, fall back to trying to
// read one from the user's home directory.
QString ws_path = env.value(ROS_WORKSPACE_VAR, default_path);
if (QFileInfo(ws_path + MAPVIZ_CONFIG_FILE).isReadable())
{
default_path = ws_path;
}
else
{
ROS_WARN("Could not load config file from ROS_WORKSPACE at %s; trying home directory...",
ws_path.toStdString().c_str());
}
}
default_path += MAPVIZ_CONFIG_FILE;
std::string config;
priv.param("config", config, default_path.toStdString());
bool auto_save;
priv.param("auto_save_backup", auto_save, true);
Open(config);
UpdateFrames();
frame_timer_.start(1000);
connect(&frame_timer_, SIGNAL(timeout()), this, SLOT(UpdateFrames()));
if (auto_save)
{
save_timer_.start(10000);
connect(&save_timer_, SIGNAL(timeout()), this, SLOT(AutoSave()));
}
connect(&record_timer_, SIGNAL(timeout()), this, SLOT(CaptureVideoFrame()));
bool print_profile_data;
priv.param("print_profile_data", print_profile_data, false);
if (print_profile_data)
{
profile_timer_.start(2000);
connect(&profile_timer_, SIGNAL(timeout()), this, SLOT(HandleProfileTimer()));
//.........这里部分代码省略.........
示例8: getShell
/*
* Returns the SHELL environment variable, if not set defaults to sh.
*/
QString UnixCommand::getShell()
{
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
return env.value("SHELL", "/bin/sh");
}
示例9: startSimulator
//.........这里部分代码省略.........
NetlistFile.close();
}
if (! usedComponents.isEmpty()) {
/// \todo remvoe the command line arguments? use only netlist annotation?
//Arguments << "-p" << QucsSettings.QucsWorkDir.absolutePath()
// << "-m" << usedComponents;
//qDebug() << "Command :" << Program << Arguments.join(" ");
/// Anotate netlist with Verilog-A dynamic path and module names
///
if (!NetlistFile.open(QFile::Append | QFile::Text))
QMessageBox::critical(this, tr("Error"), tr("Cannot read netlist!"));
else {
QTextStream out(&NetlistFile);
out << "\n";
out << "# --path=" << QucsSettings.QucsWorkDir.absolutePath() << "\n";
out << "# --module=" << usedComponents.join(" ") << "\n";
NetlistFile.close();
}
}
} // vaComponents not empty
if((SimOpt = findOptimization((Schematic*)DocWidget))) {
((Optimize_Sim*)SimOpt)->createASCOnetlist();
Program = QucsSettings.AscoBinDir.canonicalPath();
Program = QDir::toNativeSeparators(Program+"/"+"asco"+QString(executableSuffix));
Arguments << "-qucs" << QucsSettings.QucsHomeDir.filePath("asco_netlist.txt")
<< "-o" << "asco_out";
}
else {
Program = QucsSettings.Qucsator;
Arguments << "-b" << "-g" << "-i"
<< QucsSettings.QucsHomeDir.filePath("netlist.txt")
<< "-o" << DataSet;
}
}
else {
if (isVerilog) {
Program = QDir::toNativeSeparators(QucsSettings.BinDir + QucsVeri);
Arguments << QDir::toNativeSeparators(QucsSettings.QucsHomeDir.filePath("netlist.txt"))
<< DataSet
<< SimTime
<< QDir::toNativeSeparators(SimPath)
<< QDir::toNativeSeparators(QucsSettings.BinDir)
<< "-c";
} else {
/// \todo \bug error: unrecognized command line option '-Wl'
#ifdef __MINGW32__
Program = QDir::toNativeSeparators(pathName(QucsSettings.BinDir + QucsDigi));
Arguments << QDir::toNativeSeparators(QucsSettings.QucsHomeDir.filePath("netlist.txt"))
<< DataSet
<< SimTime
<< QDir::toNativeSeparators(SimPath)
<< QDir::toNativeSeparators(QucsSettings.BinDir) << "-Wall" << "-c";
#else
Program = QDir::toNativeSeparators(pathName(QucsSettings.BinDir + QucsDigi));
Arguments << QucsSettings.QucsHomeDir.filePath("netlist.txt")
<< DataSet << SimTime << pathName(SimPath)
<< pathName(QucsSettings.BinDir) << "-Wall" << "-c";
#endif
}
}
}
disconnect(&SimProcess, 0, 0, 0);
connect(&SimProcess, SIGNAL(readyReadStandardError()), SLOT(slotDisplayErr()));
connect(&SimProcess, SIGNAL(readyReadStandardOutput()), SLOT(slotDisplayMsg()));
connect(&SimProcess, SIGNAL(finished(int, QProcess::ExitStatus)),
SLOT(slotSimEnded(int, QProcess::ExitStatus)));
connect(&SimProcess, SIGNAL(stateChanged(QProcess::ProcessState)),
SLOT(slotStateChanged(QProcess::ProcessState)));
#ifdef SPEEDUP_PROGRESSBAR
waitForUpdate = false;
#endif
wasLF = false;
ProgressText = "";
#ifdef __MINGW32__
QString sep(";"); // path separator
#else
QString sep(":");
#endif
// append process PATH
// insert Qucs bin dir, so ASCO can find qucsator
env.insert("PATH", env.value("PATH") + sep + QucsSettings.BinDir );
SimProcess.setProcessEnvironment(env);
qDebug() << "Command :" << Program << Arguments.join(" ");
SimProcess.start(Program, Arguments); // launch the program
}
示例10: addChild
continue;
}
name = QStandardPaths::displayName(i);
path.replace(" ", "\\ ");
cmd = "cd " + path;
addChild(new BookmarkCommandItem(name, cmd, this));
}
#endif
// system env - include dirs in the tree
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
foreach (QString i, env.keys())
{
path = env.value(i);
if (!d.exists(path) || !QFileInfo(path).isDir())
{
//qDebug() << "Env Dir:" << path << "does not exist. Skipping.";
continue;
}
path.replace(" ", "\\ ");
cmd = "cd " + path;
addChild(new BookmarkCommandItem(i, cmd, this));
}
}
};
class BookmarkFileGroupItem : public BookmarkGroupItem
{
// hierarchy handling
示例11: home
QString OpenModelica::home()
{
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString omHome = env.value("OpenModelicaHome");
return omHome;
}
示例12: start_stop_video
// Next parts of code are tested with VLC media player 2.1.2 and later with 2.1.5 Rincewind on Linux.
// On windows it's disabled because the console interface of VLC on windows is broken.
// Once they (videolan.org) has fixed this, we can test it and hopefully enable it on windows too.
void UI_Mainwindow::start_stop_video()
{
if(video_player->status != VIDEO_STATUS_STOPPED)
{
stop_video_generic();
return;
}
if(playback_realtime_active)
{
return;
}
if(live_stream_active)
{
QMessageBox messagewindow(QMessageBox::Critical, "Error", "Can not open a video during a live stream.");
messagewindow.exec();
return;
}
if(video_player->status != VIDEO_STATUS_STOPPED)
{
QMessageBox messagewindow(QMessageBox::Critical, "Error", "There is already a video running.");
messagewindow.exec();
return;
}
if(signalcomps < 1)
{
QMessageBox messagewindow(QMessageBox::Critical, "Error", "Put some signals on the screen first.");
messagewindow.exec();
return;
}
if(annot_editor_active)
{
QMessageBox messagewindow(QMessageBox::Critical, "Error", "Close the annotation editor first.");
messagewindow.exec();
return;
}
strcpy(videopath, QFileDialog::getOpenFileName(this, "Select video", QString::fromLocal8Bit(recent_opendir),
"Video files (*.ogv *.OGV *.ogg *.OGG *.mkv *.MKV *.avi *.AVI"
" *.mp4 *.MP4 *.mpeg *.MPEG *.mpg *.MPG *.wmv *.WMV)").toLocal8Bit().data());
if(!strcmp(videopath, ""))
{
return;
}
get_directory_from_path(recent_opendir, videopath, MAX_PATH_LENGTH);
video_player->utc_starttime = parse_date_time_stamp(videopath);
if(video_player->utc_starttime < 0LL)
{
QMessageBox messagewindow(QMessageBox::Warning, "Warning", "Unable to get startdate and starttime from video filename.\n"
" \nAssume video starttime equals EDF/BDF starttime?\n ");
messagewindow.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
messagewindow.setDefaultButton(QMessageBox::Yes);
if(messagewindow.exec() == QMessageBox::Cancel) return;
video_player->utc_starttime = edfheaderlist[sel_viewtime]->utc_starttime;
}
video_player->stop_det_counter = 0;
video_player->fpos = 0;
video_player->starttime_diff = (int)(edfheaderlist[sel_viewtime]->utc_starttime - video_player->utc_starttime);
if((edfheaderlist[sel_viewtime]->utc_starttime + edfheaderlist[sel_viewtime]->recording_len_sec) < video_player->utc_starttime)
{
QMessageBox messagewindow(QMessageBox::Critical, "Error", "The video registration and the EDF/BDF registration do not overlap (in time)!");
messagewindow.exec();
return;
}
if((video_player->utc_starttime + 259200LL) < edfheaderlist[sel_viewtime]->utc_starttime)
{
QMessageBox messagewindow(QMessageBox::Critical, "Error", "The video registration and the EDF/BDF registration do not overlap (in time)!");
messagewindow.exec();
return;
}
video_process = new QProcess(this);
#ifdef Q_OS_WIN32
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PATH", env.value("PATH") + ";C:\\Program Files\\VideoLAN\\VLC");
video_process->setProcessEnvironment(env);
#endif
connect(video_process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(video_process_error(QProcess::ProcessError)));
//.........这里部分代码省略.........
示例13: initialize
bool HttpServer::initialize()
{
if(m_IsInitialized)
{
LOG_DEBUG("Already initialized");
return false;
}
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
if(env.contains(QTTP_HOME_ENV_VAR))
{
QDir::setCurrent(env.value(QTTP_HOME_ENV_VAR));
LOG_DEBUG("Working directory from $" << QTTP_HOME_ENV_VAR << QDir::currentPath());
}
else
{
// Just a quirk for mac, but I wonder if we can apply to all in general.
#ifdef Q_OS_MAC
QDir::setCurrent(qApp->applicationDirPath());
LOG_DEBUG("Working directory" << QDir::currentPath());
#else
LOG_DEBUG("Working directory" << QDir::currentPath());
#endif
}
QCoreApplication* app = QCoreApplication::instance();
Q_ASSERT(app);
m_CmdLineParser.addOptions({
{{"i", "ip"},
QCoreApplication::translate("main", "ip of the target interface"),
QCoreApplication::translate("main", "ip")},
{{"p", "port"},
QCoreApplication::translate("main", "port to listen on"),
QCoreApplication::translate("main", "port")},
{{"m", "meta"},
QCoreApplication::translate("main", "appends metadata to responses")},
{{"c", "config"},
QCoreApplication::translate("main", "absolute path to the global config file (json)"),
QCoreApplication::translate("main", "config")},
{{"r", "routes"},
QCoreApplication::translate("main", "absolute path to the routes config file (json)"),
QCoreApplication::translate("main", "routes")},
{{"d", "dir"},
QCoreApplication::translate("main", "absolute path to the config directory, don't combine with -c or -r args"),
QCoreApplication::translate("main", "dir")},
{{"w", "www"},
QCoreApplication::translate("main", "absolute path to the www folder to serve http files"),
QCoreApplication::translate("main", "www")},
{{"s", "swagger"},
QCoreApplication::translate("main", "exposes swagger-api json responses for the path /swagger/")},
});
m_CmdLineParser.addHelpOption();
m_CmdLineParser.process(*app);
if(env.contains(CONFIG_DIRECTORY_ENV_VAR))
{
QString var = env.value(CONFIG_DIRECTORY_ENV_VAR);
if(!var.isNull() && !var.trimmed().isEmpty())
{
LOG_INFO("Processing ENVIRONMENT VARIABLE [" << var << "]");
initConfigDirectory(var);
}
else
{
LOG_WARN("Invalid ENVIRONMENT VARIABLE [" << CONFIG_DIRECTORY_ENV_VAR << "]");
}
}
QJsonValue d = m_CmdLineParser.value("d");
if(d.isString() && !d.isNull() && !d.toString().trimmed().isEmpty())
{
initConfigDirectory(d.toString());
}
else
{
QJsonValue c = m_CmdLineParser.value("c");
if(c.isString() && !c.isNull() && !c.toString().trimmed().isEmpty())
{
initGlobal(c.toString());
}
else
{
initGlobal(GLOBAL_CONFIG_FILE_PATH);
}
QJsonValue r = m_CmdLineParser.value("r");
if(r.isString() && !r.isNull() && !r.toString().trimmed().isEmpty())
{
initRoutes(r.toString());
}
else
{
initRoutes(ROUTES_CONFIG_FILE_PATH);
}
}
if(!m_SendRequestMetadata)
{
//.........这里部分代码省略.........
示例14: initGlobal
void HttpServer::initGlobal(const QString &filepath)
{
LOG_INFO("Processing filepath [" << filepath << "]");
m_GlobalConfig = Utils::readJson(QDir(filepath).absolutePath());
LOG_INFO(m_GlobalConfig["bindIp"]);
LOG_INFO(m_GlobalConfig["bindPort"]);
QJsonValueRef loggingValue = m_GlobalConfig["logfile"];
if(loggingValue.isObject())
{
QJsonObject logging = loggingValue.toObject();
if(logging["isEnabled"].toBool(true))
{
QString filename;
if(logging["filename"].isString())
{
filename = logging["filename"].toString();
}
if(logging["writeFrequency"].isDouble())
{
m_LoggingUtils.initializeFile(filename, logging["writeFrequency"].toInt());
}
else
{
m_LoggingUtils.initializeFile(filename);
}
}
}
QJsonValueRef httpFilesValue = m_GlobalConfig["httpFiles"];
if(httpFilesValue.isObject())
{
QJsonObject httpFiles = httpFilesValue.toObject();
m_ShouldServeFiles = httpFiles["isEnabled"].toBool(false);
if(m_ShouldServeFiles)
{
QString directory = httpFiles["directory"].toString().trimmed();
if(directory == "$QTTP_HOME")
{
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
if(env.contains(QTTP_HOME_ENV_VAR))
{
m_ServeFilesDirectory = QDir::cleanPath(env.value(QTTP_HOME_ENV_VAR));
m_ServeFilesDirectory = m_ServeFilesDirectory.absoluteFilePath("www");
LOG_DEBUG("Using $QTTP_HOME" << m_ServeFilesDirectory.absolutePath());
}
else
{
m_ServeFilesDirectory = QDir::current().absoluteFilePath("www");
LOG_DEBUG("QTTP_HOME not found, using current directory" << m_ServeFilesDirectory.absolutePath());
}
}
else if(directory.isEmpty())
{
m_ServeFilesDirectory = QDir::current().absoluteFilePath("www");
LOG_DEBUG("Default to using current directory" << m_ServeFilesDirectory.absolutePath());
}
else
{
m_ServeFilesDirectory = QDir::cleanPath(directory);
LOG_DEBUG("Using directory in config" << m_ServeFilesDirectory.absolutePath());
}
if(!m_ServeFilesDirectory.exists())
{
LOG_ERROR("Unable to serve files from invalid directory [" << m_ServeFilesDirectory.absolutePath() << "]");
m_ShouldServeFiles = false;
}
}
}
if(m_ShouldServeFiles)
{
m_FileLookup.populateFiles(m_ServeFilesDirectory);
}
QJsonObject headers = m_GlobalConfig["defaultHeaders"].toObject();
QStringList keys = headers.keys();
if(!keys.isEmpty())
{
Global::DEFAULT_HEADERS.clear();
for(QString key : keys)
{
QString value = headers.value(key).toString();
Global::DEFAULT_HEADERS.push_back({ key, value });
LOG_DEBUG("Adding default-header [" << key << ", " << value << "]");
}
// We'll always force the QttpServer version in here.
Global::DEFAULT_HEADERS.push_back({ "Server", QTTP_SERVER_VERSION });
}
else
{
LOG_DEBUG("Did not read headers in config file, using default headers");
}
QJsonObject serverConfig = m_GlobalConfig["server"].toObject();
m_SendRequestMetadata = serverConfig["metadata"].toBool(false);
//.........这里部分代码省略.........
示例15: main
int main(int argc, char *argv[])
{
#if QT_VERSION < 0x050000
// The GraphicsSystem needs to be set before the instantiation of the
// QApplication. Therefore we need to parse the current setting
// in this unusual place :-/
QSettings graphicsSettings("KDE", "Marble Virtual Globe"); // keep the parameters here
QString const graphicsString = graphicsSettings.value("View/graphicsSystem", "raster").toString();
QApplication::setGraphicsSystem( graphicsString );
#endif
QApplication app(argc, argv);
app.setApplicationName( "Marble Virtual Globe" );
app.setOrganizationName( "KDE" );
app.setOrganizationDomain( "kde.org" );
// Widget translation
#ifdef Q_WS_MAEMO_5
// Work around http://bugreports.qt-project.org/browse/QTBUG-1313
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString lang( "C" );
QStringList const locales = QStringList() << "LC_ALL" << "LC_MESSAGES" << "LANG" << "LANGUAGE";
foreach( const QString &locale, locales ) {
if ( env.contains( locale ) && !env.value( locale ).isEmpty() ) {
lang = env.value( locale, "C" );
break;
}
}
lang = lang.section( '_', 0, 0 );
#else
QString lang = QLocale::system().name().section('_', 0, 0);
#endif
QTranslator translator;
translator.load( "marble-" + lang, MarbleDirs::path(QString("lang") ) );
app.installTranslator(&translator);
// For non static builds on mac and win
// we need to be sure we can find the qt image
// plugins. In mac be sure to look in the
// application bundle...
#ifdef Q_WS_WIN
QApplication::addLibraryPath( QApplication::applicationDirPath()
+ QDir::separator() + "plugins" );
#endif
#ifdef Q_OS_MACX
QApplication::instance()->setAttribute(Qt::AA_DontShowIconsInMenus);
qDebug("Adding qt image plugins to plugin search path...");
CFURLRef myBundleRef = CFBundleCopyBundleURL(CFBundleGetMainBundle());
CFStringRef myMacPath = CFURLCopyFileSystemPath(myBundleRef, kCFURLPOSIXPathStyle);
const char *mypPathPtr = CFStringGetCStringPtr(myMacPath,CFStringGetSystemEncoding());
CFRelease(myBundleRef);
CFRelease(myMacPath);
QString myPath(mypPathPtr);
// if we are not in a bundle assume that the app is built
// as a non bundle app and that image plugins will be
// in system Qt frameworks. If the app is a bundle
// lets try to set the qt plugin search path...
if (myPath.contains(".app"))
{
myPath += "/Contents/plugins";
QApplication::addLibraryPath( myPath );
qDebug( "Added %s to plugin search path", qPrintable( myPath ) );
}
#endif
QString marbleDataPath;
int dataPathIndex=0;
QString mapThemeId;
QString coordinatesString;
QString distanceString;
const MarbleGlobal::Profiles profiles = MarbleGlobal::SmallScreen | MarbleGlobal::HighResolution;
QStringList args = QApplication::arguments();
if ( args.contains( "-h" ) || args.contains( "--help" ) ) {
qWarning() << "Usage: marble [options] [files]";
qWarning();
qWarning() << "[files] can be zero, one or more .kml and/or .gpx files to load and show.";
qWarning();
qWarning() << "general options:";
qWarning() << " --marbledatapath=<path> .... Overwrite the compile-time path to map themes and other data";
qWarning() << " --latlon=<coordinates> ..... Show map at given lat lon coordinates";
qWarning() << " --distance=<value> ......... Set the distance of the observer to the globe (in km)";
qWarning() << " --map=<id> ................. Use map id (e.g. \"earth/openstreetmap/openstreetmap.dgml\")";
qWarning();
qWarning() << "debug options:";
qWarning() << " --debug-info ............... write (more) debugging information to the console";
qWarning() << " --fps ...................... Show the paint performance (paint rate) in the top left corner";
qWarning() << " --runtimeTrace.............. Show the time spent and other debug info of each layer";
qWarning() << " --tile-id................... Write the identifier of texture tiles on top of them";
qWarning() << " --timedemo ................. Measure the paint performance while moving the map and quit";
return 0;
}
for ( int i = 1; i < args.count(); ++i ) {
const QString arg = args.at(i);
//.........这里部分代码省略.........