QString GwtCallback::chooseRVersion() { #ifdef Q_OS_WIN32 RVersion rVersion = desktop::detectRVersion(true, pOwner_->asWidget()); if (rVersion.isValid()) return getRVersion(); else return QString(); #else return QString(); #endif }
bool prepareEnvironment(Options &options) { bool forceUi = ::GetAsyncKeyState(VK_CONTROL) & ~1; RVersion rVersion = detectRVersion(forceUi); if (!rVersion.isValid()) return false; // get the short path version of the home dir std::string homePath = QDir::toNativeSeparators(rVersion.homeDir()).toStdString(); DWORD len = ::GetShortPathName(homePath.c_str(), NULL, 0); std::vector<TCHAR> buffer(len, 0); if (::GetShortPathName(homePath.c_str(), &(buffer[0]), len) != 0) { // copy path to string and assign it we got one std::string shortHomePath(&(buffer[0])); if (!shortHomePath.empty()) homePath = shortHomePath; } else { LOG_ERROR(systemError(::GetLastError(), ERROR_LOCATION)); } // set R_HOME system::setenv("R_HOME", homePath); std::string path = QDir::toNativeSeparators(rVersion.binDir()).toStdString() + ";" + system::getenv("PATH"); system::setenv("PATH", path); return true; }