Utils/ProjectExplorer: Move re-usabled bits of aspects to Utils

Classes involved are BaseAspect and some derived classes,
LayoutBuilder and VariableChooser.

This is mostly mechanical, with various include/using changes
to make it compile.

Change-Id: I624a457f3555f102e541c4c71e33a9423af32250
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2020-09-18 12:11:40 +02:00
parent 834cb8d114
commit cec468d78a
108 changed files with 751 additions and 621 deletions

View File

@@ -14,6 +14,7 @@ add_qtc_library(Utils
ansiescapecodehandler.cpp ansiescapecodehandler.h ansiescapecodehandler.cpp ansiescapecodehandler.h
appmainwindow.cpp appmainwindow.h appmainwindow.cpp appmainwindow.h
archive.cpp archive.h archive.cpp archive.h
aspects.cpp aspects.h
basetreeview.cpp basetreeview.h basetreeview.cpp basetreeview.h
benchmarker.cpp benchmarker.h benchmarker.cpp benchmarker.h
buildablehelperlibrary.cpp buildablehelperlibrary.h buildablehelperlibrary.cpp buildablehelperlibrary.h
@@ -73,6 +74,7 @@ add_qtc_library(Utils
itemviews.cpp itemviews.h itemviews.cpp itemviews.h
json.cpp json.h json.cpp json.h
jsontreeitem.cpp jsontreeitem.h jsontreeitem.cpp jsontreeitem.h
layoutbuilder.cpp layoutbuilder.h
linecolumn.h linecolumn.h
link.h link.h
listmodel.h listmodel.h
@@ -169,6 +171,7 @@ add_qtc_library(Utils
utils.qrc utils.qrc
utils_global.h utils_global.h
utilsicons.cpp utilsicons.h utilsicons.cpp utilsicons.h
variablechooser.cpp variablechooser.h
variant.h variant.h
winutils.cpp winutils.h winutils.cpp winutils.h
wizard.cpp wizard.h wizard.cpp wizard.h

View File

@@ -23,35 +23,77 @@
** **
****************************************************************************/ ****************************************************************************/
#include "projectconfigurationaspects.h" #include "aspects.h"
#include "environmentaspect.h" #include "algorithm.h"
#include "project.h" #include "fancylineedit.h"
#include "projectexplorer.h" #include "layoutbuilder.h"
#include "projectexplorersettings.h" #include "pathchooser.h"
#include "runconfiguration.h" #include "qtcassert.h"
#include "target.h" #include "qtcprocess.h"
#include "utilsicons.h"
#include <coreplugin/variablechooser.h> #include "variablechooser.h"
#include <utils/utilsicons.h>
#include <utils/fancylineedit.h>
#include <utils/pathchooser.h>
#include <utils/qtcprocess.h>
#include <QButtonGroup>
#include <QCheckBox> #include <QCheckBox>
#include <QComboBox> #include <QComboBox>
#include <QFormLayout>
#include <QLabel> #include <QLabel>
#include <QLineEdit> #include <QLineEdit>
#include <QFormLayout> #include <QPointer>
#include <QSpinBox>
#include <QToolButton>
#include <QTextEdit>
#include <QRadioButton> #include <QRadioButton>
#include <QButtonGroup> #include <QSpinBox>
#include <QTextEdit>
#include <QToolButton>
using namespace Utils; namespace Utils {
// BaseAspect
BaseAspect::BaseAspect() = default;
BaseAspect::~BaseAspect() = default;
void BaseAspect::setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator)
{
m_configWidgetCreator = configWidgetCreator;
}
QWidget *BaseAspect::createConfigWidget() const
{
return m_configWidgetCreator ? m_configWidgetCreator() : nullptr;
}
void BaseAspect::addToLayout(LayoutBuilder &)
{
}
// BaseAspects
BaseAspects::BaseAspects() = default;
BaseAspects::~BaseAspects()
{
qDeleteAll(base());
}
BaseAspect *BaseAspects::aspect(Utils::Id id) const
{
return Utils::findOrDefault(base(), Utils::equal(&BaseAspect::id, id));
}
void BaseAspects::fromMap(const QVariantMap &map) const
{
for (BaseAspect *aspect : *this)
aspect->fromMap(map);
}
void BaseAspects::toMap(QVariantMap &map) const
{
for (BaseAspect *aspect : *this)
aspect->toMap(map);
}
namespace ProjectExplorer {
namespace Internal { namespace Internal {
class BoolAspectPrivate class BoolAspectPrivate
@@ -108,9 +150,9 @@ public:
QPointer<FancyLineEdit> m_lineEditDisplay; QPointer<FancyLineEdit> m_lineEditDisplay;
QPointer<PathChooser> m_pathChooserDisplay; QPointer<PathChooser> m_pathChooserDisplay;
QPointer<QTextEdit> m_textEditDisplay; QPointer<QTextEdit> m_textEditDisplay;
Utils::MacroExpanderProvider m_expanderProvider; MacroExpanderProvider m_expanderProvider;
QPixmap m_labelPixmap; QPixmap m_labelPixmap;
Utils::FilePath m_baseFileName; FilePath m_baseFileName;
StringAspect::ValueAcceptor m_valueAcceptor; StringAspect::ValueAcceptor m_valueAcceptor;
bool m_readOnly = false; bool m_readOnly = false;
bool m_showToolTipOnLabel = false; bool m_showToolTipOnLabel = false;
@@ -153,7 +195,7 @@ public:
class AspectContainerPrivate class AspectContainerPrivate
{ {
public: public:
QList<ProjectConfigurationAspect *> m_items; QList<BaseAspect *> m_items;
}; };
class TextDisplayPrivate class TextDisplayPrivate
@@ -168,7 +210,7 @@ public:
} // Internal } // Internal
/*! /*!
\class ProjectExplorer::StringAspect \class Utils::StringAspect
*/ */
StringAspect::StringAspect() StringAspect::StringAspect()
@@ -382,17 +424,19 @@ void StringAspect::addToLayout(LayoutBuilder &builder)
d->m_label->setPixmap(d->m_labelPixmap); d->m_label->setPixmap(d->m_labelPixmap);
builder.addItem(d->m_label.data()); builder.addItem(d->m_label.data());
QWidget *parentWidget = builder.layout()->parentWidget();
const auto useMacroExpander = [this, &builder](QWidget *w) { const auto useMacroExpander = [this, &builder](QWidget *w) {
if (!d->m_expanderProvider) if (!d->m_expanderProvider)
return; return;
const auto chooser = new Core::VariableChooser(builder.layout()->parentWidget()); const auto chooser = new VariableChooser(builder.layout()->parentWidget());
chooser->addSupportedWidget(w); chooser->addSupportedWidget(w);
chooser->addMacroExpanderProvider(d->m_expanderProvider); chooser->addMacroExpanderProvider(d->m_expanderProvider);
}; };
switch (d->m_displayStyle) { switch (d->m_displayStyle) {
case PathChooserDisplay: case PathChooserDisplay:
d->m_pathChooserDisplay = new PathChooser; d->m_pathChooserDisplay = new PathChooser(parentWidget);
d->m_pathChooserDisplay->setExpectedKind(d->m_expectedKind); d->m_pathChooserDisplay->setExpectedKind(d->m_expectedKind);
if (!d->m_historyCompleterKey.isEmpty()) if (!d->m_historyCompleterKey.isEmpty())
d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey); d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey);
@@ -501,7 +545,7 @@ void StringAspect::makeCheckable(CheckBoxPlacement checkBoxPlacement,
} }
/*! /*!
\class ProjectExplorer::BoolAspect \class Utils::BoolAspect
*/ */
BoolAspect::BoolAspect(const QString &settingsKey) BoolAspect::BoolAspect(const QString &settingsKey)
@@ -592,7 +636,7 @@ void BoolAspect::setEnabled(bool enabled)
} }
/*! /*!
\class ProjectExplorer::SelectionAspect \class Utils::SelectionAspect
*/ */
SelectionAspect::SelectionAspect() SelectionAspect::SelectionAspect()
@@ -706,7 +750,7 @@ void SelectionAspect::addOption(const QString &displayName, const QString &toolT
} }
/*! /*!
\class ProjectExplorer::IntegerAspect \class Utils::IntegerAspect
*/ */
// IntegerAspect // IntegerAspect
@@ -821,7 +865,7 @@ void IntegerAspect::setToolTip(const QString &tooltip)
} }
/*! /*!
\class ProjectExplorer::BaseTristateAspect \class Utils::BaseTristateAspect
*/ */
TriStateAspect::TriStateAspect() TriStateAspect::TriStateAspect()
@@ -856,7 +900,7 @@ TriState TriState::fromVariant(const QVariant &variant)
/*! /*!
\class ProjectExplorer::StringListAspect \class Utils::StringListAspect
*/ */
StringListAspect::StringListAspect() StringListAspect::StringListAspect()
@@ -892,7 +936,7 @@ void StringListAspect::setValue(const QStringList &value)
} }
/*! /*!
\class ProjectExplorer::TextDisplay \class Utils::TextDisplay
*/ */
TextDisplay::TextDisplay(const QString &message, InfoLabel::InfoType type) TextDisplay::TextDisplay(const QString &message, InfoLabel::InfoType type)
@@ -919,7 +963,7 @@ void TextDisplay::addToLayout(LayoutBuilder &builder)
void TextDisplay::setVisible(bool visible) void TextDisplay::setVisible(bool visible)
{ {
ProjectConfigurationAspect::setVisible(visible); BaseAspect::setVisible(visible);
if (d->m_label) if (d->m_label)
d->m_label->setVisible(visible); d->m_label->setVisible(visible);
} }
@@ -939,7 +983,7 @@ void TextDisplay::setIconType(InfoLabel::InfoType t)
} }
/*! /*!
\class ProjectExplorer::AspectContainer \class Utils::AspectContainer
*/ */
AspectContainer::AspectContainer() AspectContainer::AspectContainer()
@@ -948,14 +992,14 @@ AspectContainer::AspectContainer()
AspectContainer::~AspectContainer() = default; AspectContainer::~AspectContainer() = default;
void AspectContainer::addAspectHelper(ProjectConfigurationAspect *aspect) void AspectContainer::addAspectHelper(BaseAspect *aspect)
{ {
d->m_items.append(aspect); d->m_items.append(aspect);
} }
void AspectContainer::addToLayout(LayoutBuilder &builder) void AspectContainer::addToLayout(LayoutBuilder &builder)
{ {
for (ProjectConfigurationAspect *aspect : d->m_items) { for (BaseAspect *aspect : d->m_items) {
if (aspect->isVisible()) if (aspect->isVisible())
aspect->addToLayout(builder); aspect->addToLayout(builder);
} }
@@ -963,14 +1007,14 @@ void AspectContainer::addToLayout(LayoutBuilder &builder)
void AspectContainer::fromMap(const QVariantMap &map) void AspectContainer::fromMap(const QVariantMap &map)
{ {
for (ProjectConfigurationAspect *aspect : d->m_items) for (BaseAspect *aspect : d->m_items)
aspect->fromMap(map); aspect->fromMap(map);
} }
void AspectContainer::toMap(QVariantMap &map) const void AspectContainer::toMap(QVariantMap &map) const
{ {
for (ProjectConfigurationAspect *aspect : d->m_items) for (BaseAspect *aspect : d->m_items)
aspect->toMap(map); aspect->toMap(map);
} }
} // namespace ProjectExplorer } // namespace Utils

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2018 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of Qt Creator. ** This file is part of Qt Creator.
@@ -25,17 +25,19 @@
#pragma once #pragma once
#include "projectconfiguration.h" #include "fileutils.h"
#include "environmentaspect.h" #include "id.h"
#include "infolabel.h"
#include <utils/fileutils.h> #include "macroexpander.h"
#include <utils/infolabel.h> #include "optional.h"
#include <utils/macroexpander.h> #include "pathchooser.h"
#include <utils/pathchooser.h>
#include <memory> #include <memory>
namespace ProjectExplorer { namespace Utils {
class BaseAspects;
class LayoutBuilder;
namespace Internal { namespace Internal {
class AspectContainerPrivate; class AspectContainerPrivate;
@@ -47,7 +49,91 @@ class StringListAspectPrivate;
class TextDisplayPrivate; class TextDisplayPrivate;
} // Internal } // Internal
class PROJECTEXPLORER_EXPORT BoolAspect : public ProjectConfigurationAspect class QTCREATOR_UTILS_EXPORT BaseAspect : public QObject
{
Q_OBJECT
public:
BaseAspect();
~BaseAspect() override;
void setId(Utils::Id id) { m_id = id; }
void setDisplayName(const QString &displayName) { m_displayName = displayName; }
void setSettingsKey(const QString &settingsKey) { m_settingsKey = settingsKey; }
Utils::Id id() const { return m_id; }
QString displayName() const { return m_displayName; }
QString settingsKey() const { return m_settingsKey; }
bool isVisible() const { return m_visible; }
void setVisible(bool visible) { m_visible = visible; }
using ConfigWidgetCreator = std::function<QWidget *()>;
void setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator);
QWidget *createConfigWidget() const;
virtual void fromMap(const QVariantMap &) {}
virtual void toMap(QVariantMap &) const {}
virtual void acquaintSiblings(const BaseAspects &) {}
virtual void addToLayout(LayoutBuilder &builder);
signals:
void changed();
protected:
virtual void setVisibleDynamic(bool visible) { Q_UNUSED(visible) } // TODO: Better name? Merge with setVisible() somehow?
Utils::Id m_id;
QString m_displayName;
QString m_settingsKey; // Name of data in settings.
bool m_visible = true;
ConfigWidgetCreator m_configWidgetCreator;
};
class QTCREATOR_UTILS_EXPORT BaseAspects
: private QList<BaseAspect *>
{
using Base = QList<BaseAspect *>;
BaseAspects(const BaseAspects &) = delete;
BaseAspects &operator=(const BaseAspects &) = delete;
public:
BaseAspects();
~BaseAspects();
template <class Aspect, typename ...Args>
Aspect *addAspect(Args && ...args)
{
auto aspect = new Aspect(args...);
append(aspect);
return aspect;
}
BaseAspect *aspect(Utils::Id id) const;
template <typename T> T *aspect() const
{
for (BaseAspect *aspect : *this)
if (T *result = qobject_cast<T *>(aspect))
return result;
return nullptr;
}
void fromMap(const QVariantMap &map) const;
void toMap(QVariantMap &map) const;
using Base::append;
using Base::begin;
using Base::end;
private:
Base &base() { return *this; }
const Base &base() const { return *this; }
};
class QTCREATOR_UTILS_EXPORT BoolAspect : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -76,7 +162,7 @@ private:
std::unique_ptr<Internal::BoolAspectPrivate> d; std::unique_ptr<Internal::BoolAspectPrivate> d;
}; };
class PROJECTEXPLORER_EXPORT SelectionAspect : public ProjectConfigurationAspect class QTCREATOR_UTILS_EXPORT SelectionAspect : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -111,7 +197,7 @@ private:
std::unique_ptr<Internal::SelectionAspectPrivate> d; std::unique_ptr<Internal::SelectionAspectPrivate> d;
}; };
class PROJECTEXPLORER_EXPORT StringAspect : public ProjectConfigurationAspect class QTCREATOR_UTILS_EXPORT StringAspect : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -176,7 +262,7 @@ private:
std::unique_ptr<Internal::StringAspectPrivate> d; std::unique_ptr<Internal::StringAspectPrivate> d;
}; };
class PROJECTEXPLORER_EXPORT IntegerAspect : public ProjectConfigurationAspect class QTCREATOR_UTILS_EXPORT IntegerAspect : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -206,7 +292,7 @@ private:
std::unique_ptr<Internal::IntegerAspectPrivate> d; std::unique_ptr<Internal::IntegerAspectPrivate> d;
}; };
class PROJECTEXPLORER_EXPORT TriState class QTCREATOR_UTILS_EXPORT TriState
{ {
enum Value { EnabledValue, DisabledValue, DefaultValue }; enum Value { EnabledValue, DisabledValue, DefaultValue };
explicit TriState(Value v) : m_value(v) {} explicit TriState(Value v) : m_value(v) {}
@@ -228,7 +314,7 @@ private:
Value m_value = DefaultValue; Value m_value = DefaultValue;
}; };
class PROJECTEXPLORER_EXPORT TriStateAspect : public SelectionAspect class QTCREATOR_UTILS_EXPORT TriStateAspect : public SelectionAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
@@ -238,7 +324,7 @@ public:
void setSetting(TriState setting); void setSetting(TriState setting);
}; };
class PROJECTEXPLORER_EXPORT StringListAspect : public ProjectConfigurationAspect class QTCREATOR_UTILS_EXPORT StringListAspect : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -258,7 +344,7 @@ private:
std::unique_ptr<Internal::StringListAspectPrivate> d; std::unique_ptr<Internal::StringListAspectPrivate> d;
}; };
class PROJECTEXPLORER_EXPORT TextDisplay : public ProjectConfigurationAspect class QTCREATOR_UTILS_EXPORT TextDisplay : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -277,7 +363,7 @@ private:
std::unique_ptr<Internal::TextDisplayPrivate> d; std::unique_ptr<Internal::TextDisplayPrivate> d;
}; };
class PROJECTEXPLORER_EXPORT AspectContainer : public ProjectConfigurationAspect class QTCREATOR_UTILS_EXPORT AspectContainer : public BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -299,17 +385,9 @@ public:
void toMap(QVariantMap &map) const override; void toMap(QVariantMap &map) const override;
private: private:
void addAspectHelper(ProjectConfigurationAspect *aspect); void addAspectHelper(BaseAspect *aspect);
std::unique_ptr<Internal::AspectContainerPrivate> d; std::unique_ptr<Internal::AspectContainerPrivate> d;
}; };
// FIXME: For migration. Remove after 4.15 } // namespace Utils
using BaseBoolAspect = BoolAspect;
using BaseIntegerAspect = IntegerAspect;
using BaseSelectionAspect = SelectionAspect;
using BaseStringAspect = StringAspect;
using BaseStringListAspect = StringListAspect;
using BaseStringListAspect = StringListAspect;
} // namespace ProjectExplorer

View File

@@ -0,0 +1,160 @@
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "layoutbuilder.h"
#include <utils/algorithm.h>
#include <utils/aspects.h>
#include <utils/qtcassert.h>
#include <QFormLayout>
#include <QGridLayout>
#include <QWidget>
namespace Utils {
LayoutBuilder::LayoutBuilder(QWidget *parent, LayoutType layoutType)
{
if (layoutType == FormLayout) {
m_formLayout = new QFormLayout(parent);
m_formLayout->setContentsMargins(0, 0, 0, 0);
m_formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
} else {
m_gridLayout = new QGridLayout(parent);
m_gridLayout->setContentsMargins(0, 0, 0, 0);
}
}
LayoutBuilder::LayoutBuilder(QLayout *layout)
{
if (auto fl = qobject_cast<QFormLayout *>(layout)) {
m_formLayout = fl;
} else if (auto grid = qobject_cast<QGridLayout *>(layout)) {
m_gridLayout = grid;
m_currentGridRow = grid->rowCount();
m_currentGridColumn = 0;
}
}
LayoutBuilder::~LayoutBuilder()
{
flushPendingFormItems();
}
LayoutBuilder &LayoutBuilder::startNewRow()
{
if (m_formLayout)
flushPendingFormItems();
if (m_gridLayout) {
if (m_currentGridColumn != 0) {
++m_currentGridRow;
m_currentGridColumn = 0;
}
}
return *this;
}
LayoutBuilder &LayoutBuilder::addRow(const LayoutItem &item)
{
startNewRow();
addItem(item);
return *this;
}
void LayoutBuilder::flushPendingFormItems()
{
QTC_ASSERT(m_formLayout, return);
if (m_pendingFormItems.isEmpty())
return;
// If there are more than two items, we cram the last ones in one hbox.
if (m_pendingFormItems.size() > 2) {
auto hbox = new QHBoxLayout;
hbox->setContentsMargins(0, 0, 0, 0);
for (int i = 1; i < m_pendingFormItems.size(); ++i) {
if (QWidget *w = m_pendingFormItems.at(i).widget)
hbox->addWidget(w);
else if (QLayout *l = m_pendingFormItems.at(i).layout)
hbox->addItem(l);
else
QTC_CHECK(false);
}
while (m_pendingFormItems.size() >= 2)
m_pendingFormItems.takeLast();
m_pendingFormItems.append(LayoutItem(hbox));
}
if (m_pendingFormItems.size() == 1) { // One one item given, so this spans both columns.
if (auto layout = m_pendingFormItems.at(0).layout)
m_formLayout->addRow(layout);
else if (auto widget = m_pendingFormItems.at(0).widget)
m_formLayout->addRow(widget);
} else if (m_pendingFormItems.size() == 2) { // Normal case, both columns used.
if (auto label = m_pendingFormItems.at(0).widget) {
if (auto layout = m_pendingFormItems.at(1).layout)
m_formLayout->addRow(label, layout);
else if (auto widget = m_pendingFormItems.at(1).widget)
m_formLayout->addRow(label, widget);
} else {
if (auto layout = m_pendingFormItems.at(1).layout)
m_formLayout->addRow(m_pendingFormItems.at(0).text, layout);
else if (auto widget = m_pendingFormItems.at(1).widget)
m_formLayout->addRow(m_pendingFormItems.at(0).text, widget);
}
} else {
QTC_CHECK(false);
}
m_pendingFormItems.clear();
}
QLayout *LayoutBuilder::layout() const
{
if (m_formLayout)
return m_formLayout;
return m_gridLayout;
}
LayoutBuilder &LayoutBuilder::addItem(LayoutItem item)
{
if (item.widget && !item.widget->parent())
item.widget->setParent(layout()->parentWidget());
if (item.aspect) {
item.aspect->addToLayout(*this);
} else {
if (m_gridLayout) {
if (auto widget = item.widget)
m_gridLayout->addWidget(widget, m_currentGridRow, m_currentGridColumn, 1, item.span, item.align);
m_currentGridColumn += item.span;
} else {
m_pendingFormItems.append(item);
}
}
return *this;
}
} // Utils

View File

@@ -0,0 +1,92 @@
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once
#include "utils_global.h"
#include <QList>
#include <QString>
QT_BEGIN_NAMESPACE
class QFormLayout;
class QGridLayout;
class QLayout;
class QWidget;
QT_END_NAMESPACE
namespace Utils {
class BaseAspect;
class QTCREATOR_UTILS_EXPORT LayoutBuilder
{
public:
enum LayoutType { GridLayout, FormLayout };
explicit LayoutBuilder(QWidget *parent, LayoutType layoutType = FormLayout);
explicit LayoutBuilder(QLayout *layout); // Adds to existing layout.
~LayoutBuilder();
class LayoutItem
{
public:
LayoutItem(QLayout *layout, int span = 1) : layout(layout), span(span) {}
LayoutItem(QWidget *widget, int span = 1, Qt::Alignment align = {})
: widget(widget), span(span), align(align) {}
LayoutItem(BaseAspect *aspect) : aspect(aspect) {}
LayoutItem(const QString &text) : text(text) {}
QLayout *layout = nullptr;
QWidget *widget = nullptr;
BaseAspect *aspect = nullptr;
QString text;
int span = 1;
Qt::Alignment align;
};
template<typename ...Items>
LayoutBuilder &addItems(LayoutItem first, Items... rest) {
return addItem(first).addItems(rest...);
}
LayoutBuilder &addItems() { return *this; }
LayoutBuilder &addItem(LayoutItem item);
LayoutBuilder &startNewRow();
LayoutBuilder &addRow(const LayoutItem &item);
QLayout *layout() const;
private:
void flushPendingFormItems();
QFormLayout *m_formLayout = nullptr;
QGridLayout *m_gridLayout = nullptr;
QList<LayoutItem> m_pendingFormItems;
int m_currentGridRow = 0;
int m_currentGridColumn = 0;
};
} // namespace Utils

View File

@@ -195,7 +195,7 @@ using namespace Internal;
If the string that you want to parametrize is settable by the user, through a QLineEdit or If the string that you want to parametrize is settable by the user, through a QLineEdit or
QTextEdit derived class, you should add a variable chooser to your UI, which allows adding QTextEdit derived class, you should add a variable chooser to your UI, which allows adding
variables to the string by browsing through a list. See Core::VariableChooser for more variables to the string by browsing through a list. See Utils::VariableChooser for more
details. details.
\section2 Expanding Strings \section2 Expanding Strings

View File

@@ -138,7 +138,10 @@ SOURCES += \
$$PWD/overlaywidget.cpp \ $$PWD/overlaywidget.cpp \
$$PWD/archive.cpp \ $$PWD/archive.cpp \
$$PWD/id.cpp \ $$PWD/id.cpp \
$$PWD/infobar.cpp $$PWD/infobar.cpp \
$$PWD/aspects.cpp \
$$PWD/layoutbuilder.cpp \
$$PWD/variablechooser.cpp
HEADERS += \ HEADERS += \
$$PWD/environmentfwd.h \ $$PWD/environmentfwd.h \
@@ -292,7 +295,10 @@ HEADERS += \
$$PWD/archive.h \ $$PWD/archive.h \
$$PWD/id.h \ $$PWD/id.h \
$$PWD/infobar.h \ $$PWD/infobar.h \
$$PWD/porting.h $$PWD/porting.h \
$$PWD/aspects.h \
$$PWD/layoutbuilder.h \
$$PWD/variablechooser.h
FORMS += $$PWD/filewizardpage.ui \ FORMS += $$PWD/filewizardpage.ui \
$$PWD/projectintropage.ui \ $$PWD/projectintropage.ui \

View File

@@ -46,6 +46,8 @@ Project {
"appmainwindow.h", "appmainwindow.h",
"archive.cpp", "archive.cpp",
"archive.h", "archive.h",
"aspects.cpp",
"aspects.h",
"basetreeview.cpp", "basetreeview.cpp",
"basetreeview.h", "basetreeview.h",
"benchmarker.cpp", "benchmarker.cpp",
@@ -155,6 +157,8 @@ Project {
"json.h", "json.h",
"jsontreeitem.cpp", "jsontreeitem.cpp",
"jsontreeitem.h", "jsontreeitem.h",
"layoutbuilder.cpp",
"layoutbuilder.h",
"linecolumn.h", "linecolumn.h",
"link.h", "link.h",
"listmodel.h", "listmodel.h",
@@ -292,6 +296,8 @@ Project {
"utils_global.h", "utils_global.h",
"utilsicons.h", "utilsicons.h",
"utilsicons.cpp", "utilsicons.cpp",
"variablechooser.cpp",
"variablechooser.h",
"variant.h", "variant.h",
"../3rdparty/variant/variant.hpp", "../3rdparty/variant/variant.hpp",
"winutils.cpp", "winutils.cpp",

View File

@@ -24,14 +24,13 @@
****************************************************************************/ ****************************************************************************/
#include "variablechooser.h" #include "variablechooser.h"
#include "coreconstants.h"
#include <utils/fancylineedit.h> #include "fancylineedit.h"
#include <utils/headerviewstretcher.h> // IconButton #include "headerviewstretcher.h" // IconButton
#include <utils/macroexpander.h> #include "macroexpander.h"
#include <utils/treemodel.h> #include "treemodel.h"
#include <utils/qtcassert.h> #include "qtcassert.h"
#include <utils/utilsicons.h> #include "utilsicons.h"
#include <QApplication> #include <QApplication>
#include <QAbstractItemModel> #include <QAbstractItemModel>
@@ -50,9 +49,7 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QVector> #include <QVector>
using namespace Utils; namespace Utils {
namespace Core {
namespace Internal { namespace Internal {
enum { enum {
@@ -339,7 +336,7 @@ void VariableGroupItem::populateGroup(MacroExpander *expander)
using namespace Internal; using namespace Internal;
/*! /*!
\class Core::VariableChooser \class Utils::VariableChooser
\inheaderfile coreplugin/variablechooser.h \inheaderfile coreplugin/variablechooser.h
\inmodule QtCreator \inmodule QtCreator
@@ -366,10 +363,10 @@ using namespace Internal;
Example: Example:
\code \code
QWidget *myOptionsContainerWidget = new QWidget; QWidget *myOptionsContainerWidget = new QWidget;
new Core::VariableChooser(myOptionsContainerWidget) new Utils::VariableChooser(myOptionsContainerWidget)
QLineEdit *myLineEditOption = new QLineEdit(myOptionsContainerWidget); QLineEdit *myLineEditOption = new QLineEdit(myOptionsContainerWidget);
myOptionsContainerWidget->layout()->addWidget(myLineEditOption); myOptionsContainerWidget->layout()->addWidget(myLineEditOption);
Core::VariableChooser::addVariableSupport(myLineEditOption); Utils::VariableChooser::addVariableSupport(myLineEditOption);
\endcode \endcode
*/ */

View File

@@ -25,18 +25,18 @@
#pragma once #pragma once
#include "core_global.h" #include "utils_global.h"
#include "macroexpander.h"
#include <QWidget> #include <QWidget>
#include <utils/macroexpander.h>
#include <functional> #include <functional>
namespace Core { namespace Utils {
namespace Internal { class VariableChooserPrivate; } namespace Internal { class VariableChooserPrivate; }
class CORE_EXPORT VariableChooser : public QWidget class QTCREATOR_UTILS_EXPORT VariableChooser : public QWidget
{ {
Q_OBJECT Q_OBJECT
@@ -57,4 +57,4 @@ private:
Internal::VariableChooserPrivate *d; Internal::VariableChooserPrivate *d;
}; };
} // namespace Core } // namespace Utils

View File

@@ -41,11 +41,11 @@
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <utils/detailswidget.h> #include <utils/detailswidget.h>
#include <utils/layoutbuilder.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <QFormLayout>
#include <QLabel> #include <QLabel>
#include <QLineEdit> #include <QLineEdit>
#include <QSpacerItem> #include <QSpacerItem>
@@ -114,7 +114,7 @@ AndroidRunConfiguration::AndroidRunConfiguration(Target *target, Utils::Id id)
auto extraAppArgsAspect = addAspect<ArgumentsAspect>(); auto extraAppArgsAspect = addAspect<ArgumentsAspect>();
connect(extraAppArgsAspect, &ProjectConfigurationAspect::changed, connect(extraAppArgsAspect, &BaseAspect::changed,
this, [target, extraAppArgsAspect]() { this, [target, extraAppArgsAspect]() {
if (target->buildConfigurations().first()->buildType() == BuildConfiguration::BuildType::Release) { if (target->buildConfigurations().first()->buildType() == BuildConfiguration::BuildType::Release) {
const QString buildKey = target->activeBuildKey(); const QString buildKey = target->activeBuildKey();

View File

@@ -34,7 +34,7 @@
namespace Android { namespace Android {
class BaseStringListAspect : public ProjectExplorer::ProjectConfigurationAspect class BaseStringListAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -43,7 +43,7 @@ public:
Utils::Id id = Utils::Id()); Utils::Id id = Utils::Id());
~BaseStringListAspect() override; ~BaseStringListAspect() override;
void addToLayout(ProjectExplorer::LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
QStringList value() const; QStringList value() const;
void setValue(const QStringList &val); void setValue(const QStringList &val);

View File

@@ -32,10 +32,12 @@
#include <projectexplorer/abstractprocessstep.h> #include <projectexplorer/abstractprocessstep.h>
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/processparameters.h> #include <projectexplorer/processparameters.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/aspects.h>
#include <QDateTime> #include <QDateTime>
using namespace ProjectExplorer; using namespace ProjectExplorer;
@@ -80,7 +82,7 @@ AutogenStep::AutogenStep(BuildStepList *bsl, Utils::Id id) : AbstractProcessStep
m_additionalArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay); m_additionalArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay);
m_additionalArgumentsAspect->setHistoryCompleter("AutotoolsPM.History.AutogenStepArgs"); m_additionalArgumentsAspect->setHistoryCompleter("AutotoolsPM.History.AutogenStepArgs");
connect(m_additionalArgumentsAspect, &ProjectConfigurationAspect::changed, this, [this] { connect(m_additionalArgumentsAspect, &BaseAspect::changed, this, [this] {
m_runAutogen = true; m_runAutogen = true;
}); });

View File

@@ -33,10 +33,13 @@
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/processparameters.h> #include <projectexplorer/processparameters.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/projectconfigurationaspects.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/aspects.h>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace AutotoolsProjectManager { namespace AutotoolsProjectManager {
namespace Internal { namespace Internal {
@@ -78,7 +81,7 @@ AutoreconfStep::AutoreconfStep(BuildStepList *bsl, Utils::Id id)
m_additionalArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay); m_additionalArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay);
m_additionalArgumentsAspect->setHistoryCompleter("AutotoolsPM.History.AutoreconfStepArgs"); m_additionalArgumentsAspect->setHistoryCompleter("AutotoolsPM.History.AutoreconfStepArgs");
connect(m_additionalArgumentsAspect, &ProjectConfigurationAspect::changed, this, [this] { connect(m_additionalArgumentsAspect, &BaseAspect::changed, this, [this] {
m_runAutoreconf = true; m_runAutoreconf = true;
}); });

View File

@@ -32,10 +32,12 @@
#include <projectexplorer/abstractprocessstep.h> #include <projectexplorer/abstractprocessstep.h>
#include <projectexplorer/processparameters.h> #include <projectexplorer/processparameters.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/aspects.h>
#include <QDateTime> #include <QDateTime>
#include <QDir> #include <QDir>
@@ -84,7 +86,7 @@ public:
private: private:
void doRun() override; void doRun() override;
ProjectExplorer::StringAspect *m_additionalArgumentsAspect = nullptr; StringAspect *m_additionalArgumentsAspect = nullptr;
bool m_runConfigure = false; bool m_runConfigure = false;
}; };
@@ -100,7 +102,7 @@ ConfigureStep::ConfigureStep(BuildStepList *bsl, Utils::Id id)
m_additionalArgumentsAspect->setLabelText(tr("Arguments:")); m_additionalArgumentsAspect->setLabelText(tr("Arguments:"));
m_additionalArgumentsAspect->setHistoryCompleter("AutotoolsPM.History.ConfigureArgs"); m_additionalArgumentsAspect->setHistoryCompleter("AutotoolsPM.History.ConfigureArgs");
connect(m_additionalArgumentsAspect, &ProjectConfigurationAspect::changed, this, [this] { connect(m_additionalArgumentsAspect, &BaseAspect::changed, this, [this] {
m_runConfigure = true; m_runConfigure = true;
}); });

View File

@@ -29,7 +29,7 @@
#include "debugserverproviderchooser.h" #include "debugserverproviderchooser.h"
#include <coreplugin/variablechooser.h> #include <utils/variablechooser.h>
#include <projectexplorer/devicesupport/idevice.h> #include <projectexplorer/devicesupport/idevice.h>
#include <QFormLayout> #include <QFormLayout>

View File

@@ -28,11 +28,10 @@
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <coreplugin/variablechooser.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/variablechooser.h>
#include <QCheckBox> #include <QCheckBox>
#include <QComboBox> #include <QComboBox>
@@ -297,7 +296,7 @@ EBlinkGdbServerProviderConfigWidget::EBlinkGdbServerProviderConfigWidget(
addErrorLabel(); addErrorLabel();
setFromProvider(); setFromProvider();
const auto chooser = new Core::VariableChooser(this); const auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(m_initCommandsTextEdit); chooser->addSupportedWidget(m_initCommandsTextEdit);
chooser->addSupportedWidget(m_resetCommandsTextEdit); chooser->addSupportedWidget(m_resetCommandsTextEdit);

View File

@@ -28,12 +28,11 @@
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <coreplugin/variablechooser.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/variablechooser.h>
#include <QComboBox> #include <QComboBox>
#include <QFormLayout> #include <QFormLayout>
@@ -271,12 +270,10 @@ JLinkGdbServerProviderConfigWidget::JLinkGdbServerProviderConfigWidget(
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip()); m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit); m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit);
addErrorLabel(); addErrorLabel();
setFromProvider(); setFromProvider();
const auto chooser = new Core::VariableChooser(this); const auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(m_initCommandsTextEdit); chooser->addSupportedWidget(m_initCommandsTextEdit);
chooser->addSupportedWidget(m_resetCommandsTextEdit); chooser->addSupportedWidget(m_resetCommandsTextEdit);

View File

@@ -28,12 +28,11 @@
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <coreplugin/variablechooser.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/variablechooser.h>
#include <QComboBox> #include <QComboBox>
#include <QFormLayout> #include <QFormLayout>
@@ -230,7 +229,7 @@ OpenOcdGdbServerProviderConfigWidget::OpenOcdGdbServerProviderConfigWidget(
addErrorLabel(); addErrorLabel();
setFromProvider(); setFromProvider();
const auto chooser = new Core::VariableChooser(this); const auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(m_initCommandsTextEdit); chooser->addSupportedWidget(m_initCommandsTextEdit);
chooser->addSupportedWidget(m_resetCommandsTextEdit); chooser->addSupportedWidget(m_resetCommandsTextEdit);

View File

@@ -28,11 +28,10 @@
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <coreplugin/variablechooser.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/variablechooser.h>
#include <QCheckBox> #include <QCheckBox>
#include <QComboBox> #include <QComboBox>
@@ -222,7 +221,7 @@ StLinkUtilGdbServerProviderConfigWidget::StLinkUtilGdbServerProviderConfigWidget
addErrorLabel(); addErrorLabel();
setFromProvider(); setFromProvider();
const auto chooser = new Core::VariableChooser(this); const auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(m_initCommandsTextEdit); chooser->addSupportedWidget(m_initCommandsTextEdit);
chooser->addSupportedWidget(m_resetCommandsTextEdit); chooser->addSupportedWidget(m_resetCommandsTextEdit);

View File

@@ -33,6 +33,7 @@
#include <remotelinux/abstractremotelinuxdeploystep.h> #include <remotelinux/abstractremotelinuxdeploystep.h>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace Qdb { namespace Qdb {
namespace Internal { namespace Internal {

View File

@@ -36,6 +36,7 @@
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
#include <utils/algorithm.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
using namespace ProjectExplorer; using namespace ProjectExplorer;

View File

@@ -126,7 +126,7 @@ private:
friend class CMakeProjectImporter; friend class CMakeProjectImporter;
}; };
class InitialCMakeArgumentsAspect final : public ProjectExplorer::StringAspect class InitialCMakeArgumentsAspect final : public Utils::StringAspect
{ {
Q_OBJECT Q_OBJECT

View File

@@ -44,6 +44,7 @@
#include <utils/headerviewstretcher.h> #include <utils/headerviewstretcher.h>
#include <utils/infolabel.h> #include <utils/infolabel.h>
#include <utils/itemviews.h> #include <utils/itemviews.h>
#include <utils/layoutbuilder.h>
#include <utils/progressindicator.h> #include <utils/progressindicator.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -54,6 +55,7 @@
#include <QMenu> #include <QMenu>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace CMakeProjectManager { namespace CMakeProjectManager {
namespace Internal { namespace Internal {
@@ -100,7 +102,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
int row = 0; int row = 0;
auto buildDirAspect = bc->buildDirectoryAspect(); auto buildDirAspect = bc->buildDirectoryAspect();
connect(buildDirAspect, &ProjectConfigurationAspect::changed, this, [this]() { connect(buildDirAspect, &BaseAspect::changed, this, [this]() {
m_configModel->flush(); // clear out config cache...; m_configModel->flush(); // clear out config cache...;
}); });
auto initialCMakeAspect = bc->aspect<InitialCMakeArgumentsAspect>(); auto initialCMakeAspect = bc->aspect<InitialCMakeArgumentsAspect>();

View File

@@ -42,6 +42,7 @@
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/layoutbuilder.h>
#include <QBoxLayout> #include <QBoxLayout>
#include <QListWidget> #include <QListWidget>

View File

@@ -28,9 +28,10 @@
#include <projectexplorer/abstractprocessstep.h> #include <projectexplorer/abstractprocessstep.h>
#include <utils/treemodel.h> #include <utils/treemodel.h>
namespace Utils { class CommandLine; } namespace Utils {
class CommandLine;
namespace ProjectExplorer { class StringAspect; } class StringAspect;
} // Utils
namespace CMakeProjectManager { namespace CMakeProjectManager {
namespace Internal { namespace Internal {
@@ -103,8 +104,8 @@ private:
friend class CMakeBuildStepConfigWidget; friend class CMakeBuildStepConfigWidget;
QStringList m_buildTargets; // Convention: Empty string member signifies "Current executable" QStringList m_buildTargets; // Convention: Empty string member signifies "Current executable"
ProjectExplorer::StringAspect *m_cmakeArguments = nullptr; Utils::StringAspect *m_cmakeArguments = nullptr;
ProjectExplorer::StringAspect *m_toolArguments = nullptr; Utils::StringAspect *m_toolArguments = nullptr;
bool m_waiting = false; bool m_waiting = false;
Utils::TreeModel<Utils::TreeItem, CMakeTargetItem> m_buildTargetModel; Utils::TreeModel<Utils::TreeItem, CMakeTargetItem> m_buildTargetModel;

View File

@@ -32,7 +32,6 @@
#include "cmaketoolmanager.h" #include "cmaketoolmanager.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorersettings.h> #include <projectexplorer/projectexplorersettings.h>
@@ -49,6 +48,7 @@
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/variablechooser.h>
#include <QComboBox> #include <QComboBox>
#include <QDialog> #include <QDialog>
@@ -877,7 +877,7 @@ private:
"You may provide a type hint by adding \":TYPE\" before the \"=\".")); "You may provide a type hint by adding \":TYPE\" before the \"=\"."));
m_editor->setMinimumSize(800, 200); m_editor->setMinimumSize(800, 200);
auto chooser = new Core::VariableChooser(m_dialog); auto chooser = new Utils::VariableChooser(m_dialog);
chooser->addSupportedWidget(m_editor); chooser->addSupportedWidget(m_editor);
chooser->addMacroExpanderProvider([this]() { return kit()->macroExpander(); }); chooser->addMacroExpanderProvider([this]() { return kit()->macroExpander(); });

View File

@@ -146,7 +146,6 @@ add_qtc_plugin(Core
systemsettings.cpp systemsettings.h systemsettings.ui systemsettings.cpp systemsettings.h systemsettings.ui
textdocument.cpp textdocument.h textdocument.cpp textdocument.h
themechooser.cpp themechooser.h themechooser.cpp themechooser.h
variablechooser.cpp variablechooser.h
vcsmanager.cpp vcsmanager.h vcsmanager.cpp vcsmanager.h
versiondialog.cpp versiondialog.h versiondialog.cpp versiondialog.h
welcomepagehelper.cpp welcomepagehelper.h welcomepagehelper.cpp welcomepagehelper.h

View File

@@ -86,7 +86,6 @@ SOURCES += corejsextensions.cpp \
externaltool.cpp \ externaltool.cpp \
dialogs/externaltoolconfig.cpp \ dialogs/externaltoolconfig.cpp \
dialogs/filepropertiesdialog.cpp \ dialogs/filepropertiesdialog.cpp \
variablechooser.cpp \
mimetypemagicdialog.cpp \ mimetypemagicdialog.cpp \
mimetypesettings.cpp \ mimetypesettings.cpp \
dialogs/promptoverwritedialog.cpp \ dialogs/promptoverwritedialog.cpp \
@@ -201,7 +200,6 @@ HEADERS += corejsextensions.h \
externaltool.h \ externaltool.h \
dialogs/externaltoolconfig.h \ dialogs/externaltoolconfig.h \
dialogs/filepropertiesdialog.h \ dialogs/filepropertiesdialog.h \
variablechooser.h \
mimetypemagicdialog.h \ mimetypemagicdialog.h \
mimetypesettings.h \ mimetypesettings.h \
dialogs/promptoverwritedialog.h \ dialogs/promptoverwritedialog.h \

View File

@@ -175,8 +175,6 @@ Project {
"textdocument.h", "textdocument.h",
"themechooser.cpp", "themechooser.cpp",
"themechooser.h", "themechooser.h",
"variablechooser.cpp",
"variablechooser.h",
"vcsmanager.cpp", "vcsmanager.cpp",
"vcsmanager.h", "vcsmanager.h",
"versiondialog.cpp", "versiondialog.cpp",

View File

@@ -36,12 +36,12 @@
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/variablechooser.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/externaltool.h> #include <coreplugin/externaltool.h>
#include <coreplugin/externaltoolmanager.h> #include <coreplugin/externaltoolmanager.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QDir> #include <QDir>

View File

@@ -32,9 +32,9 @@
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/variablechooser.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <debugger/analyzer/analyzericons.h> #include <debugger/analyzer/analyzericons.h>
@@ -66,7 +66,7 @@ OptionsWidget::OptionsWidget(QWidget *parent)
m_binary->setExpectedKind(Utils::PathChooser::ExistingCommand); m_binary->setExpectedKind(Utils::PathChooser::ExistingCommand);
m_binary->setCommandVersionArguments({"--version"}); m_binary->setCommandVersionArguments({"--version"});
auto variableChooser = new Core::VariableChooser(this); auto variableChooser = new Utils::VariableChooser(this);
variableChooser->addSupportedWidget (m_customArguments); variableChooser->addSupportedWidget (m_customArguments);
m_unusedFunction->setToolTip(tr("Disables multithreaded check.")); m_unusedFunction->setToolTip(tr("Disables multithreaded check."));

View File

@@ -31,7 +31,6 @@
#include "debuggersourcepathmappingwidget.h" #include "debuggersourcepathmappingwidget.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <app/app_version.h> #include <app/app_version.h>
@@ -39,6 +38,7 @@
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/savedaction.h> #include <utils/savedaction.h>
#include <utils/variablechooser.h>
#include <QCheckBox> #include <QCheckBox>
#include <QCoreApplication> #include <QCoreApplication>

View File

@@ -40,14 +40,17 @@
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <qtsupport/qtbuildaspects.h> #include <qtsupport/qtbuildaspects.h>
#include <utils/layoutbuilder.h>
#include <QCheckBox> #include <QCheckBox>
#include <QDebug> #include <QDebug>
#include <QFormLayout> #include <QFormLayout>
#include <QLabel> #include <QLabel>
#include <QTextEdit> #include <QTextEdit>
using namespace ProjectExplorer;
using namespace Debugger::Internal; using namespace Debugger::Internal;
using namespace ProjectExplorer;
using namespace Utils;
namespace Debugger { namespace Debugger {
namespace Internal { namespace Internal {
@@ -58,7 +61,7 @@ enum DebuggerLanguageStatus {
AutoEnabledLanguage AutoEnabledLanguage
}; };
class DebuggerLanguageAspect : public ProjectConfigurationAspect class DebuggerLanguageAspect : public BaseAspect
{ {
public: public:
DebuggerLanguageAspect() = default; DebuggerLanguageAspect() = default;

View File

@@ -59,8 +59,8 @@ public:
private: private:
Internal::DebuggerLanguageAspect *m_cppAspect; Internal::DebuggerLanguageAspect *m_cppAspect;
Internal::DebuggerLanguageAspect *m_qmlAspect; Internal::DebuggerLanguageAspect *m_qmlAspect;
ProjectExplorer::BoolAspect *m_multiProcessAspect; Utils::BoolAspect *m_multiProcessAspect;
ProjectExplorer::StringAspect *m_overrideStartupAspect; Utils::StringAspect *m_overrideStartupAspect;
ProjectExplorer::Target *m_target; ProjectExplorer::Target *m_target;
}; };

View File

@@ -26,14 +26,13 @@
#include "debuggersourcepathmappingwidget.h" #include "debuggersourcepathmappingwidget.h"
#include "debuggerengine.h" #include "debuggerengine.h"
#include <coreplugin/variablechooser.h>
#include <utils/buildablehelperlibrary.h> #include <utils/buildablehelperlibrary.h>
#include <utils/fancylineedit.h> #include <utils/fancylineedit.h>
#include <utils/hostosinfo.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/synchronousprocess.h> #include <utils/synchronousprocess.h>
#include <utils/hostosinfo.h> #include <utils/variablechooser.h>
#include <QStandardItemModel> #include <QStandardItemModel>
#include <QTreeView> #include <QTreeView>
@@ -276,7 +275,7 @@ DebuggerSourcePathMappingWidget::DebuggerSourcePathMappingWidget(QWidget *parent
editLayout->addRow(editTargetLabel, m_targetChooser); editLayout->addRow(editTargetLabel, m_targetChooser);
editLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); editLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
auto chooser = new Core::VariableChooser(this); auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(m_targetChooser->lineEdit()); chooser->addSupportedWidget(m_targetChooser->lineEdit());
// Main layout // Main layout

View File

@@ -31,11 +31,11 @@
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <utils/fancylineedit.h> #include <utils/fancylineedit.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/savedaction.h> #include <utils/savedaction.h>
#include <utils/variablechooser.h>
#include <QCheckBox> #include <QCheckBox>
#include <QCoreApplication> #include <QCoreApplication>

View File

@@ -32,13 +32,13 @@
#include <projectexplorer/buildinfo.h> #include <projectexplorer/buildinfo.h>
#include <projectexplorer/buildsteplist.h> #include <projectexplorer/buildsteplist.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <qtsupport/baseqtversion.h> #include <qtsupport/baseqtversion.h>
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <utils/aspects.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>

View File

@@ -33,9 +33,10 @@
#include <projectexplorer/gnumakeparser.h> #include <projectexplorer/gnumakeparser.h>
#include <projectexplorer/kit.h> #include <projectexplorer/kit.h>
#include <projectexplorer/processparameters.h> #include <projectexplorer/processparameters.h>
#include <projectexplorer/projectconfigurationaspects.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/aspects.h>
#include <utils/environment.h> #include <utils/environment.h>
using namespace ProjectExplorer; using namespace ProjectExplorer;

View File

@@ -34,6 +34,7 @@
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/layoutbuilder.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <QComboBox> #include <QComboBox>

View File

@@ -26,7 +26,8 @@
#pragma once #pragma once
#include <projectexplorer/buildstep.h> #include <projectexplorer/buildstep.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <utils/aspects.h>
#include <QLabel> #include <QLabel>
#include <QPointer> #include <QPointer>
@@ -34,7 +35,7 @@
namespace IncrediBuild { namespace IncrediBuild {
namespace Internal { namespace Internal {
class CommandBuilderAspect final : public ProjectExplorer::ProjectConfigurationAspect class CommandBuilderAspect final : public Utils::BaseAspect
{ {
public: public:
explicit CommandBuilderAspect(ProjectExplorer::BuildStep *step); explicit CommandBuilderAspect(ProjectExplorer::BuildStep *step);
@@ -43,7 +44,7 @@ public:
QString fullCommandFlag(bool keepJobNum) const; QString fullCommandFlag(bool keepJobNum) const;
private: private:
void addToLayout(ProjectExplorer::LayoutBuilder &builder) final; void addToLayout(Utils::LayoutBuilder &builder) final;
void fromMap(const QVariantMap &map) final; void fromMap(const QVariantMap &map) final;
void toMap(QVariantMap &map) const final; void toMap(QVariantMap &map) const final;

View File

@@ -33,9 +33,11 @@
#include <projectexplorer/gnumakeparser.h> #include <projectexplorer/gnumakeparser.h>
#include <projectexplorer/kit.h> #include <projectexplorer/kit.h>
#include <projectexplorer/processparameters.h> #include <projectexplorer/processparameters.h>
#include <projectexplorer/projectconfigurationaspects.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/aspects.h>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;

View File

@@ -47,6 +47,7 @@
using namespace QmakeProjectManager; using namespace QmakeProjectManager;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace Ios { namespace Ios {
namespace Internal { namespace Internal {

View File

@@ -26,7 +26,7 @@
#include "qmakeprojectmanager/qmakebuildconfiguration.h" #include "qmakeprojectmanager/qmakebuildconfiguration.h"
#include <projectexplorer/projectconfigurationaspects.h> #include <utils/aspects.h>
namespace Ios { namespace Ios {
namespace Internal { namespace Internal {
@@ -46,8 +46,8 @@ private:
void updateQmakeCommand(); void updateQmakeCommand();
ProjectExplorer::StringAspect *m_signingIdentifier = nullptr; Utils::StringAspect *m_signingIdentifier = nullptr;
ProjectExplorer::BoolAspect *m_autoManagedSigning = nullptr; Utils::BoolAspect *m_autoManagedSigning = nullptr;
}; };
class IosBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfigurationFactory class IosBuildConfigurationFactory : public QmakeProjectManager::QmakeBuildConfigurationFactory

View File

@@ -43,6 +43,7 @@
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/layoutbuilder.h>
#include <QAction> #include <QAction>
#include <QApplication> #include <QApplication>
@@ -77,14 +78,14 @@ static IosDeviceType toIosDeviceType(const SimulatorInfo &device)
return iosDeviceType; return iosDeviceType;
} }
class IosDeviceTypeAspect : public ProjectConfigurationAspect class IosDeviceTypeAspect : public BaseAspect
{ {
public: public:
IosDeviceTypeAspect(IosRunConfiguration *runConfiguration); IosDeviceTypeAspect(IosRunConfiguration *runConfiguration);
void fromMap(const QVariantMap &map) override; void fromMap(const QVariantMap &map) override;
void toMap(QVariantMap &map) const override; void toMap(QVariantMap &map) const override;
void addToLayout(ProjectExplorer::LayoutBuilder &builder) override; void addToLayout(LayoutBuilder &builder) override;
IosDeviceType deviceType() const; IosDeviceType deviceType() const;
void setDeviceType(const IosDeviceType &deviceType); void setDeviceType(const IosDeviceType &deviceType);

View File

@@ -33,7 +33,6 @@
#include <coreplugin/editormanager/documentmodel.h> #include <coreplugin/editormanager/documentmodel.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <coreplugin/variablechooser.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/session.h> #include <projectexplorer/session.h>
@@ -45,6 +44,7 @@
#include <utils/mimetypes/mimedatabase.h> #include <utils/mimetypes/mimedatabase.h>
#include <utils/jsontreeitem.h> #include <utils/jsontreeitem.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
#include <utils/variablechooser.h>
#include <QBoxLayout> #include <QBoxLayout>
#include <QComboBox> #include <QComboBox>
@@ -728,7 +728,7 @@ BaseSettingsWidget::BaseSettingsWidget(const BaseSettings *settings, QWidget *pa
mainLayout->addWidget(new QLabel(tr("Name:")), row, 0); mainLayout->addWidget(new QLabel(tr("Name:")), row, 0);
mainLayout->addWidget(m_name, row, 1); mainLayout->addWidget(m_name, row, 1);
auto chooser = new Core::VariableChooser(this); auto chooser = new Utils::VariableChooser(this);
chooser->addSupportedWidget(m_name); chooser->addSupportedWidget(m_name);
mainLayout->addWidget(new QLabel(tr("Language:")), ++row, 0); mainLayout->addWidget(new QLabel(tr("Language:")), ++row, 0);
@@ -935,7 +935,7 @@ StdIOSettingsWidget::StdIOSettingsWidget(const StdIOSettings *settings, QWidget
m_executable->setPath(QDir::toNativeSeparators(settings->m_executable)); m_executable->setPath(QDir::toNativeSeparators(settings->m_executable));
mainLayout->addWidget(m_arguments, baseRows + 1, 1); mainLayout->addWidget(m_arguments, baseRows + 1, 1);
auto chooser = new Core::VariableChooser(this); auto chooser = new Utils::VariableChooser(this);
chooser->addSupportedWidget(m_arguments); chooser->addSupportedWidget(m_arguments);
} }

View File

@@ -26,16 +26,18 @@
#include "mcusupportrunconfiguration.h" #include "mcusupportrunconfiguration.h"
#include "mcusupportconstants.h" #include "mcusupportconstants.h"
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/devicesupport/devicemanager.h> #include <projectexplorer/devicesupport/devicemanager.h>
#include <projectexplorer/devicesupport/deviceusedportsgatherer.h> #include <projectexplorer/devicesupport/deviceusedportsgatherer.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/runcontrol.h> #include <projectexplorer/runcontrol.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <cmakeprojectmanager/cmakekitinformation.h> #include <cmakeprojectmanager/cmakekitinformation.h>
#include <cmakeprojectmanager/cmaketool.h> #include <cmakeprojectmanager/cmaketool.h>
#include <utils/aspects.h>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;

View File

@@ -27,14 +27,18 @@
#include <projectexplorer/projectconfiguration.h> #include <projectexplorer/projectconfiguration.h>
#include <utils/detailswidget.h> #include <utils/detailswidget.h>
#include <utils/headerviewstretcher.h> #include <utils/headerviewstretcher.h>
#include <utils/layoutbuilder.h>
#include "../mesonbuildconfiguration.h" #include "../mesonbuildconfiguration.h"
#include "../mesonbuildsystem.h" #include "../mesonbuildsystem.h"
#include "mesonbuildsettingswidget.h" #include "mesonbuildsettingswidget.h"
#include "ui_mesonbuildsettingswidget.h" #include "ui_mesonbuildsettingswidget.h"
using namespace Utils;
namespace MesonProjectManager { namespace MesonProjectManager {
namespace Internal { namespace Internal {
MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buildCfg) MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buildCfg)
: ProjectExplorer::NamedWidget{tr("Meson")} : ProjectExplorer::NamedWidget{tr("Meson")}
, ui{new Ui::MesonBuildSettingsWidget} , ui{new Ui::MesonBuildSettingsWidget}
@@ -43,7 +47,7 @@ MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buil
ui->setupUi(this); ui->setupUi(this);
ui->container->setState(Utils::DetailsWidget::NoSummary); ui->container->setState(Utils::DetailsWidget::NoSummary);
ui->container->setWidget(ui->details); ui->container->setWidget(ui->details);
ProjectExplorer::LayoutBuilder buildDirWBuilder{ui->buildDirWidget}; LayoutBuilder buildDirWBuilder{ui->buildDirWidget};
auto buildDirAspect = buildCfg->buildDirectoryAspect(); auto buildDirAspect = buildCfg->buildDirectoryAspect();
buildDirAspect->addToLayout(buildDirWBuilder); buildDirAspect->addToLayout(buildDirWBuilder);

View File

@@ -34,11 +34,12 @@
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/processparameters.h> #include <projectexplorer/processparameters.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/aspects.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/layoutbuilder.h>
#include <QFormLayout> #include <QFormLayout>
#include <QLineEdit> #include <QLineEdit>

View File

@@ -38,7 +38,8 @@
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectmacroexpander.h> #include <projectexplorer/projectmacroexpander.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <utils/aspects.h>
#include <utils/mimetypes/mimedatabase.h> #include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>

View File

@@ -28,8 +28,9 @@
#include "../nimconstants.h" #include "../nimconstants.h"
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <utils/aspects.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QDir> #include <QDir>

View File

@@ -127,7 +127,6 @@ add_qtc_plugin(ProjectExplorer
processstep.cpp processstep.h processstep.cpp processstep.h
project.cpp project.h project.cpp project.h
projectconfiguration.cpp projectconfiguration.h projectconfiguration.cpp projectconfiguration.h
projectconfigurationaspects.cpp projectconfigurationaspects.h
projectconfigurationmodel.cpp projectconfigurationmodel.h projectconfigurationmodel.cpp projectconfigurationmodel.h
projectexplorer.cpp projectexplorer.h projectexplorer.cpp projectexplorer.h
projectexplorer.qrc projectexplorer.qrc

View File

@@ -30,6 +30,7 @@
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/infolabel.h> #include <utils/infolabel.h>
#include <utils/layoutbuilder.h>
#include <QLayout> #include <QLayout>

View File

@@ -26,13 +26,14 @@
#pragma once #pragma once
#include "projectexplorer_export.h" #include "projectexplorer_export.h"
#include "projectconfigurationaspects.h"
#include <utils/aspects.h>
namespace Utils { class FilePath; } namespace Utils { class FilePath; }
namespace ProjectExplorer { namespace ProjectExplorer {
class PROJECTEXPLORER_EXPORT BuildDirectoryAspect : public StringAspect class PROJECTEXPLORER_EXPORT BuildDirectoryAspect : public Utils::StringAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
@@ -43,7 +44,7 @@ public:
bool isShadowBuild() const; bool isShadowBuild() const;
void setProblem(const QString &description); void setProblem(const QString &description);
void addToLayout(LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
private: private:
void toMap(QVariantMap &map) const override; void toMap(QVariantMap &map) const override;
@@ -55,7 +56,7 @@ private:
Private * const d; Private * const d;
}; };
class PROJECTEXPLORER_EXPORT SeparateDebugInfoAspect : public TriStateAspect class PROJECTEXPLORER_EXPORT SeparateDebugInfoAspect : public Utils::TriStateAspect
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@@ -46,14 +46,15 @@
#include "toolchain.h" #include "toolchain.h"
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <coreplugin/variablechooser.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/detailswidget.h> #include <utils/detailswidget.h>
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h> #include <utils/mimetypes/mimedatabase.h>
#include <utils/mimetypes/mimetype.h> #include <utils/mimetypes/mimetype.h>
#include <utils/layoutbuilder.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/variablechooser.h>
#include <QCheckBox> #include <QCheckBox>
#include <QDebug> #include <QDebug>
@@ -306,7 +307,7 @@ NamedWidget *BuildConfiguration::createConfigWidget()
} }
LayoutBuilder builder(widget); LayoutBuilder builder(widget);
for (ProjectConfigurationAspect *aspect : aspects()) { for (BaseAspect *aspect : aspects()) {
if (aspect->isVisible()) if (aspect->isVisible())
aspect->addToLayout(builder.startNewRow()); aspect->addToLayout(builder.startNewRow());
} }

View File

@@ -25,7 +25,9 @@
#pragma once #pragma once
#include "projectconfigurationaspects.h" #include "projectexplorer_export.h"
#include <utils/aspects.h>
namespace ProjectExplorer { namespace ProjectExplorer {
@@ -33,9 +35,9 @@ class PROJECTEXPLORER_EXPORT BuildPropertiesSettings
{ {
public: public:
QString buildDirectoryTemplate; QString buildDirectoryTemplate;
TriState separateDebugInfo; Utils::TriState separateDebugInfo;
TriState qmlDebugging; Utils::TriState qmlDebugging;
TriState qtQuickCompiler; Utils::TriState qtQuickCompiler;
bool showQtSettings = false; bool showQtSettings = false;
}; };

View File

@@ -28,7 +28,7 @@
#include "buildpropertiessettings.h" #include "buildpropertiessettings.h"
#include "projectexplorer.h" #include "projectexplorer.h"
#include <coreplugin/variablechooser.h> #include <utils/variablechooser.h>
#include <QComboBox> #include <QComboBox>
#include <QFormLayout> #include <QFormLayout>
@@ -36,6 +36,8 @@
#include <QLineEdit> #include <QLineEdit>
#include <QPushButton> #include <QPushButton>
using namespace Utils;
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal {
@@ -71,7 +73,7 @@ public:
resetButton->setEnabled(m_buildDirTemplateLineEdit.text() resetButton->setEnabled(m_buildDirTemplateLineEdit.text()
!= ProjectExplorerPlugin::defaultBuildDirectoryTemplate()); != ProjectExplorerPlugin::defaultBuildDirectoryTemplate());
}); });
const auto chooser = new Core::VariableChooser(this); const auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(&m_buildDirTemplateLineEdit); chooser->addSupportedWidget(&m_buildDirTemplateLineEdit);
m_buildDirTemplateLineEdit.setText(settings.buildDirectoryTemplate); m_buildDirTemplateLineEdit.setText(settings.buildDirectoryTemplate);
buildDirLayout->addWidget(&m_buildDirTemplateLineEdit); buildDirLayout->addWidget(&m_buildDirTemplateLineEdit);

View File

@@ -35,13 +35,13 @@
#include "projectexplorerconstants.h" #include "projectexplorerconstants.h"
#include "target.h" #include "target.h"
#include <coreplugin/variablechooser.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/fileinprojectfinder.h> #include <utils/fileinprojectfinder.h>
#include <utils/layoutbuilder.h>
#include <utils/outputformatter.h> #include <utils/outputformatter.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/runextensions.h> #include <utils/runextensions.h>
#include <utils/variablechooser.h>
#include <QFormLayout> #include <QFormLayout>
#include <QFutureWatcher> #include <QFutureWatcher>
@@ -159,7 +159,7 @@ BuildStepConfigWidget *BuildStep::createConfigWidget()
{ {
LayoutBuilder builder(widget); LayoutBuilder builder(widget);
for (ProjectConfigurationAspect *aspect : m_aspects) { for (BaseAspect *aspect : qAsConst(m_aspects)) {
if (aspect->isVisible()) if (aspect->isVisible())
aspect->addToLayout(builder.startNewRow()); aspect->addToLayout(builder.startNewRow());
} }
@@ -171,7 +171,7 @@ BuildStepConfigWidget *BuildStep::createConfigWidget()
widget->setSummaryUpdater(m_summaryUpdater); widget->setSummaryUpdater(m_summaryUpdater);
if (m_addMacroExpander) if (m_addMacroExpander)
Core::VariableChooser::addSupportForChildWidgets(widget, macroExpander()); VariableChooser::addSupportForChildWidgets(widget, macroExpander());
return widget; return widget;
} }
@@ -493,7 +493,7 @@ BuildStepConfigWidget::BuildStepConfigWidget(BuildStep *step)
connect(m_step, &ProjectConfiguration::displayNameChanged, connect(m_step, &ProjectConfiguration::displayNameChanged,
this, &BuildStepConfigWidget::updateSummary); this, &BuildStepConfigWidget::updateSummary);
for (auto aspect : step->aspects()) { for (auto aspect : step->aspects()) {
connect(aspect, &ProjectConfigurationAspect::changed, connect(aspect, &BaseAspect::changed,
this, &BuildStepConfigWidget::recreateSummary); this, &BuildStepConfigWidget::recreateSummary);
} }
} }

View File

@@ -35,11 +35,11 @@
#include "target.h" #include "target.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <utils/detailswidget.h> #include <utils/detailswidget.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
#include <utils/variablechooser.h>
#include <QDialog> #include <QDialog>
#include <QDialogButtonBox> #include <QDialogButtonBox>

View File

@@ -93,7 +93,7 @@ public:
CustomParserExpression warning; CustomParserExpression warning;
}; };
class PROJECTEXPLORER_EXPORT CustomParsersAspect : public ProjectConfigurationAspect class PROJECTEXPLORER_EXPORT CustomParsersAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@@ -29,6 +29,7 @@
#include "runconfiguration.h" #include "runconfiguration.h"
#include <utils/aspects.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <QList> #include <QList>
@@ -36,7 +37,7 @@
namespace ProjectExplorer { namespace ProjectExplorer {
class PROJECTEXPLORER_EXPORT EnvironmentAspect : public ProjectConfigurationAspect class PROJECTEXPLORER_EXPORT EnvironmentAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT

View File

@@ -36,7 +36,6 @@
#include "toolchainmanager.h" #include "toolchainmanager.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <ssh/sshconnection.h> #include <ssh/sshconnection.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/elidinglabel.h> #include <utils/elidinglabel.h>
@@ -45,6 +44,7 @@
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/variablechooser.h>
#include <QCheckBox> #include <QCheckBox>
#include <QComboBox> #include <QComboBox>
@@ -1162,7 +1162,7 @@ private:
{ {
Utils::MacroExpander *expander = m_kit->macroExpander(); Utils::MacroExpander *expander = m_kit->macroExpander();
Utils::EnvironmentDialog::Polisher polisher = [expander](QWidget *w) { Utils::EnvironmentDialog::Polisher polisher = [expander](QWidget *w) {
Core::VariableChooser::addSupportForChildWidgets(w, expander); Utils::VariableChooser::addSupportForChildWidgets(w, expander);
}; };
auto changes = Utils::EnvironmentDialog::getEnvironmentItems(m_summaryLabel, auto changes = Utils::EnvironmentDialog::getEnvironmentItems(m_summaryLabel,
currentEnvironment(), currentEnvironment(),

View File

@@ -33,14 +33,14 @@
#include "projectexplorerconstants.h" #include "projectexplorerconstants.h"
#include "task.h" #include "task.h"
#include <coreplugin/variablechooser.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/detailswidget.h> #include <utils/detailswidget.h>
#include <utils/layoutbuilder.h>
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <utils/variablechooser.h>
#include <QAction> #include <QAction>
#include <QRegularExpression> #include <QRegularExpression>
@@ -59,6 +59,8 @@
static const char WORKING_COPY_KIT_ID[] = "modified kit"; static const char WORKING_COPY_KIT_ID[] = "modified kit";
using namespace Utils;
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal {
@@ -116,7 +118,7 @@ KitManagerConfigWidget::KitManagerConfigWidget(Kit *k) :
connect(km, &KitManager::kitUpdated, connect(km, &KitManager::kitUpdated,
this, &KitManagerConfigWidget::kitWasUpdated); this, &KitManagerConfigWidget::kitWasUpdated);
auto chooser = new Core::VariableChooser(this); auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(m_nameEdit); chooser->addSupportedWidget(m_nameEdit);
chooser->addMacroExpanderProvider([this]() { return m_modifiedKit->macroExpander(); }); chooser->addMacroExpanderProvider([this]() { return m_modifiedKit->macroExpander(); });

View File

@@ -34,15 +34,16 @@
#include "projectexplorerconstants.h" #include "projectexplorerconstants.h"
#include "target.h" #include "target.h"
#include "toolchain.h" #include "toolchain.h"
#include "projectconfigurationaspects.h"
#include <coreplugin/variablechooser.h> #include <utils/aspects.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/layoutbuilder.h>
#include <utils/optional.h> #include <utils/optional.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <utils/variablechooser.h>
#include <QCheckBox> #include <QCheckBox>
#include <QFormLayout> #include <QFormLayout>
@@ -381,8 +382,7 @@ BuildStepConfigWidget *MakeStep::createConfigWidget()
targetsList->hide(); targetsList->hide();
} }
Core::VariableChooser::addSupportForChildWidgets(widget, macroExpander()); VariableChooser::addSupportForChildWidgets(widget, macroExpander());
widget->setSummaryUpdater([this] { widget->setSummaryUpdater([this] {
const CommandLine make = effectiveMakeCommand(MakeStep::Display); const CommandLine make = effectiveMakeCommand(MakeStep::Display);

View File

@@ -27,6 +27,7 @@
#include "abstractprocessstep.h" #include "abstractprocessstep.h"
#include <utils/aspects.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
namespace Utils { class Environment; } namespace Utils { class Environment; }
@@ -35,13 +36,6 @@ namespace ProjectExplorer {
namespace Internal { class MakeStepConfigWidget; } namespace Internal { class MakeStepConfigWidget; }
class AspectContainer;
class BoolAspect;
class IntegerAspect;
class StringAspect;
class StringListAspect;
class TextDisplay;
class PROJECTEXPLORER_EXPORT MakeStep : public ProjectExplorer::AbstractProcessStep class PROJECTEXPLORER_EXPORT MakeStep : public ProjectExplorer::AbstractProcessStep
{ {
Q_OBJECT Q_OBJECT
@@ -97,15 +91,15 @@ private:
static int defaultJobCount(); static int defaultJobCount();
QStringList jobArguments() const; QStringList jobArguments() const;
StringListAspect *m_buildTargetsAspect = nullptr; Utils::StringListAspect *m_buildTargetsAspect = nullptr;
QStringList m_availableTargets; QStringList m_availableTargets;
StringAspect *m_makeCommandAspect = nullptr; Utils::StringAspect *m_makeCommandAspect = nullptr;
StringAspect *m_userArgumentsAspect = nullptr; Utils::StringAspect *m_userArgumentsAspect = nullptr;
AspectContainer *m_jobCountContainer = nullptr; Utils::AspectContainer *m_jobCountContainer = nullptr;
IntegerAspect *m_userJobCountAspect = nullptr; Utils::IntegerAspect *m_userJobCountAspect = nullptr;
BoolAspect *m_overrideMakeflagsAspect = nullptr; Utils::BoolAspect *m_overrideMakeflagsAspect = nullptr;
TextDisplay *m_nonOverrideWarning = nullptr; Utils::TextDisplay *m_nonOverrideWarning = nullptr;
BoolAspect *m_cleanAspect = nullptr; Utils::BoolAspect *m_cleanAspect = nullptr;
bool m_disablingForSubDirsSupported = false; bool m_disablingForSubDirsSupported = false;
bool m_enabledForSubDirs = true; bool m_enabledForSubDirs = true;
}; };

View File

@@ -29,11 +29,11 @@
#include "buildconfiguration.h" #include "buildconfiguration.h"
#include "kit.h" #include "kit.h"
#include "processparameters.h" #include "processparameters.h"
#include "projectconfigurationaspects.h"
#include "projectexplorerconstants.h" #include "projectexplorerconstants.h"
#include "projectexplorer_export.h" #include "projectexplorer_export.h"
#include "target.h" #include "target.h"
#include <utils/aspects.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/outputformatter.h> #include <utils/outputformatter.h>

View File

@@ -37,179 +37,6 @@ using namespace ProjectExplorer;
const char CONFIGURATION_ID_KEY[] = "ProjectExplorer.ProjectConfiguration.Id"; const char CONFIGURATION_ID_KEY[] = "ProjectExplorer.ProjectConfiguration.Id";
const char DISPLAY_NAME_KEY[] = "ProjectExplorer.ProjectConfiguration.DisplayName"; const char DISPLAY_NAME_KEY[] = "ProjectExplorer.ProjectConfiguration.DisplayName";
// ProjectConfigurationAspect
ProjectConfigurationAspect::ProjectConfigurationAspect() = default;
ProjectConfigurationAspect::~ProjectConfigurationAspect() = default;
void ProjectConfigurationAspect::setConfigWidgetCreator
(const ConfigWidgetCreator &configWidgetCreator)
{
m_configWidgetCreator = configWidgetCreator;
}
QWidget *ProjectConfigurationAspect::createConfigWidget() const
{
return m_configWidgetCreator ? m_configWidgetCreator() : nullptr;
}
void ProjectConfigurationAspect::addToLayout(LayoutBuilder &)
{
}
// LayoutBuilder
LayoutBuilder::LayoutBuilder(QWidget *parent, LayoutType layoutType)
{
if (layoutType == FormLayout) {
m_formLayout = new QFormLayout(parent);
m_formLayout->setContentsMargins(0, 0, 0, 0);
m_formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
} else {
m_gridLayout = new QGridLayout(parent);
m_gridLayout->setContentsMargins(0, 0, 0, 0);
}
}
LayoutBuilder::LayoutBuilder(QLayout *layout)
{
if (auto fl = qobject_cast<QFormLayout *>(layout)) {
m_formLayout = fl;
} else if (auto grid = qobject_cast<QGridLayout *>(layout)) {
m_gridLayout = grid;
m_currentGridRow = grid->rowCount();
m_currentGridColumn = 0;
}
}
LayoutBuilder::~LayoutBuilder()
{
flushPendingFormItems();
}
LayoutBuilder &LayoutBuilder::startNewRow()
{
if (m_formLayout)
flushPendingFormItems();
if (m_gridLayout) {
if (m_currentGridColumn != 0) {
++m_currentGridRow;
m_currentGridColumn = 0;
}
}
return *this;
}
LayoutBuilder &LayoutBuilder::addRow(const LayoutItem &item)
{
startNewRow();
addItem(item);
return *this;
}
void LayoutBuilder::flushPendingFormItems()
{
QTC_ASSERT(m_formLayout, return);
if (m_pendingFormItems.isEmpty())
return;
// If there are more than two items, we cram the last ones in one hbox.
if (m_pendingFormItems.size() > 2) {
auto hbox = new QHBoxLayout;
hbox->setContentsMargins(0, 0, 0, 0);
for (int i = 1; i < m_pendingFormItems.size(); ++i) {
if (QWidget *w = m_pendingFormItems.at(i).widget)
hbox->addWidget(w);
else if (QLayout *l = m_pendingFormItems.at(i).layout)
hbox->addItem(l);
else
QTC_CHECK(false);
}
while (m_pendingFormItems.size() >= 2)
m_pendingFormItems.takeLast();
m_pendingFormItems.append(LayoutItem(hbox));
}
if (m_pendingFormItems.size() == 1) { // One one item given, so this spans both columns.
if (auto layout = m_pendingFormItems.at(0).layout)
m_formLayout->addRow(layout);
else if (auto widget = m_pendingFormItems.at(0).widget)
m_formLayout->addRow(widget);
} else if (m_pendingFormItems.size() == 2) { // Normal case, both columns used.
if (auto label = m_pendingFormItems.at(0).widget) {
if (auto layout = m_pendingFormItems.at(1).layout)
m_formLayout->addRow(label, layout);
else if (auto widget = m_pendingFormItems.at(1).widget)
m_formLayout->addRow(label, widget);
} else {
if (auto layout = m_pendingFormItems.at(1).layout)
m_formLayout->addRow(m_pendingFormItems.at(0).text, layout);
else if (auto widget = m_pendingFormItems.at(1).widget)
m_formLayout->addRow(m_pendingFormItems.at(0).text, widget);
}
} else {
QTC_CHECK(false);
}
m_pendingFormItems.clear();
}
QLayout *LayoutBuilder::layout() const
{
if (m_formLayout)
return m_formLayout;
return m_gridLayout;
}
LayoutBuilder &LayoutBuilder::addItem(LayoutItem item)
{
if (item.widget && !item.widget->parent())
item.widget->setParent(layout()->parentWidget());
if (item.aspect) {
item.aspect->addToLayout(*this);
} else {
if (m_gridLayout) {
if (auto widget = item.widget)
m_gridLayout->addWidget(widget, m_currentGridRow, m_currentGridColumn, 1, item.span, item.align);
m_currentGridColumn += item.span;
} else {
m_pendingFormItems.append(item);
}
}
return *this;
}
// ProjectConfigurationAspects
ProjectConfigurationAspects::ProjectConfigurationAspects() = default;
ProjectConfigurationAspects::~ProjectConfigurationAspects()
{
qDeleteAll(base());
}
ProjectConfigurationAspect *ProjectConfigurationAspects::aspect(Utils::Id id) const
{
return Utils::findOrDefault(base(), Utils::equal(&ProjectConfigurationAspect::id, id));
}
void ProjectConfigurationAspects::fromMap(const QVariantMap &map) const
{
for (ProjectConfigurationAspect *aspect : *this)
aspect->fromMap(map);
}
void ProjectConfigurationAspects::toMap(QVariantMap &map) const
{
for (ProjectConfigurationAspect *aspect : *this)
aspect->toMap(map);
}
// ProjectConfiguration // ProjectConfiguration
ProjectConfiguration::ProjectConfiguration(QObject *parent, Utils::Id id) ProjectConfiguration::ProjectConfiguration(QObject *parent, Utils::Id id)
@@ -302,14 +129,14 @@ bool ProjectConfiguration::fromMap(const QVariantMap &map)
return true; return true;
} }
ProjectConfigurationAspect *ProjectConfiguration::aspect(Utils::Id id) const Utils::BaseAspect *ProjectConfiguration::aspect(Utils::Id id) const
{ {
return m_aspects.aspect(id); return m_aspects.aspect(id);
} }
void ProjectConfiguration::acquaintAspects() void ProjectConfiguration::acquaintAspects()
{ {
for (ProjectConfigurationAspect *aspect : m_aspects) for (Utils::BaseAspect *aspect : m_aspects)
aspect->acquaintSiblings(m_aspects); aspect->acquaintSiblings(m_aspects);
} }

View File

@@ -27,6 +27,7 @@
#include "projectexplorer_export.h" #include "projectexplorer_export.h"
#include <utils/aspects.h>
#include <utils/displayname.h> #include <utils/displayname.h>
#include <utils/id.h> #include <utils/id.h>
@@ -36,150 +37,12 @@
#include <QVariantMap> #include <QVariantMap>
#include <QWidget> #include <QWidget>
QT_BEGIN_NAMESPACE
class QFormLayout;
class QGridLayout;
QT_END_NAMESPACE
namespace ProjectExplorer { namespace ProjectExplorer {
class Kit; class Kit;
class Project; class Project;
class ProjectConfigurationAspect;
class ProjectConfigurationAspects;
class Target; class Target;
class PROJECTEXPLORER_EXPORT LayoutBuilder
{
public:
enum LayoutType { GridLayout, FormLayout };
explicit LayoutBuilder(QWidget *parent, LayoutType layoutType = FormLayout);
explicit LayoutBuilder(QLayout *layout); // Adds to existing layout.
~LayoutBuilder();
class LayoutItem
{
public:
LayoutItem(QLayout *layout, int span = 1) : layout(layout), span(span) {}
LayoutItem(QWidget *widget, int span = 1, Qt::Alignment align = {})
: widget(widget), span(span), align(align) {}
LayoutItem(ProjectConfigurationAspect *aspect) : aspect(aspect) {}
LayoutItem(const QString &text) : text(text) {}
QLayout *layout = nullptr;
QWidget *widget = nullptr;
ProjectConfigurationAspect *aspect = nullptr;
QString text;
int span = 1;
Qt::Alignment align;
};
template<typename ...Items>
LayoutBuilder &addItems(LayoutItem first, Items... rest) {
return addItem(first).addItems(rest...);
}
LayoutBuilder &addItems() { return *this; }
LayoutBuilder &addItem(LayoutItem item);
LayoutBuilder &startNewRow();
LayoutBuilder &addRow(const LayoutItem &item);
QLayout *layout() const;
private:
void flushPendingFormItems();
QFormLayout *m_formLayout = nullptr;
QGridLayout *m_gridLayout = nullptr;
QList<LayoutItem> m_pendingFormItems;
int m_currentGridRow = 0;
int m_currentGridColumn = 0;
};
class PROJECTEXPLORER_EXPORT ProjectConfigurationAspect : public QObject
{
Q_OBJECT
public:
ProjectConfigurationAspect();
~ProjectConfigurationAspect() override;
void setId(Utils::Id id) { m_id = id; }
void setDisplayName(const QString &displayName) { m_displayName = displayName; }
void setSettingsKey(const QString &settingsKey) { m_settingsKey = settingsKey; }
Utils::Id id() const { return m_id; }
QString displayName() const { return m_displayName; }
QString settingsKey() const { return m_settingsKey; }
bool isVisible() const { return m_visible; }
void setVisible(bool visible) { m_visible = visible; }
using ConfigWidgetCreator = std::function<QWidget *()>;
void setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator);
QWidget *createConfigWidget() const;
virtual void fromMap(const QVariantMap &) {}
virtual void toMap(QVariantMap &) const {}
virtual void acquaintSiblings(const ProjectConfigurationAspects &) {}
virtual void addToLayout(LayoutBuilder &builder);
signals:
void changed();
protected:
virtual void setVisibleDynamic(bool visible) { Q_UNUSED(visible) } // TODO: Better name? Merge with setVisible() somehow?
Utils::Id m_id;
QString m_displayName;
QString m_settingsKey; // Name of data in settings.
bool m_visible = true;
ConfigWidgetCreator m_configWidgetCreator;
};
class PROJECTEXPLORER_EXPORT ProjectConfigurationAspects
: private QList<ProjectConfigurationAspect *>
{
using Base = QList<ProjectConfigurationAspect *>;
public:
ProjectConfigurationAspects();
ProjectConfigurationAspects(const ProjectConfigurationAspects &) = delete;
ProjectConfigurationAspects &operator=(const ProjectConfigurationAspects &) = delete;
~ProjectConfigurationAspects();
template <class Aspect, typename ...Args>
Aspect *addAspect(Args && ...args)
{
auto aspect = new Aspect(args...);
append(aspect);
return aspect;
}
ProjectConfigurationAspect *aspect(Utils::Id id) const;
template <typename T> T *aspect() const
{
for (ProjectConfigurationAspect *aspect : *this)
if (T *result = qobject_cast<T *>(aspect))
return result;
return nullptr;
}
void fromMap(const QVariantMap &map) const;
void toMap(QVariantMap &map) const;
using Base::append;
using Base::begin;
using Base::end;
private:
Base &base() { return *this; }
const Base &base() const { return *this; }
};
class PROJECTEXPLORER_EXPORT ProjectConfiguration : public QObject class PROJECTEXPLORER_EXPORT ProjectConfiguration : public QObject
{ {
Q_OBJECT Q_OBJECT
@@ -218,9 +81,9 @@ public:
return m_aspects.addAspect<Aspect>(std::forward<Args>(args)...); return m_aspects.addAspect<Aspect>(std::forward<Args>(args)...);
} }
const ProjectConfigurationAspects &aspects() const { return m_aspects; } const Utils::BaseAspects &aspects() const { return m_aspects; }
ProjectConfigurationAspect *aspect(Utils::Id id) const; Utils::BaseAspect *aspect(Utils::Id id) const;
template <typename T> T *aspect() const { return m_aspects.aspect<T>(); } template <typename T> T *aspect() const { return m_aspects.aspect<T>(); }
void acquaintAspects(); void acquaintAspects();
@@ -230,7 +93,7 @@ signals:
void toolTipChanged(); void toolTipChanged();
protected: protected:
ProjectConfigurationAspects m_aspects; Utils::BaseAspects m_aspects;
private: private:
QPointer<Target> m_target; QPointer<Target> m_target;

View File

@@ -163,7 +163,6 @@ HEADERS += projectexplorer.h \
projectmacro.h \ projectmacro.h \
makestep.h \ makestep.h \
parseissuesdialog.h \ parseissuesdialog.h \
projectconfigurationaspects.h \
treescanner.h \ treescanner.h \
rawprojectpart.h \ rawprojectpart.h \
simpleprojectwizard.h simpleprojectwizard.h
@@ -310,7 +309,6 @@ SOURCES += projectexplorer.cpp \
projectmacro.cpp \ projectmacro.cpp \
makestep.cpp \ makestep.cpp \
parseissuesdialog.cpp \ parseissuesdialog.cpp \
projectconfigurationaspects.cpp \
treescanner.cpp \ treescanner.cpp \
rawprojectpart.cpp \ rawprojectpart.cpp \
simpleprojectwizard.cpp simpleprojectwizard.cpp

View File

@@ -107,7 +107,6 @@ Project {
"processstep.cpp", "processstep.h", "processstep.cpp", "processstep.h",
"project.cpp", "project.h", "project.cpp", "project.h",
"projectconfiguration.cpp", "projectconfiguration.h", "projectconfiguration.cpp", "projectconfiguration.h",
"projectconfigurationaspects.cpp", "projectconfigurationaspects.h",
"projectconfigurationmodel.cpp", "projectconfigurationmodel.h", "projectconfigurationmodel.cpp", "projectconfigurationmodel.h",
"projectexplorer.cpp", "projectexplorer.h", "projectexplorer.cpp", "projectexplorer.h",
"projectexplorer.qrc", "projectexplorer.qrc",

View File

@@ -43,13 +43,14 @@
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/checkablemessagebox.h> #include <utils/checkablemessagebox.h>
#include <utils/detailswidget.h> #include <utils/detailswidget.h>
#include <utils/layoutbuilder.h>
#include <utils/outputformatter.h> #include <utils/outputformatter.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <utils/variablechooser.h>
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <QDir> #include <QDir>
#include <QFormLayout> #include <QFormLayout>
@@ -223,13 +224,13 @@ QWidget *RunConfiguration::createConfigurationWidget()
auto widget = new QWidget; auto widget = new QWidget;
{ {
LayoutBuilder builder(widget); LayoutBuilder builder(widget);
for (ProjectConfigurationAspect *aspect : m_aspects) { for (BaseAspect *aspect : qAsConst(m_aspects)) {
if (aspect->isVisible()) if (aspect->isVisible())
aspect->addToLayout(builder.startNewRow()); aspect->addToLayout(builder.startNewRow());
} }
} }
Core::VariableChooser::addSupportForChildWidgets(widget, &m_expander); VariableChooser::addSupportForChildWidgets(widget, &m_expander);
auto detailsWidget = new Utils::DetailsWidget; auto detailsWidget = new Utils::DetailsWidget;
detailsWidget->setState(DetailsWidget::NoSummary); detailsWidget->setState(DetailsWidget::NoSummary);
@@ -245,7 +246,7 @@ void RunConfiguration::addAspectFactory(const AspectFactory &aspectFactory)
QMap<Utils::Id, QVariantMap> RunConfiguration::aspectData() const QMap<Utils::Id, QVariantMap> RunConfiguration::aspectData() const
{ {
QMap<Utils::Id, QVariantMap> data; QMap<Utils::Id, QVariantMap> data;
for (ProjectConfigurationAspect *aspect : m_aspects) for (BaseAspect *aspect : qAsConst(m_aspects))
aspect->toMap(data[aspect->id()]); aspect->toMap(data[aspect->id()]);
return data; return data;
} }

View File

@@ -32,6 +32,7 @@
#include "projectexplorerconstants.h" #include "projectexplorerconstants.h"
#include "task.h" #include "task.h"
#include <utils/aspects.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/port.h> #include <utils/port.h>
@@ -90,7 +91,7 @@ protected:
* *
*/ */
class PROJECTEXPLORER_EXPORT GlobalOrProjectAspect : public ProjectConfigurationAspect class PROJECTEXPLORER_EXPORT GlobalOrProjectAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -157,7 +158,7 @@ public:
return nullptr; return nullptr;
} }
using AspectFactory = std::function<ProjectConfigurationAspect *(Target *)>; using AspectFactory = std::function<Utils::BaseAspect *(Target *)>;
template <class T> static void registerAspect() template <class T> static void registerAspect()
{ {
addAspectFactory([](Target *target) { return new T(target); }); addAspectFactory([](Target *target) { return new T(target); });

View File

@@ -34,6 +34,7 @@
#include <utils/detailsbutton.h> #include <utils/detailsbutton.h>
#include <utils/fancylineedit.h> #include <utils/fancylineedit.h>
#include <utils/layoutbuilder.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
@@ -171,7 +172,7 @@ void WorkingDirectoryAspect::addToLayout(LayoutBuilder &builder)
builder.addItems(tr("Working directory:"), m_chooser.data(), m_resetButton.data()); builder.addItems(tr("Working directory:"), m_chooser.data(), m_resetButton.data());
} }
void WorkingDirectoryAspect::acquaintSiblings(const ProjectConfigurationAspects &siblings) void WorkingDirectoryAspect::acquaintSiblings(const BaseAspects &siblings)
{ {
m_envAspect = siblings.aspect<EnvironmentAspect>(); m_envAspect = siblings.aspect<EnvironmentAspect>();
} }
@@ -498,7 +499,7 @@ void ExecutableAspect::setExecutable(const FilePath &executable)
void ExecutableAspect::setSettingsKey(const QString &key) void ExecutableAspect::setSettingsKey(const QString &key)
{ {
ProjectConfigurationAspect::setSettingsKey(key); BaseAspect::setSettingsKey(key);
m_executable.setSettingsKey(key); m_executable.setSettingsKey(key);
} }

View File

@@ -25,10 +25,11 @@
#pragma once #pragma once
#include "projectconfigurationaspects.h"
#include "applicationlauncher.h" #include "applicationlauncher.h"
#include "environmentaspect.h" #include "environmentaspect.h"
#include <utils/aspects.h>
#include <QPointer> #include <QPointer>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -41,14 +42,14 @@ namespace Utils { class ExpandButton; }
namespace ProjectExplorer { namespace ProjectExplorer {
class PROJECTEXPLORER_EXPORT TerminalAspect : public ProjectConfigurationAspect class PROJECTEXPLORER_EXPORT TerminalAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
TerminalAspect(); TerminalAspect();
void addToLayout(LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
bool useTerminal() const; bool useTerminal() const;
void setUseTerminalHint(bool useTerminal); void setUseTerminalHint(bool useTerminal);
@@ -67,15 +68,15 @@ private:
QPointer<QCheckBox> m_checkBox; // Owned by RunConfigWidget QPointer<QCheckBox> m_checkBox; // Owned by RunConfigWidget
}; };
class PROJECTEXPLORER_EXPORT WorkingDirectoryAspect : public ProjectConfigurationAspect class PROJECTEXPLORER_EXPORT WorkingDirectoryAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
WorkingDirectoryAspect(); WorkingDirectoryAspect();
void addToLayout(LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
void acquaintSiblings(const ProjectConfigurationAspects &) override; void acquaintSiblings(const Utils::BaseAspects &) override;
Utils::FilePath workingDirectory(const Utils::MacroExpander *expander) const; Utils::FilePath workingDirectory(const Utils::MacroExpander *expander) const;
Utils::FilePath defaultWorkingDirectory() const; Utils::FilePath defaultWorkingDirectory() const;
@@ -97,14 +98,14 @@ private:
QPointer<QToolButton> m_resetButton; QPointer<QToolButton> m_resetButton;
}; };
class PROJECTEXPLORER_EXPORT ArgumentsAspect : public ProjectConfigurationAspect class PROJECTEXPLORER_EXPORT ArgumentsAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
ArgumentsAspect(); ArgumentsAspect();
void addToLayout(LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
QString arguments(const Utils::MacroExpander *expander) const; QString arguments(const Utils::MacroExpander *expander) const;
QString unexpandedArguments() const; QString unexpandedArguments() const;
@@ -129,7 +130,7 @@ private:
std::function<QString()> m_resetter; std::function<QString()> m_resetter;
}; };
class PROJECTEXPLORER_EXPORT UseLibraryPathsAspect : public BoolAspect class PROJECTEXPLORER_EXPORT UseLibraryPathsAspect : public Utils::BoolAspect
{ {
Q_OBJECT Q_OBJECT
@@ -137,7 +138,7 @@ public:
UseLibraryPathsAspect(); UseLibraryPathsAspect();
}; };
class PROJECTEXPLORER_EXPORT UseDyldSuffixAspect : public BoolAspect class PROJECTEXPLORER_EXPORT UseDyldSuffixAspect : public Utils::BoolAspect
{ {
Q_OBJECT Q_OBJECT
@@ -145,7 +146,7 @@ public:
UseDyldSuffixAspect(); UseDyldSuffixAspect();
}; };
class PROJECTEXPLORER_EXPORT ExecutableAspect : public ProjectConfigurationAspect class PROJECTEXPLORER_EXPORT ExecutableAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
@@ -158,14 +159,14 @@ public:
void setSettingsKey(const QString &key); void setSettingsKey(const QString &key);
void makeOverridable(const QString &overridingKey, const QString &useOverridableKey); void makeOverridable(const QString &overridingKey, const QString &useOverridableKey);
void addToLayout(LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
void setLabelText(const QString &labelText); void setLabelText(const QString &labelText);
void setPlaceHolderText(const QString &placeHolderText); void setPlaceHolderText(const QString &placeHolderText);
void setExecutablePathStyle(Utils::OsType osType); void setExecutablePathStyle(Utils::OsType osType);
void setHistoryCompleter(const QString &historyCompleterKey); void setHistoryCompleter(const QString &historyCompleterKey);
void setExpectedKind(const Utils::PathChooser::Kind expectedKind); void setExpectedKind(const Utils::PathChooser::Kind expectedKind);
void setEnvironment(const Utils::Environment &env); void setEnvironment(const Utils::Environment &env);
void setDisplayStyle(StringAspect::DisplayStyle style); void setDisplayStyle(Utils::StringAspect::DisplayStyle style);
protected: protected:
void fromMap(const QVariantMap &map) override; void fromMap(const QVariantMap &map) override;
@@ -174,11 +175,11 @@ protected:
private: private:
QString executableText() const; QString executableText() const;
StringAspect m_executable; Utils::StringAspect m_executable;
StringAspect *m_alternativeExecutable = nullptr; Utils::StringAspect *m_alternativeExecutable = nullptr;
}; };
class PROJECTEXPLORER_EXPORT SymbolFileAspect : public StringAspect class PROJECTEXPLORER_EXPORT SymbolFileAspect : public Utils::StringAspect
{ {
Q_OBJECT Q_OBJECT

View File

@@ -45,10 +45,10 @@
#include <utils/outputformatter.h> #include <utils/outputformatter.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <utils/variablechooser.h>
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <QDir> #include <QDir>
#include <QFormLayout> #include <QFormLayout>
@@ -909,7 +909,7 @@ const MacroExpander *RunControl::macroExpander() const
return d->macroExpander; return d->macroExpander;
} }
ProjectConfigurationAspect *RunControl::aspect(Utils::Id id) const BaseAspect *RunControl::aspect(Utils::Id id) const
{ {
return d->runConfiguration ? d->runConfiguration->aspect(id) : nullptr; return d->runConfiguration ? d->runConfiguration->aspect(id) : nullptr;
} }

View File

@@ -224,7 +224,7 @@ public:
Project *project() const; Project *project() const;
Kit *kit() const; Kit *kit() const;
const Utils::MacroExpander *macroExpander() const; const Utils::MacroExpander *macroExpander() const;
ProjectConfigurationAspect *aspect(Utils::Id id) const; Utils::BaseAspect *aspect(Utils::Id id) const;
template <typename T> T *aspect() const { template <typename T> T *aspect() const {
return runConfiguration() ? runConfiguration()->aspect<T>() : nullptr; return runConfiguration() ? runConfiguration()->aspect<T>() : nullptr;
} }

View File

@@ -474,7 +474,7 @@ QString RunSettingsWidget::uniqueRCName(const QString &name)
void RunSettingsWidget::addRunControlWidgets() void RunSettingsWidget::addRunControlWidgets()
{ {
for (ProjectConfigurationAspect *aspect : m_runConfiguration->aspects()) { for (Utils::BaseAspect *aspect : m_runConfiguration->aspects()) {
if (QWidget *rcw = aspect->createConfigWidget()) { if (QWidget *rcw = aspect->createConfigWidget()) {
auto label = new QLabel(this); auto label = new QLabel(this);
label->setText(aspect->displayName()); label->setText(aspect->displayName());

View File

@@ -37,14 +37,15 @@
#include <projectexplorer/buildsystem.h> #include <projectexplorer/buildsystem.h>
#include <projectexplorer/localenvironmentaspect.h> #include <projectexplorer/localenvironmentaspect.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/runconfigurationaspects.h> #include <projectexplorer/runconfigurationaspects.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/taskhub.h> #include <projectexplorer/taskhub.h>
#include <texteditor/textdocument.h> #include <texteditor/textdocument.h>
#include <utils/aspects.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/layoutbuilder.h>
#include <utils/outputformatter.h> #include <utils/outputformatter.h>
#include <utils/theme/theme.h> #include <utils/theme/theme.h>
@@ -133,7 +134,7 @@ private:
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
class InterpreterAspect : public ProjectConfigurationAspect class InterpreterAspect : public BaseAspect
{ {
Q_OBJECT Q_OBJECT

View File

@@ -85,9 +85,9 @@ public:
QString configurationName() const; QString configurationName() const;
QString equivalentCommandLine(const QbsBuildStepData &stepData) const; QString equivalentCommandLine(const QbsBuildStepData &stepData) const;
ProjectExplorer::TriState qmlDebuggingSetting() const; Utils::TriState qmlDebuggingSetting() const;
ProjectExplorer::TriState qtQuickCompilerSetting() const; Utils::TriState qtQuickCompilerSetting() const;
ProjectExplorer::TriState separateDebugInfoSetting() const; Utils::TriState separateDebugInfoSetting() const;
signals: signals:
void qbsConfigurationChanged(); void qbsConfigurationChanged();
@@ -100,7 +100,7 @@ private:
QStringList m_changedFiles; QStringList m_changedFiles;
QStringList m_activeFileTags; QStringList m_activeFileTags;
QStringList m_products; QStringList m_products;
ProjectExplorer::StringAspect *m_configurationName = nullptr; Utils::StringAspect *m_configurationName = nullptr;
QbsBuildSystem *m_buildSystem = nullptr; QbsBuildSystem *m_buildSystem = nullptr;
}; };

View File

@@ -32,7 +32,6 @@
#include "qbssettings.h" #include "qbssettings.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <projectexplorer/buildsteplist.h> #include <projectexplorer/buildsteplist.h>
#include <projectexplorer/kit.h> #include <projectexplorer/kit.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
@@ -43,6 +42,7 @@
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/variablechooser.h>
#include <QBoxLayout> #include <QBoxLayout>
#include <QCheckBox> #include <QCheckBox>
@@ -637,7 +637,7 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) :
cleanInstallRootCheckBox->setText(tr("Clean install root")); cleanInstallRootCheckBox->setText(tr("Clean install root"));
defaultInstallDirCheckBox->setText(tr("Use default location")); defaultInstallDirCheckBox->setText(tr("Use default location"));
auto chooser = new Core::VariableChooser(this); auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(propertyEdit); chooser->addSupportedWidget(propertyEdit);
chooser->addSupportedWidget(installDirChooser->lineEdit()); chooser->addSupportedWidget(installDirChooser->lineEdit());
chooser->addMacroExpanderProvider([step] { return step->macroExpander(); }); chooser->addMacroExpanderProvider([step] { return step->macroExpander(); });

View File

@@ -41,6 +41,7 @@
#include <QJsonObject> #include <QJsonObject>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace QbsProjectManager { namespace QbsProjectManager {
namespace Internal { namespace Internal {

View File

@@ -28,11 +28,13 @@
#include "qbsbuildconfiguration.h" #include "qbsbuildconfiguration.h"
#include <projectexplorer/buildstep.h> #include <projectexplorer/buildstep.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/task.h> #include <projectexplorer/task.h>
#include <utils/aspects.h>
namespace QbsProjectManager { namespace QbsProjectManager {
namespace Internal { namespace Internal {
class ErrorInfo; class ErrorInfo;
class QbsSession; class QbsSession;
@@ -60,8 +62,8 @@ private:
void createTaskAndOutput(ProjectExplorer::Task::TaskType type, void createTaskAndOutput(ProjectExplorer::Task::TaskType type,
const QString &message, const QString &file, int line); const QString &message, const QString &file, int line);
ProjectExplorer::BoolAspect *m_dryRunAspect = nullptr; Utils::BoolAspect *m_dryRunAspect = nullptr;
ProjectExplorer::BoolAspect *m_keepGoingAspect = nullptr; Utils::BoolAspect *m_keepGoingAspect = nullptr;
QStringList m_products; QStringList m_products;
QbsSession *m_session = nullptr; QbsSession *m_session = nullptr;

View File

@@ -38,6 +38,7 @@
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/layoutbuilder.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QJsonObject> #include <QJsonObject>
@@ -45,6 +46,7 @@
#include <QPlainTextEdit> #include <QPlainTextEdit>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace QbsProjectManager { namespace QbsProjectManager {
namespace Internal { namespace Internal {

View File

@@ -29,11 +29,13 @@
#include "qbssession.h" #include "qbssession.h"
#include <projectexplorer/buildstep.h> #include <projectexplorer/buildstep.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/task.h> #include <projectexplorer/task.h>
#include <utils/aspects.h>
namespace QbsProjectManager { namespace QbsProjectManager {
namespace Internal { namespace Internal {
class ErrorInfo; class ErrorInfo;
class QbsSession; class QbsSession;
@@ -62,9 +64,9 @@ private:
void createTaskAndOutput(ProjectExplorer::Task::TaskType type, void createTaskAndOutput(ProjectExplorer::Task::TaskType type,
const QString &message, const Utils::FilePath &file, int line); const QString &message, const Utils::FilePath &file, int line);
ProjectExplorer::BoolAspect *m_cleanInstallRoot = nullptr; Utils::BoolAspect *m_cleanInstallRoot = nullptr;
ProjectExplorer::BoolAspect *m_dryRun = nullptr; Utils::BoolAspect *m_dryRun = nullptr;
ProjectExplorer::BoolAspect *m_keepGoing = nullptr; Utils::BoolAspect *m_keepGoing = nullptr;
QbsSession *m_session = nullptr; QbsSession *m_session = nullptr;
QString m_description; QString m_description;

View File

@@ -36,15 +36,15 @@
#include <QTextStream> #include <QTextStream>
#include <QLoggingCategory> #include <QLoggingCategory>
using namespace QmakeProjectManager;
using namespace Internal;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;;
using Utils::FilePath;
using Utils::QtcProcess;
using QtSupport::QtVersionManager; using QtSupport::QtVersionManager;
using QtSupport::BaseQtVersion; using QtSupport::BaseQtVersion;
namespace QmakeProjectManager {
namespace Internal {
static QString findQMakeLine(const QString &makefile, const QString &key) static QString findQMakeLine(const QString &makefile, const QString &key)
{ {
QFile fi(makefile); QFile fi(makefile);
@@ -396,6 +396,8 @@ void MakeFileParse::parseCommandLine(const QString &command, const QString &proj
} }
} }
} // Internal
} // QmakeProjectManager
// Unit tests: // Unit tests:

View File

@@ -27,10 +27,11 @@
#include "qmakeprojectmanager_global.h" #include "qmakeprojectmanager_global.h"
#include <projectexplorer/projectconfigurationaspects.h>
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <qtsupport/baseqtversion.h> #include <qtsupport/baseqtversion.h>
#include <utils/aspects.h>
namespace ProjectExplorer { class FileNode; } namespace ProjectExplorer { class FileNode; }
namespace QmakeProjectManager { namespace QmakeProjectManager {
@@ -96,13 +97,13 @@ public:
static bool isBuildDirAtSafeLocation(const QString &sourceDir, const QString &buildDir); static bool isBuildDirAtSafeLocation(const QString &sourceDir, const QString &buildDir);
bool isBuildDirAtSafeLocation() const; bool isBuildDirAtSafeLocation() const;
ProjectExplorer::TriState separateDebugInfo() const; Utils::TriState separateDebugInfo() const;
void forceSeparateDebugInfo(bool sepDebugInfo); void forceSeparateDebugInfo(bool sepDebugInfo);
ProjectExplorer::TriState qmlDebugging() const; Utils::TriState qmlDebugging() const;
void forceQmlDebugging(bool enable); void forceQmlDebugging(bool enable);
ProjectExplorer::TriState useQtQuickCompiler() const; Utils::TriState useQtQuickCompiler() const;
void forceQtQuickCompiler(bool enable); void forceQtQuickCompiler(bool enable);
signals: signals:

View File

@@ -33,7 +33,6 @@
#include "qmakesettings.h" #include "qmakesettings.h"
#include "qmakestep.h" #include "qmakestep.h"
#include <coreplugin/variablechooser.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
#include <projectexplorer/buildsteplist.h> #include <projectexplorer/buildsteplist.h>
@@ -43,7 +42,9 @@
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
#include <projectexplorer/xcodebuildparser.h> #include <projectexplorer/xcodebuildparser.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/variablechooser.h>
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>

View File

@@ -46,14 +46,15 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
#include <coreplugin/variablechooser.h>
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <qtsupport/qtversionmanager.h> #include <qtsupport/qtversionmanager.h>
#include <qtsupport/qtsupportconstants.h> #include <qtsupport/qtsupportconstants.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <utils/variablechooser.h>
#include <QComboBox> #include <QComboBox>
#include <QDir> #include <QDir>
@@ -580,7 +581,8 @@ BuildStepConfigWidget *QMakeStep::createConfigWidget()
if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration()) if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration())
BuildManager::buildLists({bc->cleanSteps()}); BuildManager::buildLists({bc->cleanSteps()});
}); });
auto chooser = new Core::VariableChooser(qmakeAdditonalArgumentsLineEdit);
auto chooser = new VariableChooser(qmakeAdditonalArgumentsLineEdit);
chooser->addMacroExpanderProvider([this] { return macroExpander(); }); chooser->addMacroExpanderProvider([this] { return macroExpander(); });
chooser->addSupportedWidget(qmakeAdditonalArgumentsLineEdit); chooser->addSupportedWidget(qmakeAdditonalArgumentsLineEdit);

View File

@@ -28,8 +28,8 @@
#include "qmakeprojectmanager_global.h" #include "qmakeprojectmanager_global.h"
#include <projectexplorer/abstractprocessstep.h> #include <projectexplorer/abstractprocessstep.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <utils/aspects.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <memory> #include <memory>
@@ -83,9 +83,9 @@ public:
QString targetTriple; QString targetTriple;
TargetArchConfig archConfig = NoArch; TargetArchConfig archConfig = NoArch;
OsType osType = NoOsType; OsType osType = NoOsType;
ProjectExplorer::TriState separateDebugInfo; Utils::TriState separateDebugInfo;
ProjectExplorer::TriState linkQmlDebuggingQQ2; Utils::TriState linkQmlDebuggingQQ2;
ProjectExplorer::TriState useQtQuickCompiler; Utils::TriState useQtQuickCompiler;
}; };
@@ -103,9 +103,9 @@ inline bool operator !=(const QMakeStepConfig &a, const QMakeStepConfig &b) {
inline QDebug operator<<(QDebug dbg, const QMakeStepConfig &c) inline QDebug operator<<(QDebug dbg, const QMakeStepConfig &c)
{ {
dbg << c.archConfig << c.osType dbg << c.archConfig << c.osType
<< (c.linkQmlDebuggingQQ2 == ProjectExplorer::TriState::Enabled) << (c.linkQmlDebuggingQQ2 == Utils::TriState::Enabled)
<< (c.useQtQuickCompiler == ProjectExplorer::TriState::Enabled) << (c.useQtQuickCompiler == Utils::TriState::Enabled)
<< (c.separateDebugInfo == ProjectExplorer::TriState::Enabled); << (c.separateDebugInfo == Utils::TriState::Enabled);
return dbg; return dbg;
} }

View File

@@ -41,6 +41,8 @@
#include <QComboBox> #include <QComboBox>
#include <utils/layoutbuilder.h>
using namespace Core; using namespace Core;
using namespace ProjectExplorer; using namespace ProjectExplorer;
@@ -69,7 +71,7 @@ QmlMainFileAspect::~QmlMainFileAspect()
delete m_fileListCombo; delete m_fileListCombo;
} }
void QmlMainFileAspect::addToLayout(LayoutBuilder &builder) void QmlMainFileAspect::addToLayout(Utils::LayoutBuilder &builder)
{ {
QTC_ASSERT(!m_fileListCombo, delete m_fileListCombo); QTC_ASSERT(!m_fileListCombo, delete m_fileListCombo);
m_fileListCombo = new QComboBox; m_fileListCombo = new QComboBox;

View File

@@ -44,7 +44,7 @@ namespace QmlProjectManager {
class QmlProject; class QmlProject;
class QmlBuildSystem; class QmlBuildSystem;
class QMLPROJECTMANAGER_EXPORT QmlMainFileAspect : public ProjectExplorer::ProjectConfigurationAspect class QMLPROJECTMANAGER_EXPORT QmlMainFileAspect : public Utils::BaseAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
@@ -57,7 +57,7 @@ public:
FileInSettings FileInSettings
}; };
void addToLayout(ProjectExplorer::LayoutBuilder &builder) final; void addToLayout(Utils::LayoutBuilder &builder) final;
void toMap(QVariantMap &map) const final; void toMap(QVariantMap &map) const final;
void fromMap(const QVariantMap &map) final; void fromMap(const QVariantMap &map) final;

View File

@@ -33,7 +33,7 @@
namespace QmlProjectManager { namespace QmlProjectManager {
class QMLPROJECTMANAGER_EXPORT QmlMultiLanguageAspect : public ProjectExplorer::BoolAspect class QMLPROJECTMANAGER_EXPORT QmlMultiLanguageAspect : public Utils::BoolAspect
{ {
Q_OBJECT Q_OBJECT
public: public:

View File

@@ -40,11 +40,11 @@
#include <projectexplorer/runconfigurationaspects.h> #include <projectexplorer/runconfigurationaspects.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/environmentaspect.h> #include <projectexplorer/environmentaspect.h>
#include <projectexplorer/projectconfigurationaspects.h>
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <qtsupport/qtsupportconstants.h> #include <qtsupport/qtsupportconstants.h>
#include <utils/aspects.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h> #include <utils/mimetypes/mimedatabase.h>

View File

@@ -31,7 +31,7 @@
namespace Qnx { namespace Qnx {
namespace Internal { namespace Internal {
class QtLibPathAspect : public ProjectExplorer::StringAspect class QtLibPathAspect : public Utils::StringAspect
{ {
Q_OBJECT Q_OBJECT

View File

@@ -30,12 +30,15 @@
#include <projectexplorer/buildpropertiessettings.h> #include <projectexplorer/buildpropertiessettings.h>
#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorer.h>
#include <projectexplorer/kitmanager.h> #include <projectexplorer/kitmanager.h>
#include <utils/infolabel.h> #include <utils/infolabel.h>
#include <utils/layoutbuilder.h>
#include <QCheckBox> #include <QCheckBox>
#include <QLayout> #include <QLayout>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace QtSupport { namespace QtSupport {
@@ -109,7 +112,7 @@ void QtQuickCompilerAspect::addToLayout(LayoutBuilder &builder)
changeHandler(); changeHandler();
} }
void QtQuickCompilerAspect::acquaintSiblings(const ProjectConfigurationAspects &siblings) void QtQuickCompilerAspect::acquaintSiblings(const BaseAspects &siblings)
{ {
m_qmlDebuggingAspect = siblings.aspect<QmlDebuggingAspect>(); m_qmlDebuggingAspect = siblings.aspect<QmlDebuggingAspect>();
} }

View File

@@ -27,24 +27,26 @@
#include "qtsupport_global.h" #include "qtsupport_global.h"
#include <projectexplorer/projectconfigurationaspects.h> #include <utils/aspects.h>
namespace ProjectExplorer { class Kit; }
namespace QtSupport { namespace QtSupport {
class QTSUPPORT_EXPORT QmlDebuggingAspect : public ProjectExplorer::TriStateAspect class QTSUPPORT_EXPORT QmlDebuggingAspect : public Utils::TriStateAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
QmlDebuggingAspect(); QmlDebuggingAspect();
void setKit(const ProjectExplorer::Kit *kit) { m_kit = kit; } void setKit(const ProjectExplorer::Kit *kit) { m_kit = kit; }
void addToLayout(ProjectExplorer::LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
private: private:
const ProjectExplorer::Kit *m_kit = nullptr; const ProjectExplorer::Kit *m_kit = nullptr;
}; };
class QTSUPPORT_EXPORT QtQuickCompilerAspect : public ProjectExplorer::TriStateAspect class QTSUPPORT_EXPORT QtQuickCompilerAspect : public Utils::TriStateAspect
{ {
Q_OBJECT Q_OBJECT
public: public:
@@ -53,8 +55,8 @@ public:
void setKit(const ProjectExplorer::Kit *kit) { m_kit = kit; } void setKit(const ProjectExplorer::Kit *kit) { m_kit = kit; }
private: private:
void addToLayout(ProjectExplorer::LayoutBuilder &builder) override; void addToLayout(Utils::LayoutBuilder &builder) override;
void acquaintSiblings(const ProjectExplorer::ProjectConfigurationAspects &siblings) override; void acquaintSiblings(const Utils::BaseAspects &siblings) override;
const ProjectExplorer::Kit *m_kit = nullptr; const ProjectExplorer::Kit *m_kit = nullptr;
const QmlDebuggingAspect *m_qmlDebuggingAspect = nullptr; const QmlDebuggingAspect *m_qmlDebuggingAspect = nullptr;

View File

@@ -39,7 +39,6 @@
#include <coreplugin/dialogs/restartdialog.h> #include <coreplugin/dialogs/restartdialog.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/progressmanager/progressmanager.h> #include <coreplugin/progressmanager/progressmanager.h>
#include <coreplugin/variablechooser.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectexplorericons.h> #include <projectexplorer/projectexplorericons.h>
@@ -55,6 +54,7 @@
#include <utils/runextensions.h> #include <utils/runextensions.h>
#include <utils/treemodel.h> #include <utils/treemodel.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <utils/variablechooser.h>
#include <QDesktopServices> #include <QDesktopServices>
#include <QDir> #include <QDir>
@@ -326,7 +326,7 @@ QtOptionsPageWidget::QtOptionsPageWidget()
connect(ProjectExplorer::ToolChainManager::instance(), &ToolChainManager::toolChainsChanged, connect(ProjectExplorer::ToolChainManager::instance(), &ToolChainManager::toolChainsChanged,
this, &QtOptionsPageWidget::toolChainsUpdated); this, &QtOptionsPageWidget::toolChainsUpdated);
auto chooser = new Core::VariableChooser(this); auto chooser = new VariableChooser(this);
chooser->addSupportedWidget(m_versionUi.nameEdit, "Qt:Name"); chooser->addSupportedWidget(m_versionUi.nameEdit, "Qt:Name");
chooser->addMacroExpanderProvider([this] { chooser->addMacroExpanderProvider([this] {
BaseQtVersion *version = currentVersion(); BaseQtVersion *version = currentVersion();

View File

@@ -33,6 +33,7 @@
#include <projectexplorer/runconfigurationaspects.h> #include <projectexplorer/runconfigurationaspects.h>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace RemoteLinux { namespace RemoteLinux {

View File

@@ -30,8 +30,10 @@
#include <projectexplorer/deploymentdata.h> #include <projectexplorer/deploymentdata.h>
#include <projectexplorer/makestep.h> #include <projectexplorer/makestep.h>
namespace ProjectExplorer { class StringAspect; } namespace Utils {
namespace Utils { class FilePath; } class FilePath;
class StringAspect;
} // Utils
namespace RemoteLinux { namespace RemoteLinux {
@@ -60,7 +62,7 @@ private:
void updateFullCommandLine(); void updateFullCommandLine();
void updateFromCustomCommandLineAspect(); void updateFromCustomCommandLineAspect();
ProjectExplorer::StringAspect *customCommandLineAspect() const; Utils::StringAspect *customCommandLineAspect() const;
ProjectExplorer::DeploymentData m_deploymentData; ProjectExplorer::DeploymentData m_deploymentData;
bool m_noInstallTarget = false; bool m_noInstallTarget = false;

View File

@@ -27,11 +27,12 @@
#include "remotelinuxcheckforfreediskspaceservice.h" #include "remotelinuxcheckforfreediskspaceservice.h"
#include <projectexplorer/projectconfigurationaspects.h> #include <utils/aspects.h>
#include <limits> #include <limits>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace RemoteLinux { namespace RemoteLinux {

Some files were not shown because too many files have changed in this diff Show More