コード例 #1
0
ファイル: Components.cpp プロジェクト: Purplenigma/oovaide
OovStringVec ComponentTypesFile::getComponentFiles(OovStringRef const compName,
        OovStringRef const tagStr, bool getNested) const
    {
    OovStringVec files;
    OovStringVec names = getComponentNames();
    OovString parentName = compName;
    for(auto const &name : names)
        {
        bool match = false;
        if(getNested)
            {
            if(strcmp(compName, Project::getRootComponentName()) == 0)
                {
                match = true;
                }
            else
                {
                match = compareComponentNames(parentName, name);
                }
            }
        else
            {
            match = (parentName == name);
            }
        if(match)
            {
            OovString tag = ComponentTypesFile::getCompTagName(name, tagStr);
            OovString val = mCompSourceListFile.getValue(tag);
            OovStringVec newFiles = CompoundValueRef::parseString(val);
            files.insert(files.end(), newFiles.begin(), newFiles.end());
            }
        }
    return files;
    }
コード例 #2
0
ファイル: OptionsDialog.cpp プロジェクト: Purplenigma/oovaide
void OptionsDialog::addConfig()
    {
    GtkEntry *newNameEntry = GTK_ENTRY(Builder::getBuilder()->getWidget("NewConfigNameEntry"));

    // Update the build config option
    std::string compStr = mProjectOptions.getValue(OptBuildConfigs);
    CompoundValue compVal;
    compVal.parseString(compStr);
    OovString newName = Gui::getText(newNameEntry);

    OovStringVec cfgs = compVal;
    cfgs.push_back(BuildConfigAnalysis);
    cfgs.push_back(BuildConfigDebug);
    cfgs.push_back(BuildConfigRelease);
    bool found = std::find(cfgs.begin(), cfgs.end(), newName) != cfgs.end();
    if(!found)
        {
        compVal.addArg(newName);
        mProjectOptions.setNameValue(OptBuildConfigs, compVal.getAsString());

        // Leave what is on the screen, and change the config name.Save the
        // screen data to the new config.
        mCurrentBuildConfig = newName;
    //    ScreenOptions options(mCurrentBuildConfig);
     //   options.screenToOptions();

        updateBuildConfig();
        }
    else
        Gui::messageBox("Configuration already exists", GTK_MESSAGE_INFO);
    }
コード例 #3
0
ファイル: Components.cpp プロジェクト: Purplenigma/oovaide
OovStringVec ComponentTypesFile::getComponentNames(bool definedComponentsOnly) const
    {
    OovStringVec compNames = CompoundValueRef::parseString(
            mCompTypesFile.getValue("Components"));
    if(definedComponentsOnly)
        {
        compNames.erase(std::remove_if(compNames.begin(), compNames.end(),
            [this](OovString &name)
            { return(getComponentType(name) == CT_Unknown); }), compNames.end());
        }
    return compNames;
    }
コード例 #4
0
ファイル: oovCMaker.cpp プロジェクト: 8l/oovcde
OovStringVec CMaker::getCompSources(OovStringRef const compName)
    {
    OovStringVec sources = mCompTypes.getComponentSources(compName);
    OovString compPath = mCompTypes.getComponentAbsolutePath(compName);
    for(auto &src : sources)
        {
        src.erase(0, compPath.length());
        }
    std::sort(sources.begin(), sources.end(), compareNoCase);
    return sources;
    }
コード例 #5
0
ファイル: Components.cpp プロジェクト: Purplenigma/oovaide
void ComponentsFile::parseProjRefs(OovStringRef const arg, OovString &rootDir,
        OovStringVec &excludes)
    {
    excludes.clear();
    OovStringVec tokens = StringSplit(arg, '!');
    if(rootDir.size() == 0)
        rootDir = tokens[0];
    if(tokens.size() > 1)
        {
        excludes.resize(tokens.size()-1);
        std::copy(tokens.begin()+1, tokens.end(), excludes.begin());
        }
    }
コード例 #6
0
ファイル: PackagesDialogs.cpp プロジェクト: 8l/oovcde
void ProjectPackagesDialog::displayAddPackageDialog()
    {
    AddPackageDialog dlg;
    if(dlg.run(true))
        {
        OovStringVec packages = mProjectPackagesList.getText();

        Package pkg = dlg.getPackage();
        if(std::find(packages.begin(), packages.end(), pkg.getPkgName()) ==
                packages.end())
            {
            mProjectPackages.insertPackage(pkg);
            }
        else
            {
            Gui::messageBox("Package already exists");
            }
        updatePackageList();
        mProjectPackagesList.setSelected(pkg.getPkgName());
#ifndef __linux__
        winScanDirectories();
#endif
        }
    }
コード例 #7
0
ファイル: Highlighter.cpp プロジェクト: animatedb/oovaide
static int getErrorPosition(OovStringRef const line, int &charOffset)
    {
    int lineNum = -1;
    OovStringVec tokens = StringSplit(line, ':');
    auto iter = std::find_if(tokens.begin(), tokens.end(),
        [](OovStringRef const tok)
        { return(isdigit(tok[0])); }
        );
    int starti = iter-tokens.begin();
    if(tokens[starti].getInt(0, INT_MAX, lineNum))
        {
        if(static_cast<unsigned int>(starti+1) < tokens.size())
            {
            tokens[starti+1].getInt(0, INT_MAX, charOffset);
            }
        }
    return lineNum;
    }
コード例 #8
0
ファイル: oovCMaker.cpp プロジェクト: 8l/oovcde
void CMaker::makeComponentFile(OovStringRef const compName,
    ComponentTypesFile::eCompTypes compType,
    OovStringVec const &sources, OovStringRef const destName)
    {
    OovString str;
    if(mVerbose)
        printf("Processing %s\n      %s\n", compName.getStr(), destName.getStr());
    if(compType == ComponentTypesFile::CT_Program)
        {
        if(mVerbose)
            printf("  Executable\n");

        addCommandAndNames(CT_Exec, compName, sources, str);

        addLibsAndIncs(compName, str);

        str += "install(TARGETS ";
        str += compName;
        str += "\n  EXPORT ";
        str += mProjectName;
        str += "Targets";
        str += "\n  RUNTIME DESTINATION \"${INSTALL_BIN_DIR}\" COMPONENT lib)\n";
        }
    else if(compType == ComponentTypesFile::CT_SharedLib)
        {
        if(mVerbose)
            printf("  SharedLib\n");
        addCommandAndNames(CT_Shared, compName, sources, str);

        addLibsAndIncs(compName, str);

        str += "install(TARGETS ";
        str += compName;
        str += "\n  LIBRARY DESTINATION \"${INSTALL_LIB_DIR}\" COMPONENT lib)\n";
        }
    else if(compType == ComponentTypesFile::CT_StaticLib)
        {
        if(mVerbose)
            printf("  Library\n");
        OovStringVec headers = mCompTypes.getComponentIncludes(compName);
        discardDirs(headers);

        OovStringVec allFiles = headers;
        allFiles.insert(allFiles.end(), sources.begin(), sources.end() );
        std::sort(allFiles.begin(), allFiles.end(), compareNoCase);
        if(sources.size() == 0)
            {
            addCommandAndNames(CT_Interface, compName, allFiles, str);
            str += "set_target_properties(";
            str += compName;
            str += " PROPERTIES LINKER_LANGUAGE CXX)\n";
            }
        else
            addCommandAndNames(CT_Static, compName, allFiles, str);

        addCommandAndNames(CT_TargHeaders, compName, headers, str);


        str += "install(TARGETS ";
        str += compName;
        str += "\n  EXPORT ";
        str += mProjectName;
        str += "Targets";
        str += "\n  ARCHIVE DESTINATION \"${INSTALL_LIB_DIR}\" COMPONENT lib";
        str += "\n  PUBLIC_HEADER DESTINATION \"${INSTALL_INCLUDE_DIR}/";
        str += mProjectName;
        str += "\" COMPONENT dev)\n";
        }
    writeFile(destName, str);
    }