CMake/Source/QtDialog/CMakeFirstConfigure.cxx

245 lines
6.9 KiB
C++

#include "CMakeFirstConfigure.h"
#include <QSettings>
CMakeFirstConfigure::CMakeFirstConfigure()
{
this->UI.setupUi(this);
this->UI.useDefaults->setChecked(true);
this->updatePage();
this->UI.useToolChainFile->setChecked(true);
this->updateToolChainPage();
QObject::connect(this->UI.useDefaults, SIGNAL(toggled(bool)),
this, SLOT(updatePage()));
QObject::connect(this->UI.compilerSetup, SIGNAL(toggled(bool)),
this, SLOT(updatePage()));
QObject::connect(this->UI.crossCompilerSetup, SIGNAL(toggled(bool)),
this, SLOT(updatePage()));
QObject::connect(this->UI.useToolChainFile, SIGNAL(toggled(bool)),
this, SLOT(updateToolChainPage()));
}
CMakeFirstConfigure::~CMakeFirstConfigure()
{
}
void CMakeFirstConfigure::setGenerators(const QStringList& gens)
{
this->UI.generators->clear();
this->UI.generators->addItems(gens);
}
QString CMakeFirstConfigure::getGenerator() const
{
return this->UI.generators->currentText();
}
void CMakeFirstConfigure::loadFromSettings()
{
QSettings settings;
settings.beginGroup("Settings/StartPath");
// restore generator
QString lastGen = settings.value("LastGenerator").toString();
int idx = this->UI.generators->findText(lastGen);
if(idx != -1)
{
this->UI.generators->setCurrentIndex(idx);
}
settings.endGroup();
// restore compiler setup
settings.beginGroup("Settings/Compiler");
this->UI.CCompiler->setText(settings.value("CCompiler").toString());
this->UI.CXXCompiler->setText(settings.value("CXXCompiler").toString());
this->UI.FortranCompiler->setText(settings.value("FortranCompiler").toString());
settings.endGroup();
// restore cross compiler setup
settings.beginGroup("Settings/CrossCompiler");
this->UI.crossCCompiler->setText(settings.value("CCompiler").toString());
this->UI.crossCXXCompiler->setText(settings.value("CXXCompiler").toString());
this->UI.crossFortranCompiler->setText(settings.value("FortranCompiler").toString());
this->UI.useToolChainFile->setChecked(settings.value("UseToolChainFile", true).toBool());
this->UI.toolChainFile->setText(settings.value("ToolChainFile").toString());
this->UI.systemName->setText(settings.value("SystemName").toString());
this->UI.systemVersion->setText(settings.value("SystemVersion").toString());
this->UI.systemProcessor->setText(settings.value("SystemProcessor").toString());
this->UI.crossFindRoot->setText(settings.value("FindRoot").toString());
this->UI.crossProgramMode->setCurrentIndex(settings.value("ProgramMode", 0).toInt());
this->UI.crossLibraryMode->setCurrentIndex(settings.value("LibraryMode", 0).toInt());
this->UI.crossIncludeMode->setCurrentIndex(settings.value("IncludeMode", 0).toInt());
settings.endGroup();
}
void CMakeFirstConfigure::saveToSettings()
{
QSettings settings;
settings.beginGroup("Settings/StartPath");
// save generator
QString lastGen = this->UI.generators->currentText();
settings.setValue("LastGenerator", lastGen);
settings.endGroup();
// save compiler setup
settings.beginGroup("Settings/Compiler");
settings.setValue("CCompiler", this->UI.CCompiler->text());
settings.setValue("CXXCompiler", this->UI.CXXCompiler->text());
settings.setValue("FortranCompiler", this->UI.FortranCompiler->text());
settings.endGroup();
// save cross compiler setup
settings.beginGroup("Settings/CrossCompiler");
settings.setValue("CCompiler", this->UI.crossCCompiler->text());
settings.setValue("CXXCompiler", this->UI.crossCXXCompiler->text());
settings.setValue("FortranCompiler", this->UI.crossFortranCompiler->text());
settings.setValue("UseToolChainFile", this->UI.useToolChainFile->isChecked());
settings.setValue("ToolChainFile", this->UI.toolChainFile->text());
settings.setValue("SystemName", this->UI.systemName->text());
settings.setValue("SystemVersion", this->UI.systemVersion->text());
settings.setValue("SystemProcessor", this->UI.systemProcessor->text());
settings.setValue("FindRoot", this->UI.crossFindRoot->text());
settings.setValue("ProgramMode", this->UI.crossProgramMode->currentIndex());
settings.setValue("LibraryMode", this->UI.crossLibraryMode->currentIndex());
settings.setValue("IncludeMode", this->UI.crossIncludeMode->currentIndex());
settings.endGroup();
}
void CMakeFirstConfigure::updatePage()
{
if(this->UI.useDefaults->isChecked())
{
this->UI.stackedWidget->setCurrentIndex(0);
}
else if(this->UI.compilerSetup->isChecked())
{
this->UI.stackedWidget->setCurrentIndex(1);
}
else if(this->UI.crossCompilerSetup->isChecked())
{
this->UI.stackedWidget->setCurrentIndex(2);
}
}
void CMakeFirstConfigure::updateToolChainPage()
{
if(this->UI.useToolChainFile->isChecked())
{
this->UI.toolChainStack->setCurrentIndex(0);
}
else
{
this->UI.toolChainStack->setCurrentIndex(1);
}
}
bool CMakeFirstConfigure::defaultSetup() const
{
return this->UI.useDefaults->isChecked();
}
bool CMakeFirstConfigure::compilerSetup() const
{
return this->UI.compilerSetup->isChecked();
}
bool CMakeFirstConfigure::crossCompilerSetup() const
{
return this->UI.crossCompilerSetup->isChecked();
}
QString CMakeFirstConfigure::crossCompilerToolChainFile() const
{
if(this->UI.useToolChainFile->isChecked())
{
return this->UI.toolChainFile->text();
}
return QString();
}
QString CMakeFirstConfigure::getSystemName() const
{
return this->UI.systemName->text();
}
QString CMakeFirstConfigure::getCCompiler() const
{
if(this->compilerSetup())
{
return this->UI.CCompiler->text();
}
else if(this->crossCompilerSetup())
{
return this->UI.crossCCompiler->text();
}
return QString();
}
QString CMakeFirstConfigure::getCXXCompiler() const
{
if(this->compilerSetup())
{
return this->UI.CXXCompiler->text();
}
else if(this->crossCompilerSetup())
{
return this->UI.crossCXXCompiler->text();
}
return QString();
}
QString CMakeFirstConfigure::getFortranCompiler() const
{
if(this->compilerSetup())
{
return this->UI.FortranCompiler->text();
}
else if(this->crossCompilerSetup())
{
return this->UI.crossFortranCompiler->text();
}
return QString();
}
QString CMakeFirstConfigure::getSystemVersion() const
{
return this->UI.systemVersion->text();
}
QString CMakeFirstConfigure::getSystemProcessor() const
{
return this->UI.systemProcessor->text();
}
QString CMakeFirstConfigure::getCrossRoot() const
{
return this->UI.crossFindRoot->text();
}
static const char* crossModes[3] = {"BOTH", "ONLY", "NEVER" };
QString CMakeFirstConfigure::getCrossProgramMode() const
{
return crossModes[this->UI.crossProgramMode->currentIndex()];
}
QString CMakeFirstConfigure::getCrossLibraryMode() const
{
return crossModes[this->UI.crossLibraryMode->currentIndex()];
}
QString CMakeFirstConfigure::getCrossIncludeMode() const
{
return crossModes[this->UI.crossIncludeMode->currentIndex()];
}