bool GalleryUtil::MoveDirectory(const QFileInfo src, QFileInfo &dst) { QDir srcDir(src.absoluteFilePath()); dst = MakeUniqueDirectory(dst); if (!dst.exists()) { srcDir.mkdir(dst.absoluteFilePath()); dst.refresh(); } if (!dst.exists() || !dst.isDir()) return false; bool ok = true; QDir dstDir(dst.absoluteFilePath()); srcDir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); QFileInfoList list = srcDir.entryInfoList(); QFileInfoList::const_iterator it = list.begin(); for (; it != list.end(); ++it) { const QString fn = it->fileName(); QFileInfo dfi(dstDir, fn); ok &= Move(*it, dfi); } return ok && FileDelete(src); }
bool SimpleViewer::copyFolderRecursively(const QString& srcPath, const QString& dstPath) const { QDir srcDir(srcPath); QString newCopyPath = dstPath + QLatin1Char('/') + srcDir.dirName(); if (!srcDir.mkpath(newCopyPath)) { return false; } foreach (const QFileInfo& fileInfo, srcDir.entryInfoList(QDir::Files)) { QString copyPath = newCopyPath + QLatin1Char('/') + fileInfo.fileName(); if (!QFile::copy(fileInfo.filePath(), copyPath)) return false; } foreach (const QFileInfo& fileInfo, srcDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { copyFolderRecursively(fileInfo.filePath(), newCopyPath); } return true; }
bool Qaul::QaulCopyDir(const QString &srcPath, const QString &dstPath) { //rmDir(dstPath); QDir parentDstDir(QFileInfo(dstPath).path()); if (!parentDstDir.mkdir(QFileInfo(dstPath).fileName())) return false; QDir srcDir(srcPath); foreach(const QFileInfo &info, srcDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)) { QString srcItemPath = srcPath + "/" + info.fileName(); QString dstItemPath = dstPath + "/" + info.fileName(); if (info.isDir()) { if (!this->QaulCopyDir(srcItemPath, dstItemPath)) { return false; } } else if (info.isFile()) { if (!QFile::copy(srcItemPath, dstItemPath)) { return false; } } else { qDebug() << "Unhandled item" << info.filePath() << "in cpDir"; } } return true; }
bool GalleryUtil::CopyDirectory(const QFileInfo src, QFileInfo &dst) { QDir srcDir(src.absoluteFilePath()); dst = MakeUniqueDirectory(dst); if (!dst.exists()) { srcDir.mkdir(dst.absoluteFilePath()); dst.refresh(); } if (!dst.exists() || !dst.isDir()) return false; bool ok = true; QDir dstDir(dst.absoluteFilePath()); QFileInfoList list = srcDir.entryInfoList(); QFileInfoList::const_iterator it = list.begin(); for (; it != list.end(); ++it) { const QString fn = it->fileName(); if (fn != "." && fn != "..") { QFileInfo dfi(dstDir, fn); ok &= Copy(*it, dfi); } } return ok; }
bool copyDirectory(const path& source, const path& destination) { if (!QDir().mkpath(toQString(destination))) { return false; } QDir srcDir(toQString(source)); for (const QFileInfo &info : srcDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)) { QString srcItemPath = toQString(source) + "/" + info.fileName(); QString dstItemPath = toQString(destination) + "/" + info.fileName(); if (info.isDir()) { if (!copyDirectory(toPath(srcItemPath), toPath(dstItemPath))) { return false; } } else if (info.isFile()) { if (!QFile::copy(srcItemPath, dstItemPath)) { return false; } } } return true; }
bool copyDirFiles(const QString &SourceDir,const QString &DestDir,bool coverFileIfExist) { qDebug() << Q_FUNC_INFO; QDir srcDir(SourceDir); QDir dstDir(DestDir); if(!dstDir.exists()) if(dstDir.mkdir(dstDir.absolutePath())) return false; QFileInfoList fileInfoList = srcDir.entryInfoList(); foreach(QFileInfo fileInfo,fileInfoList) { if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") continue; if(fileInfo.isDir()) { if(!copyDirFiles(fileInfo.filePath(),dstDir.filePath(fileInfo.fileName()),coverFileIfExist)) return false; } else { if(coverFileIfExist && dstDir.exists(fileInfo.fileName())) dstDir.remove(fileInfo.fileName()); if(!QFile::copy(fileInfo.filePath(),dstDir.filePath(fileInfo.fileName()))) return false; } } return true; }
static status_t CopyDirectoryRecursive(const char * oldDirPath, const char * newDirPath) { if (strcmp(oldDirPath, newDirPath) == 0) return B_NO_ERROR; // paranoia: Copying a directory onto itself is a no-op Directory srcDir(oldDirPath); if (srcDir.IsValid() == false) return B_ERROR; if (Directory::MakeDirectory(newDirPath, true, true) != B_NO_ERROR) return B_ERROR; const String srcDirPath = srcDir.GetPath(); String dstDirPath; { // In an inner scope simply to keep (dstDir) off the stack during any recursion Directory dstDir(newDirPath); if (dstDir.IsValid() == false) return B_ERROR; dstDirPath = dstDir.GetPath(); } const char * curSourceName; while((curSourceName = srcDir.GetCurrentFileName()) != NULL) { if ((strcmp(curSourceName, ".") != 0)&&(strcmp(curSourceName, "..") != 0)) { if (CopyFile((srcDirPath+curSourceName)(), (dstDirPath+curSourceName)(), true) != B_NO_ERROR) return B_ERROR; } srcDir++; } return B_NO_ERROR; }
bool copyDir(const QString &srcPath, const QString &dstPath) { bool result = true; bool test = true; LOG_FREE(Info, "copyDir", "copyDir '" << toString(srcPath) << "' to '" << toString(dstPath) << "'"); // ensure directory exists QFileInfo dstInfo(dstPath); QString fileName = dstInfo.fileName(); if (!dstInfo.exists() || !dstInfo.isDir()){ QDir parentDstDir(QFileInfo(dstPath).path()); LOG_FREE(Info, "copyDir", "Creating directory named = '" << toString(fileName) << "' in parentDstDir = '" << toString(parentDstDir.path()) << "'"); if (!parentDstDir.mkpath(fileName)){ LOG_FREE(Error, "copyDir", "Failed to create directory = '" << toString(fileName) << "' in parentDstDir = '" << toString(parentDstDir.path()) << "'"); return false; } } QDir srcDir(srcPath); // remove all files in dst as well as any directories in dst that are not in src test = synchDirStructures(srcPath, dstPath); if (!test){ LOG_FREE(Error, "copyDir", "Failed to synch destination '" << toString(dstPath) << "' with source '" << toString(srcPath) << "'"); result = false; } // copy all files in src to dst for (const QFileInfo &srcItemInfo : srcDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)) { QString srcItemPath = srcPath + "/" + srcItemInfo.fileName(); QString dstItemPath = dstPath + "/" + srcItemInfo.fileName(); QFileInfo dstItemInfo = QFileInfo(dstItemPath); if (srcItemInfo.isDir()) { test = copyDir(srcItemPath, dstItemPath); if (!test){ LOG_FREE(Error, "copyDir", "Failed to copy directory '" << toString(srcItemPath) << "' to '" << toString(dstItemPath) << "'"); result = false; // DLM: do we really want to give up here? //return false; } } else if (srcItemInfo.isFile()) { test = QFile::copy(srcItemPath, dstItemPath); if (!test){ LOG_FREE(Error, "copyDir", "Failed to copy file '" << toString(srcItemPath) << "' to '" << toString(dstItemPath) << "'"); result = false; // DLM: do we really want to give up here? //return false; } } } return result; }
void QvisSetupHostProfilesAndConfigWindow::performSetup() { QString hostsInstallDirectory = QString::fromStdString(GetAndMakeUserVisItHostsDirectory()); for (std::list<NetworkInfo>::iterator it = networkList.begin(); it != networkList.end(); ++it) { if (it->checkBox->isChecked()) { QString srcDir(GetVisItResourcesFile(VISIT_RESOURCES_HOSTS, it->shortName.toStdString()).c_str()); QDir srcHostProfileDir(srcDir, "host*.xml"); QStringList files = srcHostProfileDir.entryList(); for (int i = 0; i < files.size(); ++ i) { const QString &thisProfile = files.at(i); installConfigFile(srcDir + "/" + thisProfile, hostsInstallDirectory + "/" + thisProfile); } } } for (std::list<DefaultConfigInfo>::iterator it = defaultConfigList.begin(); it != defaultConfigList.end(); ++it) { if (it->radioButton->isChecked()) { const char *configFilename[] = { "config", "guiconfig", "visitrc", 0 }; for (int i = 0; configFilename[i] != 0; ++i) { std::string srcCfgName = it->shortName.toStdString() + "/" + std::string(configFilename[i]); QString srcCfgPath(GetVisItResourcesFile(VISIT_RESOURCES_HOSTS, srcCfgName).c_str()); if (QFile::exists(srcCfgPath)) { char *srcCfgFile = GetDefaultConfigFile(configFilename[i]); installConfigFile(srcCfgPath, srcCfgFile); delete [] srcCfgFile; } } } } QMessageBox msgBox; msgBox.setText(tr("Host profiles and configuration files have been installed" " and will be available after VisIt is restarted.")); msgBox.exec(); close(); }
bool VUtils::copyDirectory(const QString &p_srcDirPath, const QString &p_destDirPath, bool p_isCut) { QString srcPath = QDir::cleanPath(p_srcDirPath); QString destPath = QDir::cleanPath(p_destDirPath); if (srcPath == destPath) { return true; } if (QFileInfo::exists(destPath)) { qWarning() << QString("target directory %1 already exists").arg(destPath); return false; } // QDir.rename() could not move directory across drives. // Make sure target directory exists. QDir destDir(destPath); if (!destDir.exists()) { if (!destDir.mkpath(destPath)) { qWarning() << QString("fail to create target directory %1").arg(destPath); return false; } } // Handle directory recursively. QDir srcDir(srcPath); Q_ASSERT(srcDir.exists() && destDir.exists()); QFileInfoList nodes = srcDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot); for (int i = 0; i < nodes.size(); ++i) { const QFileInfo &fileInfo = nodes.at(i); QString name = fileInfo.fileName(); if (fileInfo.isDir()) { if (!copyDirectory(srcDir.filePath(name), destDir.filePath(name), p_isCut)) { return false; } } else { Q_ASSERT(fileInfo.isFile()); if (!copyFile(srcDir.filePath(name), destDir.filePath(name), p_isCut)) { return false; } } } if (p_isCut) { if (!destDir.rmdir(srcPath)) { qWarning() << QString("fail to delete source directory %1 after cut").arg(srcPath); return false; } } return true; }
static bool FileDelete(const QFileInfo &file) { if (!file.isDir()) return QFile::remove(file.absoluteFilePath()); // delete .thumbcache QDir srcDir(file.absoluteFilePath()); QFileInfo tc(srcDir, ".thumbcache"); GalleryUtil::Delete(tc); srcDir.rmdir(srcDir.absolutePath()); return true; }
bool GalleryUtil::DeleteDirectory(const QFileInfo &dir) { if (!dir.exists()) return false; QDir srcDir(dir.absoluteFilePath()); srcDir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); QFileInfoList list = srcDir.entryInfoList(); QFileInfoList::const_iterator it = list.begin(); for (; it != list.end(); ++it) { const QString fn = it->fileName(); Delete(*it); } return FileDelete(dir); }
bool GalleryUtil::DeleteDirectory(const QFileInfo &dir) { if (!dir.exists()) return false; QDir srcDir(dir.absoluteFilePath()); QFileInfoList list = srcDir.entryInfoList(); QFileInfoList::const_iterator it = list.begin(); for (; it != list.end(); ++it) { const QString fn = it->fileName(); if (fn != "." && fn != "..") Delete(*it); } return FileDelete(dir); }
bool ROSUtils::initializeWorkspace(QProcess *process, const Utils::FileName &workspaceDir, const QString &rosDistribution) { Utils::FileName srcDir(workspaceDir); srcDir.appendPath(QLatin1String("src")); bool results = false; if (sourceROS(process, rosDistribution)) { if (!isWorkspaceInitialized(workspaceDir)) { if (!srcDir.exists()) { QDir(workspaceDir.toString()).mkdir(QLatin1String("src")); } process->setWorkingDirectory(srcDir.toString()); process->start(QLatin1String("bash"), QStringList() << QLatin1String("-c") << QLatin1String("catkin_init_workspace")); process->waitForFinished(); if (process->exitStatus() != QProcess::CrashExit) { results = true; } else { results = false; qDebug() << "Failed ot initialize workspace: " << workspaceDir.toString(); } } else { results = true; } if (buildWorkspace(process, workspaceDir)) { results = true; } else { results = false; } } return results; }
TEST(FilePersistence, ReSaveList) { QString srcDir(":/FilePersistence/test/persisted"); QString destDir(QDir::tempPath() + "/Envision/FilePersistence/tests"); QFile src(srcDir + "/partial/partial"); QFile dest(destDir + "/partialResave/partialResave"); if (dest.exists()) { bool removed = dest.remove(); CHECK_CONDITION(removed); } if (!QDir(destDir + "/partialResave").exists()) { bool createdDir = QDir().mkpath(destDir + "/partialResave"); CHECK_CONDITION(createdDir); } bool copied = src.copy(dest.fileName()); CHECK_CONDITION(copied); bool permissionOk = dest.setPermissions(QFile::ReadOwner | QFile::WriteOwner); CHECK_CONDITION(permissionOk); Model::Model model; FileStore store; store.setBaseFolder(destDir); model.load(&store, "partialResave"); TestNodes::PartialList* root = dynamic_cast<TestNodes::PartialList*> (model.root()); CHECK_CONDITION(root->list()->isFullyLoaded() == false); model.beginModification(root->list(), "fake modification "); model.endModification(); CHECK_CONDITION(root->list()->isFullyLoaded() == false); model.setName("partialResave"); model.save(&store); CHECK_CONDITION(root->list()->isFullyLoaded() == false); CHECK_TEXT_FILES_EQUAL(":/FilePersistence/test/persisted/partialResave/partialResave", destDir + "/partialResave/partialResave"); }
void filestuff::copyDir(QString src, QString dest) { exMake(dest); QDir srcDir(src); QDir destDir(dest); QStringList srcList(srcDir.entryList(QDir::Files)); for (int i = 0; i < srcList.count(); i++){ QString srcName(src + "/" + srcList[i]); QString destName(dest + "/" + srcList[i]); QFile::copy(srcName, destName); } srcList.clear(); srcList = srcDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); for (int i = 0; i < srcList.count(); i++){ QString srcName(src + "/" + srcList[i]); QString destName(dest + "/" + srcList[i]); copyDir(srcName, destName); } }
bool DTrash::deleteDirRecursivley(const QString& dirToDelete) { QDir srcDir(dirToDelete); foreach (const QFileInfo& fileInfo, srcDir.entryInfoList(QDir::Files)) { if (!deleteImage(fileInfo.filePath())) { return false; } } foreach (const QFileInfo& fileInfo, srcDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { deleteDirRecursivley(fileInfo.filePath()); } return srcDir.removeRecursively(); }
void CBAttachmentsProvider::mergeAttachments(const QString &srcId, const QString &dstID,const QString &diff){ QString srcPath = pathForId(srcId); QDir srcDir(srcPath); if (!srcDir.exists() ){ // there is no attachments in source return; } QString dstPath = pathForId(dstID); QDir dstDir(dstPath); if (!dstDir.exists() ){ // just rename srcDir srcDir.rename(srcId,dstID); return; } QVariantList dstAttributes = attributesForId(dstID); QStringList dstFiles; for (int i = 0; i<dstAttributes.size(); ++i){ QVariantMap map = dstAttributes.at(i).toMap(); dstFiles.append(map["file"].toString()); } QVariantList srcAttributes = attributesForId(srcId); foreach (QVariant v, srcAttributes) { QVariantMap map = v.toMap(); QString fileName = map["file"].toString(); QString filePath = srcPath+fileName; if (dstFiles.contains(fileName)){ QFileInfo fileInfo(filePath); QUuid u=QUuid::createUuid(); fileName =u.toString() +"."+fileInfo.completeSuffix(); map["file"] = QVariant(fileName); } map["description"] = diff; QString copyTo = dstPath+fileName; bool flag = CBUtils::copyRecursively(filePath,copyTo); if (!flag){ return; } dstAttributes.append(map); }
bool Util::copyDir(const QString &srcPath, const QString &dstPath, bool overwrite) { QDir parentDstDir(QFileInfo(dstPath).path()); parentDstDir.mkdir(QFileInfo(dstPath).fileName()); QFileInfo srcInfo(srcPath); if (srcInfo.isFile()) { QString dstItemPath = dstPath + "/" + srcInfo.fileName(); if (QFile::exists(dstItemPath) && overwrite) QFile::remove(dstItemPath); return QFile::copy(srcPath, dstItemPath); } QDir srcDir(srcPath); foreach(const QFileInfo &info, srcDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)) { QString srcItemPath = srcPath + "/" + info.fileName(); QString dstItemPath = dstPath + "/" + info.fileName(); if (info.isDir()) { if (!copyDir(srcItemPath, dstItemPath, overwrite)) { return false; } } else if (info.isFile()) { if (QFile::exists(dstItemPath) && overwrite) QFile::remove(dstItemPath); if (!QFile::copy(srcItemPath, dstItemPath)) { return false; } } } return true; }
/** * Fonction de service * \brief Copie un dossier * \details Usage : MoveDir(tr(« c:\\dossier_source »), tr(« c:\\dossier_destination »)); */ bool Workspace::copyDir(QString srcPath, QString destPath){ QDir srcDir(srcPath); QDir destDir(destPath); //Créée le répertoire s’il n’existe pas. if (!destDir.exists()) { if (!destDir.mkdir(destDir.absolutePath())) { return false; } }else if (destDir.entryList(QDir::Files).count() > 0) { return false; } //Récupère la liste des fichiers srcDir.setFilter( QDir::Files | QDir::Readable ); srcDir.setSorting( QDir::Name ); QFileInfoList srclist = srcDir.entryInfoList(); //Copie les fichiers dans le nouveau répertoire foreach(QFileInfo file, srclist){ QFile::copy(file.absoluteFilePath(), destDir.absolutePath() + "/" + file.fileName()); }
void AnalysisDriverTestLibrarySingleton::initialize(const openstudio::path& outputDataDirectory, const openstudio::path& baselineModelDirectory) { // create outputDataDirectory and save path as member data if (!boost::filesystem::exists(outputDataDirectory)) { boost::filesystem::create_directory(outputDataDirectory); } m_outputDataDirectory = outputDataDirectory; // create example model and put in outputDataDirectory Model model = exampleModel(); openstudio::path exampleModelDir = m_outputDataDirectory / toPath("ExampleModel"); openstudio::path exampleWeatherFileDir = exampleModelDir / toPath("example/files"); openstudio::path weatherFilePath = exampleWeatherFileDir / toPath("USA_CO_Golden-NREL.724666_TMY3.epw"); if (!boost::filesystem::exists(exampleModelDir)) { boost::filesystem::create_directory(exampleModelDir); boost::filesystem::create_directory(exampleWeatherFileDir.parent_path()); boost::filesystem::create_directory(exampleWeatherFileDir); openstudio::path originalWeatherFilePath = energyPlusWeatherDataPath() / toPath("USA_CO_Golden-NREL.724666_TMY3.epw"); boost::filesystem::copy_file(originalWeatherFilePath,weatherFilePath); } EpwFile epwFile(weatherFilePath); WeatherFile::setWeatherFile(model,epwFile); openstudio::path exampleModelPath = exampleModelDir / toPath("example.osm"); model.save(exampleModelPath,true); m_baselineModels.push_back(exampleModelPath); // loop through files in baselineModelDirectory (non-recursive) and save .osm paths QDir srcDir(toQString(baselineModelDirectory)); for (const QFileInfo& info : srcDir.entryInfoList(QDir::Files)) { if ((info.suffix() == "osm") || (info.suffix() == "idf")) { m_baselineModels.push_back(baselineModelDirectory / toPath(info.fileName())); } } }
void TransparentWebViewTest::LoadResources() { webView1 = new UIWebView(Rect(5, 5, 700, 500)); webView1->SetVisible(true); webView1->OpenURL("http://ru.wikipedia.org/"); AddControl(webView1); FilePath srcDir("~res:/TestData/TransparentWebViewTest/"); FilePath cpyDir = FileSystem::Instance()->GetCurrentDocumentsDirectory() + "TransparentWebViewTest/"; FileSystem::Instance()->DeleteDirectory(cpyDir); FileSystem::Instance()->CreateDirectory(cpyDir); FilePath srcFile = srcDir + "test.html"; FilePath cpyFile = cpyDir + "test.html"; FileSystem::Instance()->CopyFile(srcFile, cpyFile); String url = "file:///" + cpyFile.GetAbsolutePathname(); webView2 = new UIWebView(Rect(710, 5, 300, 250)); webView2->SetVisible(true); webView2->SetBackgroundTransparency(true); webView2->OpenURL(url); AddControl(webView2); Font *font = FTFont::Create("~res:/Fonts/korinna.ttf"); DVASSERT(font); font->SetSize(20); testButton = new UIButton(Rect(0, 510, 300, 30)); testButton->SetStateFont(0xFF, font); testButton->SetStateText(0xFF, L"Finish Test"); testButton->SetStateFontColor(0xFF, Color::White); testButton->SetDebugDraw(true); testButton->AddEvent(UIControl::EVENT_TOUCH_UP_INSIDE, Message(this, &TransparentWebViewTest::ButtonPressed)); AddControl(testButton); SafeRelease(font); }
int main(int argc, char *argv[]) { qInstallMsgHandler(myMessageHandler); QCoreApplication app(argc, argv); if (argc != 3) { qCritical("Usage: autotranslate <destination-dir> <source-dir>."); return -1; } QDir dstDir(app.arguments().value(1)); if (!dstDir.exists()) { qCritical("Destination directory '%s' not found.",dstDir.dirName().toLocal8Bit().constData()); return -1; } QDir srcDir(app.arguments().value(2),"*.ts",QDir::Name,QDir::Files); if (!srcDir.exists()) { qCritical("Source directory '%s' not found.",srcDir.dirName().toLocal8Bit().constData()); return -1; } QDirIterator srcIt(srcDir); while (srcIt.hasNext()) { QFile srcFile(srcIt.next()); if (srcFile.open(QFile::ReadOnly)) { QDomDocument doc; if (doc.setContent(&srcFile,true)) { qDebug("Generation auto translation from '%s'.",srcFile.fileName().toLocal8Bit().constData()); QDomElement rootElem = doc.firstChildElement("TS"); rootElem.setAttribute("language",rootElem.attribute("sourcelanguage","en")); QDomElement contextElem = rootElem.firstChildElement("context"); while(!contextElem.isNull()) { QDomElement messageElem = contextElem.firstChildElement("message"); while(!messageElem.isNull()) { QDomElement sourceElem = messageElem.firstChildElement("source"); QDomElement translationElem = messageElem.firstChildElement("translation"); if (!sourceElem.isNull() && !translationElem.isNull()) { QString sourceText = sourceElem.text(); if (messageElem.attribute("numerus") == "yes") { QDomElement numerusEelem = translationElem.firstChildElement("numerusform"); while(!numerusEelem.isNull()) { numerusEelem.removeChild(numerusEelem.firstChild()); numerusEelem.appendChild(doc.createTextNode(sourceText)); numerusEelem = numerusEelem.nextSiblingElement("numerusform"); } } else { translationElem.removeChild(translationElem.firstChild()); translationElem.appendChild(doc.createTextNode(sourceText)); } translationElem.removeAttribute("type"); } messageElem = messageElem.nextSiblingElement("message"); } contextElem = contextElem.nextSiblingElement("context"); } srcFile.close(); QFileInfo srcFileInfo(srcDir.absoluteFilePath(srcFile.fileName())); QFile dstFile(dstDir.absoluteFilePath(srcFileInfo.fileName())); if (dstFile.open(QFile::WriteOnly|QFile::Truncate)) { dstFile.write(doc.toByteArray()); dstFile.close(); } else { qWarning("Failed to open destination file '%s' for write.",dstFile.fileName().toLocal8Bit().constData()); } } else { qWarning("Invalid translation source file '%s'.",srcFile.fileName().toLocal8Bit().constData()); } srcFile.close(); } else { qWarning("Could not open translation source file '%s'.",srcFile.fileName().toLocal8Bit().constData()); } } return 0; }
bool synchDirStructures(const QString &srcPath, const QString &dstPath) { bool result = true; bool test = true; QDir srcDir(srcPath); QDir dstDir(dstPath); if (srcDir.canonicalPath() == dstDir.canonicalPath()){ LOG_FREE(Warn, "synchDirStructures", "Cannot synch destination '" << toString(dstPath) << "' with source '" << toString(srcPath) << "' because they resolve to the same location"); return true; // already synched } LOG_FREE(Info, "synchDirStructures", "Synching destination '" << toString(dstPath) << "' with source '" << toString(srcPath) << "'"); // remove all files in dst as well as any directories in dst that are not in src for (const QFileInfo &dstItemInfo : dstDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)) { QString srcItemPath = srcPath + "/" + dstItemInfo.fileName(); QString dstItemPath = dstPath + "/" + dstItemInfo.fileName(); QFileInfo srcItemInfo = QFileInfo(srcItemPath); if (dstItemInfo.isDir()){ if (srcItemInfo.exists() && srcItemInfo.isDir()){ // directory also exists in source test = synchDirStructures(srcItemPath, dstItemPath); if (!test){ LOG_FREE(Error, "synchDirStructures", "Failed to synch destination '" << toString(dstItemPath) << "' with source '" << toString(srcItemPath) << "'"); result = false; // DLM: do we really want to give up here? //return result; } }else{ // directory does not exist in source test = removeDir(dstItemPath); if (!test){ LOG_FREE(Error, "synchDirStructures", "Failed to remove directory '" << toString(dstItemPath) << "'"); result = false; // DLM: do we really want to give up here? //return result; } } }else if (dstItemInfo.isFile()){ test = QFile::remove(dstItemInfo.absoluteFilePath()); if (!test){ LOG_FREE(Error, "synchDirStructures", "Failed to remove file '" << toString(dstItemInfo.absoluteFilePath()) << "'"); result = false; // DLM: do we really want to give up here? //return result; } } } return result; }
int main(int argc, char *argv[]) { #if QT_VERSION < 0x050000 qInstallMsgHandler(myMessageHandler); #else qInstallMessageHandler(myMessageHandler); #endif QCoreApplication app(argc, argv); if (argc != 2) { qCritical("Usage: autotranslate <target-dir>"); return -1; } QDir srcDir(app.arguments().value(1),"*.ts",QDir::Name,QDir::Files); if (!srcDir.exists()) { qCritical("Source directory '%s' not found.",srcDir.dirName().toLocal8Bit().constData()); return -1; } QDirIterator srcIt(srcDir); while (srcIt.hasNext()) { QFile srcFile(srcIt.next()); if (srcFile.open(QFile::ReadOnly)) { QDomDocument doc; if (doc.setContent(&srcFile,true)) { qDebug("Generation auto translation from '%s'.",srcFile.fileName().toLocal8Bit().constData()); QDomElement rootElem = doc.firstChildElement("TS"); rootElem.setAttribute("language",rootElem.attribute("sourcelanguage","en")); QDomElement contextElem = rootElem.firstChildElement("context"); while(!contextElem.isNull()) { QDomElement messageElem = contextElem.firstChildElement("message"); while(!messageElem.isNull()) { QDomElement sourceElem = messageElem.firstChildElement("source"); QDomElement translationElem = messageElem.firstChildElement("translation"); if (!sourceElem.isNull() && !translationElem.isNull()) if (translationElem.attribute("type")=="unfinished" && translationElem.text().isEmpty()) { QString sourceText = sourceElem.text(); if (messageElem.attribute("numerus") == "yes") qWarning("Untranslated numerus message: \"%s\"", sourceText.toLocal8Bit().constData()); else { translationElem.removeChild(translationElem.firstChild()); translationElem.appendChild(doc.createTextNode(sourceText)); translationElem.removeAttribute("type"); } } messageElem = messageElem.nextSiblingElement("message"); } contextElem = contextElem.nextSiblingElement("context"); } srcFile.close(); if (srcFile.open(QFile::WriteOnly|QFile::Truncate)) { srcFile.write(doc.toByteArray()); srcFile.close(); } else qWarning("Failed to open destination file '%s' for write.",srcFile.fileName().toLocal8Bit().constData()); } else qWarning("Invalid translation source file '%s'.",srcFile.fileName().toLocal8Bit().constData()); srcFile.close(); } else qWarning("Could not open translation source file '%s'.",srcFile.fileName().toLocal8Bit().constData()); } return 0; }
/** reads the configuration file .cuterc*/ void readConfig() { QDir dir = QDir::home(); if( !dir.cd(".cute") ){ dir.cd(".cute"); QFileInfo fi(dir, ".cute"); if(fi.exists()){ if(fi.isDir()) QMessageBox::warning(qApp->mainWidget(), "CUTE", "Cannot cd into .cute"); else QMessageBox::warning(qApp->mainWidget(), "CUTE", "Cannot create directory"); } else{ QMessageBox::information(qApp->mainWidget(), "CUTE", "Creating ~/.cute directory"); if(!dir.mkdir(".cute")) QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute directory"); else{ dir.cd(".cute"); if(!dir.mkdir("scripts")) QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute/scripts directory"); if(!dir.mkdir("macros")) QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute/macros directory"); if(!dir.mkdir("sessions")) QMessageBox::information(qApp->mainWidget(), "CUTE", "Could not create ~/.cute/sessions directory"); } } } // if cute version >= 0.1.6 langs dir is required if( !QDir(QDir::homeDirPath()+QDir::separator()+".cute"+QDir::separator()+"langs").exists() ) { QDir destDir = QDir::home(); destDir.cd(".cute"); destDir.mkdir("langs"); destDir.cd("langs"); QDir srcDir(LANG_DIR); QString data; QStringList dirList = srcDir.entryList(); for( int i = 2; i < dirList.count(); i++) if( QFileInfo(srcDir.absPath()+QDir::separator()+dirList[i]).isFile()) { QFile srcFile(srcDir.absPath()+QDir::separator()+dirList[i]); QFile destFile(destDir.absPath()+QDir::separator()+dirList[i]); if(destFile.exists()) continue; QTextStream destStream(&destFile); QTextStream srcStream(&srcFile); srcFile.open(IO_ReadOnly); destFile.open(IO_WriteOnly); data = srcStream.read(); destStream << data; srcFile.close(); destFile.close(); } } QFile file(QDir::homeDirPath()+"/.cuterc"); if(!file.exists()){ QMessageBox::information(qApp->mainWidget(), "CUTE", "Creating ~/.cuterc"); file.open(IO_ReadOnly); file.close(); return; } //FILE *c_file = fopen("/home/heiko/.cuterc", "r"); //PyRun_SimpleFile(c_file, ".cuterc"); QString const_cmd("execfile(\".cuterc\")\n"); dir = QDir::current(); QDir::setCurrent( QDir::homeDirPath() ); char *cmd = new char[1024]; strcpy(cmd, const_cmd.latin1()); PyRun_SimpleString(cmd); // read language config files QDir langDir = QDir(QDir::homeDirPath()+QDir::separator()+".cute"+QDir::separator()+"langs"); QStringList langEntryList = langDir.entryList(); QString langFile; for( int i = 2; i < langEntryList.count(); i++ ){ QString langFile = langDir.absPath()+QDir::separator()+langEntryList[i]; QFileInfo fi(langDir, langFile); if(fi.isFile()){ langFile = QString("execfile(\"")+langFile+QString("\")\n"); char *cmd = strdup(langFile); PyRun_SimpleString( cmd ); } } QDir::setCurrent( dir.absPath() ); }