diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index 3bb70668087..b217ac05e37 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include @@ -76,9 +75,6 @@ using ProjectExplorer::FormType; using ProjectExplorer::ResourceType; using ProjectExplorer::UnknownFileType; -static const char kHostBins[] = "CurrentProject:QT_HOST_BINS"; -static const char kInstallBins[] = "CurrentProject:QT_INSTALL_BINS"; - // Known file types of a Qt 4 project static const char *qt4FileTypes[] = { "CppHeaderFiles", @@ -138,15 +134,6 @@ void Qt4Manager::init() connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)), this, SLOT(editorChanged(Core::IEditor*))); - - Core::VariableManager *vm = Core::VariableManager::instance(); - vm->registerVariable(kHostBins, - tr("Full path to the host bin directory of the current project's Qt version.")); - vm->registerVariable(kInstallBins, - tr("Full path to the target bin directory of the current project's Qt version." - " You probably want %1 instead.").arg(QString::fromLatin1(kHostBins))); - connect(vm, SIGNAL(variableUpdateRequested(QByteArray)), - this, SLOT(updateVariable(QByteArray))); } void Qt4Manager::editorChanged(Core::IEditor *editor) @@ -188,27 +175,6 @@ void Qt4Manager::editorAboutToClose(Core::IEditor *editor) } } -void Qt4Manager::updateVariable(const QByteArray &variable) -{ - if (variable == kHostBins || variable == kInstallBins) { - Qt4Project *qt4pro = qobject_cast(ProjectExplorer::ProjectExplorerPlugin::currentProject()); - if (!qt4pro) { - Core::VariableManager::instance()->remove(variable); - return; - } - QString value; - const QtSupport::BaseQtVersion *qtv = 0; - if (ProjectExplorer::Target *t = qt4pro->activeTarget()) - qtv = QtSupport::QtKitInformation::qtVersion(t->kit()); - else - qtv = QtSupport::QtKitInformation::qtVersion(ProjectExplorer::KitManager::instance()->defaultKit()); - - if (qtv) - value = qtv->qmakeProperty(variable == kHostBins ? "QT_HOST_BINS" : "QT_INSTALL_BINS"); - Core::VariableManager::instance()->insert(variable, value); - } -} - void Qt4Manager::uiEditorContentsChanged() { // cast sender, get filename diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.h b/src/plugins/qt4projectmanager/qt4projectmanager.h index 4c98027e287..63465d77a1a 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.h +++ b/src/plugins/qt4projectmanager/qt4projectmanager.h @@ -106,7 +106,6 @@ private slots: void editorAboutToClose(Core::IEditor *editor); void uiEditorContentsChanged(); void editorChanged(Core::IEditor*); - void updateVariable(const QByteArray &variable); private: QList m_projects; diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp index 1b773d1215f..08007f9d45a 100644 --- a/src/plugins/qtsupport/qtsupportplugin.cpp +++ b/src/plugins/qtsupport/qtsupportplugin.cpp @@ -38,12 +38,19 @@ #include "gettingstartedwelcomepage.h" +#include #include #include +#include +#include +#include #include #include +static const char kHostBins[] = "CurrentProject:QT_HOST_BINS"; +static const char kInstallBins[] = "CurrentProject:QT_INSTALL_BINS"; + using namespace QtSupport; using namespace QtSupport::Internal; @@ -81,6 +88,15 @@ bool QtSupportPlugin::initialize(const QStringList &arguments, QString *errorMes void QtSupportPlugin::extensionsInitialized() { + Core::VariableManager *vm = Core::VariableManager::instance(); + vm->registerVariable(kHostBins, + tr("Full path to the host bin directory of the current project's Qt version.")); + vm->registerVariable(kInstallBins, + tr("Full path to the target bin directory of the current project's Qt version." + " You probably want %1 instead.").arg(QString::fromLatin1(kHostBins))); + connect(vm, SIGNAL(variableUpdateRequested(QByteArray)), + this, SLOT(updateVariable(QByteArray))); + QtVersionManager::instance()->extensionsInitialized(); ProjectExplorer::KitManager::instance()->registerKitInformation(new QtKitInformation); } @@ -90,4 +106,25 @@ bool QtSupportPlugin::delayedInitialize() return QtVersionManager::instance()->delayedInitialize(); } +void QtSupportPlugin::updateVariable(const QByteArray &variable) +{ + if (variable != kHostBins && variable != kInstallBins) + return; + + ProjectExplorer::Project *project = ProjectExplorer::ProjectExplorerPlugin::currentProject(); + if (!project || !project->activeTarget()) { + Core::VariableManager::instance()->remove(variable); + return; + } + + const BaseQtVersion *qtVersion = QtKitInformation::qtVersion(project->activeTarget()->kit()); + if (!qtVersion) { + Core::VariableManager::instance()->remove(variable); + return; + } + + QString value = qtVersion->qmakeProperty(variable == kHostBins ? "QT_HOST_BINS" : "QT_INSTALL_BINS"); + Core::VariableManager::instance()->insert(variable, value); +} + Q_EXPORT_PLUGIN(QtSupportPlugin) diff --git a/src/plugins/qtsupport/qtsupportplugin.h b/src/plugins/qtsupport/qtsupportplugin.h index b529c5335a9..8a5a24eb790 100644 --- a/src/plugins/qtsupport/qtsupportplugin.h +++ b/src/plugins/qtsupport/qtsupportplugin.h @@ -49,6 +49,8 @@ public: bool delayedInitialize(); private slots: + void updateVariable(const QByteArray &variable); + #ifdef WITH_TESTS void testQtOutputParser_data(); void testQtOutputParser();