* save/load compiler sets ok
This commit is contained in:
parent
5a5b644746
commit
c85130ea76
|
@ -55,11 +55,11 @@ int main(int argc, char *argv[])
|
||||||
SystemConsts systemConsts;
|
SystemConsts systemConsts;
|
||||||
pSystemConsts = &systemConsts;
|
pSystemConsts = &systemConsts;
|
||||||
|
|
||||||
Settings::CompilerSet testSet("e:/workspace/contributes/Dev-CPP/MinGW32_GCC92");
|
// Settings::CompilerSet testSet("e:/workspace/contributes/Dev-CPP/MinGW32_GCC92");
|
||||||
qDebug() << testSet.binDirs();
|
// qDebug() << testSet.binDirs();
|
||||||
qDebug() << testSet.CIncludeDirs();
|
// qDebug() << testSet.CIncludeDirs();
|
||||||
qDebug() << testSet.CppIncludeDirs();
|
// qDebug() << testSet.CppIncludeDirs();
|
||||||
qDebug() << testSet.LibDirs();
|
// qDebug() << testSet.LibDirs();
|
||||||
|
|
||||||
pSettings = createAppSettings();
|
pSettings = createAppSettings();
|
||||||
if (pSettings == nullptr) {
|
if (pSettings == nullptr) {
|
||||||
|
@ -67,8 +67,15 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
auto settings = std::unique_ptr<Settings>(pSettings);
|
auto settings = std::unique_ptr<Settings>(pSettings);
|
||||||
|
|
||||||
|
//settings->compilerSets().addSets("e:/workspace/contributes/Dev-CPP/MinGW32_GCC92");
|
||||||
|
settings->compilerSets().loadSets();
|
||||||
|
// qDebug()<<settings->compilerSets().size();
|
||||||
|
// qDebug()<<settings->compilerSets().list().at(0)->binDirs();
|
||||||
MainWindow mainWindow;
|
MainWindow mainWindow;
|
||||||
pMainWindow = &mainWindow;
|
pMainWindow = &mainWindow;
|
||||||
mainWindow.show();
|
mainWindow.show();
|
||||||
return app.exec();
|
int retCode = app.exec();
|
||||||
|
// save settings
|
||||||
|
settings->compilerSets().saveSets();
|
||||||
|
return retCode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,8 @@ Settings* pSettings;
|
||||||
Settings::Settings(const QString &filename):
|
Settings::Settings(const QString &filename):
|
||||||
mSettings(filename,QSettings::IniFormat),
|
mSettings(filename,QSettings::IniFormat),
|
||||||
mDirs(this),
|
mDirs(this),
|
||||||
mEditor(this)
|
mEditor(this),
|
||||||
|
mCompilerSets(this)
|
||||||
{
|
{
|
||||||
// default values for editors
|
// default values for editors
|
||||||
mEditor.setDefault(SETTING_EDITOR_DEFAULT_ENCODING, QTextCodec::codecForLocale()->name());
|
mEditor.setDefault(SETTING_EDITOR_DEFAULT_ENCODING, QTextCodec::codecForLocale()->name());
|
||||||
|
@ -60,6 +61,11 @@ Settings::Editor &Settings::editor()
|
||||||
return mEditor;
|
return mEditor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Settings::CompilerSets &Settings::compilerSets()
|
||||||
|
{
|
||||||
|
return mCompilerSets;
|
||||||
|
}
|
||||||
|
|
||||||
Settings::Dirs::Dirs(Settings *settings):
|
Settings::Dirs::Dirs(Settings *settings):
|
||||||
_Base(settings, SETTING_DIRS)
|
_Base(settings, SETTING_DIRS)
|
||||||
{
|
{
|
||||||
|
@ -184,11 +190,14 @@ void Settings::CompilerSet::addOption(const QString &name, const QString section
|
||||||
mOptions.push_back(pOption);
|
mOptions.push_back(pOption);
|
||||||
}
|
}
|
||||||
|
|
||||||
PCompilerOption& Settings::CompilerSet::findOption(const QString &setting)
|
PCompilerOption Settings::CompilerSet::findOption(const QString &setting)
|
||||||
{
|
{
|
||||||
return *std::find_if(mOptions.begin(),mOptions.end(),[setting](PCompilerOption p){
|
for (PCompilerOption pOption : mOptions) {
|
||||||
return (p->setting == setting);
|
if (pOption->setting == setting) {
|
||||||
});
|
return pOption;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return PCompilerOption();
|
||||||
}
|
}
|
||||||
|
|
||||||
char Settings::CompilerSet::getOptionValue(const QString &setting)
|
char Settings::CompilerSet::getOptionValue(const QString &setting)
|
||||||
|
@ -224,7 +233,7 @@ void Settings::CompilerSet::setCCompilerName(const QString &name)
|
||||||
mCCompilerName = name;
|
mCCompilerName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &Settings::CompilerSet::CppCompilerName() const
|
const QString &Settings::CompilerSet::cppCompilerName() const
|
||||||
{
|
{
|
||||||
return mCppCompilerName;
|
return mCppCompilerName;
|
||||||
}
|
}
|
||||||
|
@ -234,7 +243,7 @@ void Settings::CompilerSet::setCppCompilerName(const QString &name)
|
||||||
mCppCompilerName = name;
|
mCppCompilerName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &Settings::CompilerSet::MakeName() const
|
const QString &Settings::CompilerSet::makeName() const
|
||||||
{
|
{
|
||||||
return mMakeName;
|
return mMakeName;
|
||||||
}
|
}
|
||||||
|
@ -244,7 +253,7 @@ void Settings::CompilerSet::setMakeName(const QString &name)
|
||||||
mMakeName = name;
|
mMakeName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &Settings::CompilerSet::DebuggerName() const
|
const QString &Settings::CompilerSet::debuggerName() const
|
||||||
{
|
{
|
||||||
return mDebuggerName;
|
return mDebuggerName;
|
||||||
}
|
}
|
||||||
|
@ -254,7 +263,7 @@ void Settings::CompilerSet::setDebuggerName(const QString &name)
|
||||||
mDebuggerName = name;
|
mDebuggerName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &Settings::CompilerSet::ProfilerName() const
|
const QString &Settings::CompilerSet::profilerName() const
|
||||||
{
|
{
|
||||||
return mProfilerName;
|
return mProfilerName;
|
||||||
}
|
}
|
||||||
|
@ -264,6 +273,16 @@ void Settings::CompilerSet::setProfilerName(const QString &name)
|
||||||
mProfilerName = name;
|
mProfilerName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QString &Settings::CompilerSet::resourceCompilerName() const
|
||||||
|
{
|
||||||
|
return mResourceCompilerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSet::setResourceCompilerName(const QString &name)
|
||||||
|
{
|
||||||
|
mResourceCompilerName = name;
|
||||||
|
}
|
||||||
|
|
||||||
QStringList &Settings::CompilerSet::binDirs()
|
QStringList &Settings::CompilerSet::binDirs()
|
||||||
{
|
{
|
||||||
return mBinDirs;
|
return mBinDirs;
|
||||||
|
@ -314,6 +333,16 @@ void Settings::CompilerSet::setType(const QString& value)
|
||||||
mType = value;
|
mType = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QString &Settings::CompilerSet::name()
|
||||||
|
{
|
||||||
|
return mName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSet::setName(const QString &value)
|
||||||
|
{
|
||||||
|
mName = value;
|
||||||
|
}
|
||||||
|
|
||||||
const QString &Settings::CompilerSet::folder()
|
const QString &Settings::CompilerSet::folder()
|
||||||
{
|
{
|
||||||
return mFolder;
|
return mFolder;
|
||||||
|
@ -804,7 +833,7 @@ void Settings::CompilerSet::setOptions()
|
||||||
addOption(tr("Use pipes instead of temporary files during compilation (-pipe)"), groupName, true, true, false, 0, "-pipe");
|
addOption(tr("Use pipes instead of temporary files during compilation (-pipe)"), groupName, true, true, false, 0, "-pipe");
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray Settings::CompilerSet::getIniOptions()
|
QByteArray Settings::CompilerSet::iniOptions() const
|
||||||
{
|
{
|
||||||
QByteArray result;
|
QByteArray result;
|
||||||
for (PCompilerOption p:mOptions) {
|
for (PCompilerOption p:mOptions) {
|
||||||
|
@ -834,3 +863,215 @@ bool Settings::CompilerSet::useCustomCompileParams()
|
||||||
{
|
{
|
||||||
return mUseCustomCompileParams;
|
return mUseCustomCompileParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Settings::CompilerSets::CompilerSets(Settings *settings):
|
||||||
|
mSettings(settings),
|
||||||
|
mDefaultIndex(-1)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings::PCompilerSet Settings::CompilerSets::addSet(const Settings::CompilerSet& set)
|
||||||
|
{
|
||||||
|
PCompilerSet p=std::make_shared<CompilerSet>(set);
|
||||||
|
mList.push_back(p);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings::PCompilerSet Settings::CompilerSets::addSet(const QString &folder)
|
||||||
|
{
|
||||||
|
PCompilerSet p=std::make_shared<CompilerSet>(folder);
|
||||||
|
mList.push_back(p);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setReleaseOptions(Settings::PCompilerSet& pSet) {
|
||||||
|
PCompilerOption pOption = pSet->findOption("-O");
|
||||||
|
if (pOption) {
|
||||||
|
pSet->setOption(pOption,'a');
|
||||||
|
}
|
||||||
|
|
||||||
|
pOption = pSet->findOption("-s");
|
||||||
|
if (pOption) {
|
||||||
|
pSet->setOption(pOption,'1');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setDebugOptions(Settings::PCompilerSet& pSet) {
|
||||||
|
PCompilerOption pOption = pSet->findOption("-g3");
|
||||||
|
if (pOption) {
|
||||||
|
pSet->setOption(pOption,'1');
|
||||||
|
}
|
||||||
|
pOption = pSet->findOption("-Wall");
|
||||||
|
if (pOption) {
|
||||||
|
pSet->setOption(pOption,'1');
|
||||||
|
}
|
||||||
|
pOption = pSet->findOption("-Wextra");
|
||||||
|
if (pOption) {
|
||||||
|
pSet->setOption(pOption,'1');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setProfileOptions(Settings::PCompilerSet& pSet) {
|
||||||
|
PCompilerOption pOption = pSet->findOption("-pg");
|
||||||
|
if (pOption) {
|
||||||
|
pSet->setOption(pOption,'1');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSets::addSets(const QString &folder)
|
||||||
|
{
|
||||||
|
if (!directoryExists(folder))
|
||||||
|
return;
|
||||||
|
if (!fileExists(includeTrailingPathDelimiter(folder)+"bin"+QDir::separator()+GCC_PROGRAM)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Default, release profile
|
||||||
|
PCompilerSet baseSet = addSet(folder);
|
||||||
|
QString baseName = baseSet->name();
|
||||||
|
QString platformName;
|
||||||
|
if (baseSet->target() == "x86_64") {
|
||||||
|
platformName = "64-bit";
|
||||||
|
} else {
|
||||||
|
platformName = "32-bit";
|
||||||
|
}
|
||||||
|
baseSet->setName(baseName + " " + platformName + " Release");
|
||||||
|
setReleaseOptions(baseSet);
|
||||||
|
|
||||||
|
baseSet = addSet(folder);
|
||||||
|
baseSet->setName(baseName + " " + platformName + " Debug");
|
||||||
|
setDebugOptions(baseSet);
|
||||||
|
|
||||||
|
baseSet = addSet(folder);
|
||||||
|
baseSet->setName(baseName + " " + platformName + " Profiling");
|
||||||
|
setProfileOptions(baseSet);
|
||||||
|
|
||||||
|
mDefaultIndex = mList.size() - 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSets::clearSets()
|
||||||
|
{
|
||||||
|
for (int i=0;i<mList.size();i++) {
|
||||||
|
mSettings->mSettings.beginGroup(QString(SETTING_COMPILTER_SET).arg(i));
|
||||||
|
mSettings->mSettings.remove("");
|
||||||
|
mSettings->mSettings.endGroup();
|
||||||
|
}
|
||||||
|
mList.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSets::findSets()
|
||||||
|
{
|
||||||
|
addSets(includeTrailingPathDelimiter(mSettings->dirs().app())+"MinGW32");
|
||||||
|
addSets(includeTrailingPathDelimiter(mSettings->dirs().app())+"MinGW64");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSets::saveSets()
|
||||||
|
{
|
||||||
|
for (int i=0;i<mList.size();i++) {
|
||||||
|
saveSet(i);
|
||||||
|
}
|
||||||
|
mSettings->mSettings.beginGroup(SETTING_COMPILTER_SETS);
|
||||||
|
mSettings->mSettings.setValue(SETTING_COMPILTER_SETS_DEFAULT_INDEX,mDefaultIndex);
|
||||||
|
mSettings->mSettings.setValue(SETTING_COMPILTER_SETS_COUNT,mList.size());
|
||||||
|
mSettings->mSettings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSets::loadSets()
|
||||||
|
{
|
||||||
|
mList.clear();
|
||||||
|
mSettings->mSettings.beginGroup(SETTING_COMPILTER_SETS);
|
||||||
|
mDefaultIndex =mSettings->mSettings.value(SETTING_COMPILTER_SETS_DEFAULT_INDEX,-1).toInt();
|
||||||
|
int listSize = mSettings->mSettings.value(SETTING_COMPILTER_SETS_COUNT,0).toInt();
|
||||||
|
mSettings->mSettings.endGroup();
|
||||||
|
for (int i=0;i<listSize;i++) {
|
||||||
|
PCompilerSet pSet=loadSet(i);
|
||||||
|
mList.push_back(pSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings::CompilerSetList &Settings::CompilerSets::list()
|
||||||
|
{
|
||||||
|
return mList;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Settings::CompilerSets::size() const
|
||||||
|
{
|
||||||
|
return mList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
int Settings::CompilerSets::defaultIndex() const
|
||||||
|
{
|
||||||
|
return mDefaultIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSets::setDefaultIndex(int value)
|
||||||
|
{
|
||||||
|
mDefaultIndex = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::CompilerSets::saveSet(int index)
|
||||||
|
{
|
||||||
|
PCompilerSet pSet = mList[index];
|
||||||
|
mSettings->mSettings.beginGroup(QString(SETTING_COMPILTER_SET).arg(index));
|
||||||
|
mSettings->mSettings.setValue("ccompiler", pSet->CCompilerName());
|
||||||
|
mSettings->mSettings.setValue("cppcompiler", pSet->cppCompilerName());
|
||||||
|
mSettings->mSettings.setValue("debugger", pSet->debuggerName());
|
||||||
|
mSettings->mSettings.setValue("make", pSet->makeName());
|
||||||
|
mSettings->mSettings.setValue("windres", pSet->resourceCompilerName());
|
||||||
|
mSettings->mSettings.setValue("profiler", pSet->profilerName());
|
||||||
|
|
||||||
|
// Save option string
|
||||||
|
mSettings->mSettings.setValue("Options", pSet->iniOptions());
|
||||||
|
|
||||||
|
// Save extra 'general' options
|
||||||
|
mSettings->mSettings.setValue("useCustomCompileParams", pSet->useCustomCompileParams());
|
||||||
|
mSettings->mSettings.setValue("customCompileParams", pSet->customCompileParams());
|
||||||
|
mSettings->mSettings.setValue("useCustomLinkParams", pSet->useCustomLinkParams());
|
||||||
|
mSettings->mSettings.setValue("customLinkParams", pSet->customLinkParams());
|
||||||
|
mSettings->mSettings.setValue("StaticLink", pSet->staticLink());
|
||||||
|
mSettings->mSettings.setValue("AddCharset", pSet->autoAddCharsetParams());
|
||||||
|
|
||||||
|
// Paths
|
||||||
|
mSettings->mSettings.setValue("Bins",pSet->binDirs());
|
||||||
|
mSettings->mSettings.setValue("C",pSet->CIncludeDirs());
|
||||||
|
mSettings->mSettings.setValue("Cpp",pSet->CppIncludeDirs());
|
||||||
|
mSettings->mSettings.setValue("Libs",pSet->LibDirs());
|
||||||
|
|
||||||
|
mSettings->mSettings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings::PCompilerSet Settings::CompilerSets::loadSet(int index)
|
||||||
|
{
|
||||||
|
PCompilerSet pSet = std::make_shared<CompilerSet>();
|
||||||
|
mSettings->mSettings.beginGroup(QString(SETTING_COMPILTER_SET).arg(index));
|
||||||
|
pSet->setCCompilerName(mSettings->mSettings.value("ccompiler").toString());
|
||||||
|
pSet->setCppCompilerName(mSettings->mSettings.value("cppcompiler").toString());
|
||||||
|
pSet->setDebuggerName(mSettings->mSettings.value("debugger").toString());
|
||||||
|
pSet->setMakeName(mSettings->mSettings.value("make").toString());
|
||||||
|
pSet->setResourceCompilerName(mSettings->mSettings.value("windres").toString());
|
||||||
|
pSet->setProfilerName(mSettings->mSettings.value("profiler").toString());
|
||||||
|
|
||||||
|
// Save option string
|
||||||
|
pSet->setIniOptions(mSettings->mSettings.value("Options").toByteArray());
|
||||||
|
|
||||||
|
// Save extra 'general' options
|
||||||
|
pSet->setUseCustomCompileParams(mSettings->mSettings.value("useCustomCompileParams").toBool());
|
||||||
|
pSet->setCustomCompileParams(mSettings->mSettings.value("customCompileParams").toString());
|
||||||
|
pSet->setUseCustomLinkParams(mSettings->mSettings.value("useCustomLinkParams").toBool());
|
||||||
|
pSet->setCustomLinkParams(mSettings->mSettings.value("customLinkParams").toString());
|
||||||
|
pSet->setStaticLink(mSettings->mSettings.value("StaticLink").toBool());
|
||||||
|
pSet->setAutoAddCharsetParams(mSettings->mSettings.value("AddCharset").toBool());
|
||||||
|
|
||||||
|
// Paths
|
||||||
|
pSet->binDirs().clear();
|
||||||
|
pSet->binDirs().append(mSettings->mSettings.value("Bins").toStringList());
|
||||||
|
pSet->CIncludeDirs().clear();
|
||||||
|
pSet->CIncludeDirs().append(mSettings->mSettings.value("C").toStringList());
|
||||||
|
pSet->CppIncludeDirs().clear();
|
||||||
|
pSet->CppIncludeDirs().append(mSettings->mSettings.value("Cpp").toStringList());
|
||||||
|
pSet->LibDirs().clear();
|
||||||
|
pSet->LibDirs().append(mSettings->mSettings.value("Libs").toStringList());
|
||||||
|
|
||||||
|
mSettings->mSettings.endGroup();
|
||||||
|
return pSet;
|
||||||
|
}
|
||||||
|
|
|
@ -10,8 +10,12 @@
|
||||||
* gcc -print-search-dirs
|
* gcc -print-search-dirs
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SETTING_DIRS "dirs"
|
#define SETTING_DIRS "Dirs"
|
||||||
#define SETTING_EDITOR "editor"
|
#define SETTING_EDITOR "Editor"
|
||||||
|
#define SETTING_COMPILTER_SETS "CompilerSets"
|
||||||
|
#define SETTING_COMPILTER_SETS_DEFAULT_INDEX "defaultIndex"
|
||||||
|
#define SETTING_COMPILTER_SETS_COUNT "count"
|
||||||
|
#define SETTING_COMPILTER_SET "CompilerSet_%1"
|
||||||
#define SETTING_EDITOR_DEFAULT_ENCODING "default_encoding"
|
#define SETTING_EDITOR_DEFAULT_ENCODING "default_encoding"
|
||||||
#define SETTING_EDITOR_AUTO_INDENT "default_auto_indent"
|
#define SETTING_EDITOR_AUTO_INDENT "default_auto_indent"
|
||||||
|
|
||||||
|
@ -79,21 +83,23 @@ public:
|
||||||
bool isCpp, bool isLinker,
|
bool isCpp, bool isLinker,
|
||||||
int value, const QString& setting,
|
int value, const QString& setting,
|
||||||
const QStringList& choices = QStringList());
|
const QStringList& choices = QStringList());
|
||||||
PCompilerOption& findOption(const QString& setting);
|
PCompilerOption findOption(const QString& setting);
|
||||||
char getOptionValue(const QString& setting);
|
char getOptionValue(const QString& setting);
|
||||||
void setOption(const QString& setting, char valueChar);
|
void setOption(const QString& setting, char valueChar);
|
||||||
void setOption(PCompilerOption& option, char valueChar);
|
void setOption(PCompilerOption& option, char valueChar);
|
||||||
|
|
||||||
const QString& CCompilerName() const;
|
const QString& CCompilerName() const;
|
||||||
void setCCompilerName(const QString& name);
|
void setCCompilerName(const QString& name);
|
||||||
const QString& CppCompilerName() const;
|
const QString& cppCompilerName() const;
|
||||||
void setCppCompilerName(const QString& name);
|
void setCppCompilerName(const QString& name);
|
||||||
const QString& MakeName() const;
|
const QString& makeName() const;
|
||||||
void setMakeName(const QString& name);
|
void setMakeName(const QString& name);
|
||||||
const QString& DebuggerName() const;
|
const QString& debuggerName() const;
|
||||||
void setDebuggerName(const QString& name);
|
void setDebuggerName(const QString& name);
|
||||||
const QString& ProfilerName() const;
|
const QString& profilerName() const;
|
||||||
void setProfilerName(const QString& name);
|
void setProfilerName(const QString& name);
|
||||||
|
const QString& resourceCompilerName() const;
|
||||||
|
void setResourceCompilerName(const QString& name);
|
||||||
|
|
||||||
QStringList& binDirs();
|
QStringList& binDirs();
|
||||||
QStringList& CIncludeDirs();
|
QStringList& CIncludeDirs();
|
||||||
|
@ -106,6 +112,8 @@ public:
|
||||||
void setVersion(const QString& value);
|
void setVersion(const QString& value);
|
||||||
const QString& type();
|
const QString& type();
|
||||||
void setType(const QString& value);
|
void setType(const QString& value);
|
||||||
|
const QString& name();
|
||||||
|
void setName(const QString& value);
|
||||||
const QString& folder();
|
const QString& folder();
|
||||||
void setFolder(const QString& value);
|
void setFolder(const QString& value);
|
||||||
QStringList& defines();
|
QStringList& defines();
|
||||||
|
@ -127,6 +135,10 @@ public:
|
||||||
|
|
||||||
CompilerOptionList& options();
|
CompilerOptionList& options();
|
||||||
|
|
||||||
|
//Converts options to and from memory format
|
||||||
|
QByteArray iniOptions() const;
|
||||||
|
void setIniOptions(const QByteArray& value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int charToValue(char valueChar);
|
int charToValue(char valueChar);
|
||||||
|
|
||||||
|
@ -137,10 +149,6 @@ public:
|
||||||
void setUserInput();
|
void setUserInput();
|
||||||
void setOptions();
|
void setOptions();
|
||||||
|
|
||||||
//Converts options to and from memory format
|
|
||||||
QByteArray getIniOptions();
|
|
||||||
void setIniOptions(const QByteArray& value);
|
|
||||||
|
|
||||||
QByteArray getCompilerOutput(const QString& binDir, const QString& binFile,
|
QByteArray getCompilerOutput(const QString& binDir, const QString& binFile,
|
||||||
const QStringList& arguments);
|
const QStringList& arguments);
|
||||||
private:
|
private:
|
||||||
|
@ -179,6 +187,34 @@ public:
|
||||||
CompilerOptionList mOptions;
|
CompilerOptionList mOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef std::shared_ptr<CompilerSet> PCompilerSet;
|
||||||
|
typedef std::vector<PCompilerSet> CompilerSetList;
|
||||||
|
|
||||||
|
class CompilerSets {
|
||||||
|
public:
|
||||||
|
explicit CompilerSets(Settings* settings);
|
||||||
|
|
||||||
|
PCompilerSet addSet(const CompilerSet& set);
|
||||||
|
PCompilerSet addSet(const QString& folder=QString());
|
||||||
|
|
||||||
|
void addSets(const QString& folder);
|
||||||
|
void clearSets();
|
||||||
|
void findSets();
|
||||||
|
void saveSets();
|
||||||
|
void loadSets();
|
||||||
|
//properties
|
||||||
|
CompilerSetList& list();
|
||||||
|
int size() const;
|
||||||
|
int defaultIndex() const;
|
||||||
|
void setDefaultIndex(int value);
|
||||||
|
private:
|
||||||
|
void saveSet(int index);
|
||||||
|
PCompilerSet loadSet(int index);
|
||||||
|
CompilerSetList mList;
|
||||||
|
int mDefaultIndex;
|
||||||
|
Settings* mSettings;
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Settings(const QString& filename);
|
explicit Settings(const QString& filename);
|
||||||
explicit Settings(Settings&& settings) = delete;
|
explicit Settings(Settings&& settings) = delete;
|
||||||
|
@ -192,10 +228,12 @@ public:
|
||||||
|
|
||||||
Dirs& dirs();
|
Dirs& dirs();
|
||||||
Editor& editor();
|
Editor& editor();
|
||||||
|
CompilerSets& compilerSets();
|
||||||
private:
|
private:
|
||||||
QSettings mSettings;
|
QSettings mSettings;
|
||||||
Dirs mDirs;
|
Dirs mDirs;
|
||||||
Editor mEditor;
|
Editor mEditor;
|
||||||
|
CompilerSets mCompilerSets;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -128,3 +128,20 @@ bool directoryExists(const QString &file)
|
||||||
QFileInfo dir(file);
|
QFileInfo dir(file);
|
||||||
return dir.exists() && dir.isDir();
|
return dir.exists() && dir.isDir();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString includeTrailingPathDelimiter(const QString &path)
|
||||||
|
{
|
||||||
|
if (path.endsWith('/') || path.endsWith(QDir::separator())) {
|
||||||
|
return path;
|
||||||
|
} else {
|
||||||
|
return path + QDir::separator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString excludeTrailingPathDelimiter(const QString &path)
|
||||||
|
{
|
||||||
|
int pos = path.length()-1;
|
||||||
|
while (pos>=0 && (path[pos]=='/' || path[pos]==QDir::separator()))
|
||||||
|
pos--;
|
||||||
|
return path.mid(0,pos+1);
|
||||||
|
}
|
||||||
|
|
|
@ -30,7 +30,8 @@ bool isNonPrintableAsciiChar(char ch);
|
||||||
bool fileExists(const QString& file);
|
bool fileExists(const QString& file);
|
||||||
bool fileExists(const QString& dir, const QString& fileName);
|
bool fileExists(const QString& dir, const QString& fileName);
|
||||||
bool directoryExists(const QString& file);
|
bool directoryExists(const QString& file);
|
||||||
|
QString includeTrailingPathDelimiter(const QString& path);
|
||||||
|
QString excludeTrailingPathDelimiter(const QString& path);
|
||||||
|
|
||||||
template <class F>
|
template <class F>
|
||||||
class final_action
|
class final_action
|
||||||
|
|
Loading…
Reference in New Issue