forked from qt-creator/qt-creator
		
	Fixes: Various stuff in the cmake project.
Details: Not yet usable, but at least you get a list of build targets now.
This commit is contained in:
		| @@ -36,6 +36,11 @@ | ||||
| #include "cmakeproject.h" | ||||
|  | ||||
| #include <utils/qtcassert.h> | ||||
| #include <QtGui/QFormLayout> | ||||
| #include <QtGui/QGroupBox> | ||||
| #include <QtGui/QCheckBox> | ||||
| #include <QtGui/QLineEdit> | ||||
| #include <QtGui/QListWidget> | ||||
|  | ||||
| using namespace CMakeProjectManager; | ||||
| using namespace CMakeProjectManager::Internal; | ||||
| @@ -66,17 +71,17 @@ void MakeStep::run(QFutureInterface<bool> &fi) | ||||
|  | ||||
| QString MakeStep::name() | ||||
| { | ||||
|     return "Make"; | ||||
|     return Constants::CMAKESTEP; | ||||
| } | ||||
|  | ||||
| QString MakeStep::displayName() | ||||
| { | ||||
|     return Constants::CMAKESTEP; | ||||
|     return "Make"; | ||||
| } | ||||
|  | ||||
| ProjectExplorer::BuildStepConfigWidget *MakeStep::createConfigWidget() | ||||
| { | ||||
|     return new MakeBuildStepConfigWidget(); | ||||
|     return new MakeBuildStepConfigWidget(this); | ||||
| } | ||||
|  | ||||
| bool MakeStep::immutable() const | ||||
| @@ -84,18 +89,72 @@ bool MakeStep::immutable() const | ||||
|     return true; | ||||
| } | ||||
|  | ||||
| CMakeProject *MakeStep::project() const | ||||
| { | ||||
|     return m_pro; | ||||
| } | ||||
|  | ||||
| bool MakeStep::buildsTarget(const QString &buildConfiguration, const QString &target) const | ||||
| { | ||||
|     return value(buildConfiguration, "buildTargets").toStringList().contains(target); | ||||
| } | ||||
|  | ||||
| void MakeStep::setBuildTarget(const QString &buildConfiguration, const QString &target, bool on) | ||||
| { | ||||
|     QStringList old = value(buildConfiguration, "buildTargets").toStringList(); | ||||
|     if (on && !old.contains(target)) | ||||
|         setValue(buildConfiguration, "buildTargets", old << target); | ||||
|     else if(!on && old.contains(target)) | ||||
|         setValue(buildConfiguration, "buildTargets", old.removeOne(target)); | ||||
| } | ||||
|  | ||||
| // | ||||
| // CMakeBuildStepConfigWidget | ||||
| // | ||||
| MakeBuildStepConfigWidget::MakeBuildStepConfigWidget(MakeStep *makeStep) | ||||
|     : m_makeStep(makeStep) | ||||
| { | ||||
|     QFormLayout *fl = new QFormLayout(this); | ||||
|     setLayout(fl); | ||||
|  | ||||
|     m_targetsList = new QListWidget; | ||||
|     fl->addRow("Targets:", m_targetsList); | ||||
|  | ||||
|     // TODO update this list also on rescans of the CMakeLists.txt | ||||
|     CMakeProject *pro = m_makeStep->project(); | ||||
|     foreach(const QString& target, pro->targets()) { | ||||
|         QListWidgetItem *item = new QListWidgetItem(target, m_targetsList); | ||||
|         item->setFlags(item->flags() | Qt::ItemIsUserCheckable); | ||||
|         item->setCheckState(Qt::Unchecked); | ||||
|     } | ||||
|     connect(m_targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); | ||||
| } | ||||
|  | ||||
| void MakeBuildStepConfigWidget::itemChanged(QListWidgetItem *item) | ||||
| { | ||||
|     m_makeStep->setBuildTarget(m_buildConfiguration, item->text(), item->checkState() & Qt::Checked); | ||||
| } | ||||
|  | ||||
| QString MakeBuildStepConfigWidget::displayName() const | ||||
| { | ||||
|     return "Make"; | ||||
| } | ||||
|  | ||||
| void MakeBuildStepConfigWidget::init(const QString & /* buildConfiguration */) | ||||
| void MakeBuildStepConfigWidget::init(const QString &buildConfiguration) | ||||
| { | ||||
|     // TODO | ||||
|  | ||||
|     // disconnect to make the changes to the items | ||||
|     disconnect(m_targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); | ||||
|     m_buildConfiguration = buildConfiguration; | ||||
|     int count = m_targetsList->count(); | ||||
|     for(int i = 0; i < count; ++i) { | ||||
|         QListWidgetItem *item = m_targetsList->item(i); | ||||
|         item->setCheckState(m_makeStep->buildsTarget(buildConfiguration, item->text()) ? Qt::Checked : Qt::Unchecked); | ||||
|     } | ||||
|     // and connect again | ||||
|     connect(m_targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); | ||||
|  | ||||
| } | ||||
|  | ||||
| // | ||||
|   | ||||
		Reference in New Issue
	
	Block a user