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())));
}
Пример #3
0
// =============================================================================
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;
}
Пример #4
0
// =============================================================================
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;
        }
    }
}
Пример #6
0
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(&ltime);

	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;
}