forked from qt-creator/qt-creator
ClangPchManager: Add reindex button in settings
After you have changed some settings you maybe want to reindex. Change-Id: I415f1597e6566fe45e5e25bccd359493921278c3 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -29,15 +29,23 @@
|
||||
#include <cpptools/cppmodelmanager.h>
|
||||
#include <projectexplorer/project.h>
|
||||
|
||||
#include "pchmanagerprojectupdater.h"
|
||||
#include "preprocessormacrocollector.h"
|
||||
#include "preprocessormacrowidget.h"
|
||||
#include "qtcreatorprojectupdater.h"
|
||||
|
||||
namespace ClangPchManager {
|
||||
ClangIndexingProjectSettingsWidget::ClangIndexingProjectSettingsWidget(ClangIndexingProjectSettings *settings)
|
||||
ClangIndexingProjectSettingsWidget::ClangIndexingProjectSettingsWidget(
|
||||
ClangIndexingProjectSettings *settings,
|
||||
ProjectExplorer::Project *project,
|
||||
QtCreatorProjectUpdater<PchManagerProjectUpdater> &projectUpdater)
|
||||
: ui(new Ui::ClangIndexingProjectSettingsWidget)
|
||||
, m_project(project)
|
||||
, m_projectUpdater(projectUpdater)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->preprocessorMacrosWidget->setSettings(settings);
|
||||
connect(ui->reindexButton, &QPushButton::clicked, this, &ClangIndexingProjectSettingsWidget::reindex);
|
||||
}
|
||||
|
||||
ClangIndexingProjectSettingsWidget::~ClangIndexingProjectSettingsWidget()
|
||||
@@ -58,4 +66,9 @@ void ClangIndexingProjectSettingsWidget::onProjectPartsUpdated(ProjectExplorer::
|
||||
ui->preprocessorMacrosWidget->setBasePreprocessorMacros(collector.macros());
|
||||
}
|
||||
|
||||
void ClangIndexingProjectSettingsWidget::reindex()
|
||||
{
|
||||
m_projectUpdater.projectPartsUpdated(m_project);
|
||||
}
|
||||
|
||||
} // namespace ClangPchManager
|
||||
|
@@ -37,6 +37,10 @@ class ClangIndexingProjectSettingsWidget;
|
||||
|
||||
namespace ClangPchManager {
|
||||
|
||||
template<typename T>
|
||||
class QtCreatorProjectUpdater;
|
||||
class PchManagerProjectUpdater;
|
||||
|
||||
class ClangIndexingProjectSettings;
|
||||
|
||||
class ClangIndexingProjectSettingsWidget : public QWidget
|
||||
@@ -44,13 +48,19 @@ class ClangIndexingProjectSettingsWidget : public QWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ClangIndexingProjectSettingsWidget(ClangIndexingProjectSettings *settings);
|
||||
explicit ClangIndexingProjectSettingsWidget(
|
||||
ClangIndexingProjectSettings *settings,
|
||||
ProjectExplorer::Project *project,
|
||||
QtCreatorProjectUpdater<PchManagerProjectUpdater> &projectUpdater);
|
||||
~ClangIndexingProjectSettingsWidget();
|
||||
|
||||
void onProjectPartsUpdated(ProjectExplorer::Project *project);
|
||||
void reindex();
|
||||
|
||||
private:
|
||||
Ui::ClangIndexingProjectSettingsWidget *ui;
|
||||
ProjectExplorer::Project *m_project;
|
||||
QtCreatorProjectUpdater<PchManagerProjectUpdater> &m_projectUpdater;
|
||||
};
|
||||
|
||||
} // namespace ClangPchManager
|
||||
|
@@ -15,7 +15,50 @@
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="ClangPchManager::PreprocessorMacroWidget" name="preprocessorMacrosWidget" native="true"/>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="reindexButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reindex</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ClangPchManager::PreprocessorMacroWidget" name="preprocessorMacrosWidget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
@@ -62,13 +62,16 @@ QString backendProcessPath()
|
||||
+ QStringLiteral(QTC_HOST_EXE_SUFFIX);
|
||||
}
|
||||
|
||||
void addIndexingProjectPaneWidget(ClangIndexingSettingsManager &settingsManager)
|
||||
void addIndexingProjectPaneWidget(ClangIndexingSettingsManager &settingsManager,
|
||||
QtCreatorProjectUpdater<PchManagerProjectUpdater> &projectUpdater)
|
||||
{
|
||||
auto factory = new ProjectExplorer::ProjectPanelFactory;
|
||||
factory->setPriority(120);
|
||||
factory->setDisplayName(ClangIndexingProjectSettingsWidget::tr("Clang Indexing"));
|
||||
factory->setCreateWidgetFunction([&](ProjectExplorer::Project *project) {
|
||||
auto widget = new ClangIndexingProjectSettingsWidget(settingsManager.settings(project));
|
||||
auto widget = new ClangIndexingProjectSettingsWidget(settingsManager.settings(project),
|
||||
project,
|
||||
projectUpdater);
|
||||
|
||||
widget->onProjectPartsUpdated(project);
|
||||
|
||||
@@ -108,11 +111,11 @@ public:
|
||||
PchManagerClient pchManagerClient{pchCreationProgressManager, dependencyCreationProgressManager};
|
||||
PchManagerConnectionClient connectionClient{&pchManagerClient};
|
||||
ClangIndexingSettingsManager settingsManager;
|
||||
QtCreatorProjectUpdater<PchManagerProjectUpdater> projectUpdate{connectionClient.serverProxy(),
|
||||
pchManagerClient,
|
||||
filePathCache,
|
||||
projectPartsStorage,
|
||||
settingsManager};
|
||||
QtCreatorProjectUpdater<PchManagerProjectUpdater> projectUpdater{connectionClient.serverProxy(),
|
||||
pchManagerClient,
|
||||
filePathCache,
|
||||
projectPartsStorage,
|
||||
settingsManager};
|
||||
};
|
||||
|
||||
std::unique_ptr<ClangPchManagerPluginData> ClangPchManagerPlugin::d;
|
||||
@@ -128,7 +131,7 @@ bool ClangPchManagerPlugin::initialize(const QStringList & /*arguments*/, QStrin
|
||||
|
||||
startBackend();
|
||||
|
||||
addIndexingProjectPaneWidget(d->settingsManager);
|
||||
addIndexingProjectPaneWidget(d->settingsManager, d->projectUpdater);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user