void ImageImporter::slotUpdateDestExample() { QString tmp = QString("<b></b>%1/<b>%2</b>/%3") .arg(m_cmbDestBasefolder->currentText()) .arg(m_txtDestSubfolders->text()) .arg(m_txtDestFilename->text()); m_lblDestExampleString->setText(replaceStrings(tmp, 0L, QRegExp(m_txtSourceFilename->text(), !m_chkIgnoreCase->isChecked()))); }
void ImageImporter::slotUpdateArchiveExample() { QString tmp = QString("<b></b>%1/<b>%2</b>/%3") .arg(m_txtArchiveBaseFolder->text()) .arg(m_txtArchiveSubfolders->text()) .arg(m_txtArchiveFilename->text()); m_lblArchiveExampleString->setText(replaceStrings(tmp, 0L, QRegExp(m_txtSourceFilename->text(), !m_chkIgnoreCase->isChecked()))); }
// ============================================================================= csvResult* csvRead(const char *filename, const char *separator, const char *decimal, const char **toreplace, int sizetoreplace, const char *regexpcomments, int header) { wchar_t *expandedFilename = NULL; wchar_t *wideFilename = NULL; csvResult *result = NULL; int fd = 0; int f_swap = 0; double res = 0.0; int errMOPEN = MOPEN_INVALID_STATUS; int errMGETL = MGETL_ERROR; wchar_t **pwstLines = NULL; char **pstLines = NULL; int nblines = 0; char **replacedInLines = NULL; char **pComments = NULL; int nbComments = 0; if ((filename == NULL) || (separator == NULL) || (decimal == NULL)) { return NULL; } wideFilename = to_wide_string((char*)filename); expandedFilename = expandPathVariableW(wideFilename); FREE(wideFilename); if (!FileExistW(expandedFilename)) { result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { result->err = CSV_READ_FILE_NOT_EXIST; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } FREE(expandedFilename); return result; } errMOPEN = mopen(expandedFilename, L"rt", f_swap, &fd); // rt = read only if (expandedFilename) { FREE(expandedFilename); expandedFilename = NULL; } if (errMOPEN != MOPEN_NO_ERROR) { result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { result->err = CSV_READ_MOPEN_ERROR; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } return result; } if (header != 0) { mgetl(fd, header, &nblines, &errMGETL); } pwstLines = mgetl(fd, -1, &nblines, &errMGETL); pstLines = (char**)MALLOC(sizeof(char*) * nblines); { int i = 0; for (i = 0 ; i < nblines ; i++) { pstLines[i] = wide_string_to_UTF8(pwstLines[i]); } } mclose(fd); if (errMGETL != MGETL_NO_ERROR) { if (pwstLines) { freeArrayOfWideString(pwstLines, nblines); pwstLines = NULL; } result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { result->err = CSV_READ_READLINES_ERROR; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } return result; } if (regexpcomments) { int iErr = 0; pComments = extractComments((const char**)pstLines, nblines, regexpcomments, &nbComments, &iErr); if ((iErr == CAN_NOT_COMPILE_PATTERN) || (iErr == DELIMITER_NOT_ALPHANUMERIC)) { result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { if ((iErr == CAN_NOT_COMPILE_PATTERN) || (iErr == DELIMITER_NOT_ALPHANUMERIC)) { iErr = CSV_READ_REGEXP_ERROR; } result->err = (csvReadError)iErr; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } return result; } if (pComments) { char **pCleanedLines = NULL; int nbCleanedLines = 0; int i = 0; pCleanedLines = removeComments((const char**)pstLines, nblines, (const char*)regexpcomments, &nbCleanedLines, &iErr); if (pCleanedLines) { if (pwstLines) { freeArrayOfWideString(pwstLines, nblines); pwstLines = NULL; } FREE(pstLines); pstLines = pCleanedLines; nblines = nbCleanedLines; } } } if (toreplace && (sizetoreplace > 0)) { replacedInLines = replaceStrings((const char**)pstLines, nblines, toreplace, sizetoreplace); if (replacedInLines) { freeArrayOfString(pstLines, nblines); pstLines = replacedInLines; } } result = csvTextScan((const char**)pstLines, nblines, (const char*)separator, (const char*)decimal); freeArrayOfString(pstLines, nblines); freeArrayOfWideString(pwstLines, nblines); if (result) { result->pstrComments = pComments; result->nbComments = nbComments; } else { freeArrayOfString(pComments, nbComments); } return result; }
// ============================================================================= csvResult* csvRead(const char *filename, const char *separator, const char *decimal, const char **toreplace, int sizetoreplace, const char *regexpcomments) { char *expandedFilename = NULL; csvResult *result = NULL; int fd = 0; int f_swap = 0; double res = 0.0; int errMOPEN = MOPEN_INVALID_STATUS; int errMGETL = MGETL_ERROR; double dErrClose = 0.; char **lines = NULL; int nblines = 0; char **replacedInLines = NULL; char **pComments = NULL; int nbComments = 0; if ((filename == NULL) || (separator == NULL) || (decimal == NULL)) { return NULL; } expandedFilename = expandPathVariable((char*)filename); if (!FileExist(expandedFilename)) { result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { result->err = CSV_READ_FILE_NOT_EXIST; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } if (expandedFilename) { FREE(expandedFilename); expandedFilename = NULL; } return result; } C2F(mopen)(&fd, expandedFilename, (char*)READ_ONLY_TEXT_MODE, &f_swap, &res, &errMOPEN); if (expandedFilename) { FREE(expandedFilename); expandedFilename = NULL; } if (errMOPEN != MOPEN_NO_ERROR) { result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { result->err = CSV_READ_MOPEN_ERROR; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } return result; } lines = mgetl(fd, -1, &nblines, &errMGETL); C2F(mclose)(&fd, &dErrClose); if (errMGETL != MGETL_NO_ERROR) { if (lines) { freeArrayOfString(lines, nblines); lines = NULL; } result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { result->err = CSV_READ_READLINES_ERROR; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } return result; } if (regexpcomments) { int iErr = 0; pComments = extractComments((const char**)lines, nblines, (const char*)regexpcomments, &nbComments, &iErr); if ((iErr == CAN_NOT_COMPILE_PATTERN) || (iErr == DELIMITER_NOT_ALPHANUMERIC)) { result = (csvResult*)(MALLOC(sizeof(csvResult))); if (result) { if ((iErr == CAN_NOT_COMPILE_PATTERN) || (iErr == DELIMITER_NOT_ALPHANUMERIC)) { iErr = CSV_READ_REGEXP_ERROR; } result->err = (csvReadError)iErr; result->m = 0; result->n = 0; result->pstrValues = NULL; result->pstrComments = NULL; result->nbComments = 0; } return result; } if (pComments) { char **pCleanedLines = NULL; int nbCleanedLines = 0; int i = 0; pCleanedLines = removeComments((const char**)lines, nblines, (const char*)regexpcomments, &nbCleanedLines, &iErr); if (pCleanedLines) { FREE(lines); lines = pCleanedLines; nblines = nbCleanedLines; } } } if (toreplace && (sizetoreplace > 0)) { replacedInLines = replaceStrings((const char**)lines, nblines, toreplace, sizetoreplace); if (replacedInLines) { freeArrayOfString(lines, nblines); lines = replacedInLines; } } result = csvTextScan((const char**)lines, nblines, (const char*)separator, (const char*)decimal); if (lines) { freeArrayOfString(lines, nblines); lines = NULL; } if (result) { result->pstrComments = pComments; result->nbComments = nbComments; } return result; }
void ImageImporter::importFiles(QFileInfoList* lstFiles, const QString& baseFolder, const QString& subfolder, const QString& fileName, bool lowercaseFileNames, bool moveFiles, DlgImageImporterStatus* dlgStatus) { QRegExp re(m_txtSourceFilename->text(), !m_chkIgnoreCase->isChecked()); if (!re.isValid()) { dlgStatus->appendErrorMessage(i18n("Invalid Regular Expression!")); dlgStatus->setCurrentMode(DlgImageImporterStatus::ModeAbort, i18n("Aborted!")); return; } //check if the basedir exists QDir bfd(baseFolder); if (!bfd.exists()) { if (!ImageImporter::mkpath(bfd.absPath())) { dlgStatus->appendErrorMessage(i18n("Could not create base path!")); dlgStatus->setCurrentMode(DlgImageImporterStatus::ModeAbort, i18n("Aborted!")); return; } } QFileInfo* fi; for ( fi = lstFiles->first(); fi; fi = lstFiles->next() ) { dlgStatus->incProgress(); QString sf = replaceStrings( subfolder, fi, re ); if (sf.isEmpty()) { dlgStatus->appendErrorMessage(QString(i18n("Image \'%1\' does not contain exif data, skipping!")) .arg(fi->absFilePath())); continue; } QString fn = replaceStrings( fileName, fi, re ); if (lowercaseFileNames) { fn = fn.lower(); } //now check if the directories exists ... or create them... QDir sfd(bfd.absPath() + "/" + sf); if (!sfd.exists()) { if (!ImageImporter::mkpath(sfd.absPath())) { dlgStatus->appendErrorMessage(QString(i18n("Could not create subfolder for image \'%1\'")) .arg(fi->absFilePath())); continue; } } QFileInfo toFile(sfd.absPath() + "/" + fn); if (toFile.exists()) { dlgStatus->appendErrorMessage(QString(i18n("Image \'%1\' already exists, not imported!")) .arg(fi->absFilePath())); continue; } if (moveFiles) { ImageImporter::move_file( fi->absFilePath(), toFile.absFilePath() ); } else { ImageImporter::copy_file( fi->absFilePath(), toFile.absFilePath() ); } if (dlgStatus->wasCanceled()) { return; } } }
bool DoorCreator::createDoor(const char *name, const char *partType, const char * modelFilename, bool singleSide, const char *leftLayer, const char *rightLayer, int blockRadius) { fb_assert(name != NULL); fb_assert(partType != NULL); fb_assert(modelFilename != NULL); fb_assert(leftLayer != NULL); fb_assert(rightLayer != NULL); fb_assert(strlen(partType) >= 4 && strlen(partType) <= 7); time_t ltime; time(<ime); unsigned int timeStamp = ltime; int slen = strlen(partType); char *partTypeLowerCase = new char[strlen(partType) + 1]; // (this leaks, so what.) for (int i = 0; i < slen; i++) { partTypeLowerCase[i] = tolower(partType[i]); } partTypeLowerCase[slen] = '\0'; #ifdef LEGACY_FILES //std::string doorCreatePropertiesFilename = std::string("Editor/door_create_properties.txt"); std::string doorMacroTemplateFilename = std::string("Editor/Dev/door_macro_template.txt"); std::string doorMacroIncludesFilename = std::string("Editor/Dev/door_macro_includes.h"); std::string doorMacroFilename = std::string("Editor/Dev/Doors/door_macro_") + partTypeLowerCase + ".h"; std::string doorEditorUnitFilename = std::string("Editor/Units/Doors/Units_door_") + partTypeLowerCase + ".fbt"; std::string doorEditorUnitTemplateFilename = std::string("Editor/Units/Doors/Units_door_template.txt"); std::string doorEditorUnitIncludesFilename = std::string("Editor/Units/Units_doors.fbt"); std::string doorPartFilename = std::string("Data/Parts/Solids/Doors/") + partTypeLowerCase + ".dhp"; std::string doorPartTemplateFilename = std::string("Data/Parts/Solids/Doors/door_template.txt"); std::string doorUnitFilename = std::string("Data/Units/") + partTypeLowerCase + ".dhu"; std::string doorUnitTemplateFilename = std::string("Data/Units/door_template.txt"); #else //std::string doorCreatePropertiesFilename = std::string("editor/door_create_properties.txt"); std::string doorMacroTemplateFilename = std::string("editor/dev/door_macro_template.txt"); std::string doorMacroIncludesFilename = std::string("editor/dev/door_macro_includes.h"); std::string doorMacroFilename = std::string("editor/dev/doors/door_macro_") + partTypeLowerCase + ".h"; std::string doorEditorUnitFilename = std::string("editor/units/doors/units_door_") + partTypeLowerCase + ".fbt"; std::string doorEditorUnitTemplateFilename = std::string("editor/units/doors/units_door_template.txt"); std::string doorEditorUnitIncludesFilename = std::string("editor/units/units_doors.fbt"); std::string doorPartFilename = std::string("data/parts/solids/doors/") + partTypeLowerCase + ".dhp"; std::string doorPartTemplateFilename = std::string("data/parts/solids/doors/door_template.txt"); std::string doorUnitFilename = std::string("data/units/") + partTypeLowerCase + ".dhu"; std::string doorUnitTemplateFilename = std::string("data/units/door_template.txt"); #endif FILE *f = fopen(doorPartFilename.c_str(), "rb"); if (f != NULL) { fclose(f); return false; } util::TextFileModifier tfm; bool success = false; // create door part type conf file success = tfm.loadFile(doorPartTemplateFilename.c_str()); fb_assert(success); replaceStrings(tfm, name, partType, modelFilename, singleSide, leftLayer, rightLayer, partTypeLowerCase, blockRadius, timeStamp); tfm.saveFileAs(doorPartFilename.c_str()); tfm.closeFile(); // create door unit type conf file success = tfm.loadFile(doorUnitTemplateFilename.c_str()); fb_assert(success); replaceStrings(tfm, name, partType, modelFilename, singleSide, leftLayer, rightLayer, partTypeLowerCase, blockRadius, timeStamp); tfm.saveFileAs(doorUnitFilename.c_str()); tfm.closeFile(); // create door macro file success = tfm.loadFile(doorMacroTemplateFilename.c_str()); fb_assert(success); replaceStrings(tfm, name, partType, modelFilename, singleSide, leftLayer, rightLayer, partTypeLowerCase, blockRadius, timeStamp); tfm.saveFileAs(doorMacroFilename.c_str()); tfm.closeFile(); // create door editor unit conf file success = tfm.loadFile(doorEditorUnitTemplateFilename.c_str()); fb_assert(success); replaceStrings(tfm, name, partType, modelFilename, singleSide, leftLayer, rightLayer, partTypeLowerCase, blockRadius, timeStamp); tfm.saveFileAs(doorEditorUnitFilename.c_str()); tfm.closeFile(); // add include line to editor dev macros success = tfm.loadFile(doorMacroIncludesFilename.c_str()); fb_assert(success); replaceStrings(tfm, name, partType, modelFilename, singleSide, leftLayer, rightLayer, partTypeLowerCase, blockRadius, timeStamp); tfm.saveFileAs(doorMacroIncludesFilename.c_str()); tfm.closeFile(); // add include line to editor unit confs success = tfm.loadFile(doorEditorUnitIncludesFilename.c_str()); fb_assert(success); replaceStrings(tfm, name, partType, modelFilename, singleSide, leftLayer, rightLayer, partTypeLowerCase, blockRadius, timeStamp); tfm.saveFileAs(doorEditorUnitIncludesFilename.c_str()); tfm.closeFile(); return true; }