diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 13c2add30da552516a11fd0236eb16529e71c95b..7f93ba2f3e385bb7a01e5a890b4b5b18d6f9e937 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1340,6 +1340,16 @@ void DebuggerPlugin::readSettings() DebuggerSettings::instance()->readSettings(s); } +static bool isCurrentProjectCppBased() +{ + ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance(); + Project *startupProject = projectExplorer->startupProject(); + const QStringList cppProjectIds = QStringList() << QLatin1String("GenericProjectManager.GenericProject") + << QLatin1String("CMakeProjectManager.CMakeProject") + << QLatin1String("Qt4ProjectManager.Qt4Project"); + return (startupProject && cppProjectIds.contains(startupProject->id())); +} + void DebuggerPlugin::onModeChanged(IMode *mode) { // FIXME: This one gets always called, even if switching between modes @@ -1353,12 +1363,14 @@ void DebuggerPlugin::onModeChanged(IMode *mode) if (editorManager->currentEditor()) { editorManager->currentEditor()->widget()->setFocus(); - if (editorManager->currentEditor()->id() == CppEditor::Constants::C_CPPEDITOR) + if (isCurrentProjectCppBased()) m_uiSwitcher->setActiveLanguage(LANG_CPP); } } + + void DebuggerPlugin::showSettingsDialog() { Core::ICore::instance()->showOptionsDialog( diff --git a/src/plugins/qmlinspector/qmlinspector.cpp b/src/plugins/qmlinspector/qmlinspector.cpp index 95299a3d5ec8b00c7420015b9378df30d77bb1d4..9a22e7c31f656d7a5951e03e24dbae80f00967cd 100644 --- a/src/plugins/qmlinspector/qmlinspector.cpp +++ b/src/plugins/qmlinspector/qmlinspector.cpp @@ -193,12 +193,14 @@ bool QmlInspector::connectToViewer() m_conn = 0; } - ProjectExplorer::Project *project = ProjectExplorer::ProjectExplorerPlugin::instance()->currentProject(); + ProjectExplorer::Project *project = ProjectExplorer::ProjectExplorerPlugin::instance()->startupProject(); if (!project) { emit statusMessage(tr("No active project, debugging canceled.")); return false; } + // FIXME if we have c++ project with qml files in it, it would make sense to be able to start + // the qml inspector simultaneously for that project. however, now it's not possible. QmlProjectManager::QmlProjectRunConfiguration* config = qobject_cast<QmlProjectManager::QmlProjectRunConfiguration*>(project->activeTarget()->activeRunConfiguration()); if (!config) { diff --git a/src/plugins/qmlinspector/qmlinspectorplugin.cpp b/src/plugins/qmlinspector/qmlinspectorplugin.cpp index 1d8c8414c755638e2f37418f7f43d79992219dc1..8eb3b18a4972a87c8da831a805b697b6ffff776b 100644 --- a/src/plugins/qmlinspector/qmlinspectorplugin.cpp +++ b/src/plugins/qmlinspector/qmlinspectorplugin.cpp @@ -37,8 +37,7 @@ #include <qmljseditor/qmljseditorconstants.h> #include <coreplugin/modemanager.h> -#include <coreplugin/editormanager/ieditor.h> -#include <coreplugin/editormanager/editormanager.h> +#include <projectexplorer/projectexplorer.h> #include <extensionsystem/pluginmanager.h> #include <coreplugin/icore.h> @@ -117,7 +116,7 @@ void QmlInspectorPlugin::extensionsInitialized() { ExtensionSystem::PluginManager *pluginManager = ExtensionSystem::PluginManager::instance(); Debugger::DebuggerUISwitcher *uiSwitcher = pluginManager->getObject<Debugger::DebuggerUISwitcher>(); - //connect(uiSwitcher, SIGNAL(languageChanged(QString)), SLOT(activateDebugger(QString))); + connect(uiSwitcher, SIGNAL(dockArranged(QString)), SLOT(setDockWidgetArrangement(QString))); ProjectExplorer::ProjectExplorerPlugin *pex = ProjectExplorer::ProjectExplorerPlugin::instance(); @@ -143,18 +142,13 @@ void QmlInspectorPlugin::extensionsInitialized() uiSwitcher->setToolbar(Qml::Constants::LANG_QML, configBar); } -void QmlInspectorPlugin::activateDebugger(const QString &langName) -{ - if (langName == Qml::Constants::LANG_QML) { - m_inspector->connectToViewer(); - } -} - void QmlInspectorPlugin::activateDebuggerForProject(ProjectExplorer::Project *project, const QString &runMode) { if (runMode == ProjectExplorer::Constants::DEBUGMODE) { - QmlProjectManager::QmlProject *qmlproj = qobject_cast<QmlProjectManager::QmlProject*>(project); - if (qmlproj) + // FIXME we probably want to activate the debugger for other projects than QmlProjects, + // if they contain Qml files. Some kind of options should exist for this behavior. + //QmlProjectManager::QmlProject *qmlproj = qobject_cast<QmlProjectManager::QmlProject*>(project); + //if (qmlproj) m_connectionTimer->start(); } @@ -180,10 +174,10 @@ void QmlInspectorPlugin::prepareDebugger(Core::IMode *mode) if (mode->id() != Debugger::Constants::MODE_DEBUG) return; - Core::EditorManager *editorManager = Core::EditorManager::instance(); + ProjectExplorer::ProjectExplorerPlugin *pex = ProjectExplorer::ProjectExplorerPlugin::instance(); - if (editorManager->currentEditor() && - editorManager->currentEditor()->id() == QmlJSEditor::Constants::C_QMLJSEDITOR_ID) { + if (pex->startupProject() && pex->startupProject()->id() == "QmlProjectManager.QmlProject") + { ExtensionSystem::PluginManager *pluginManager = ExtensionSystem::PluginManager::instance(); Debugger::DebuggerUISwitcher *uiSwitcher = pluginManager->getObject<Debugger::DebuggerUISwitcher>(); uiSwitcher->setActiveLanguage(Qml::Constants::LANG_QML); diff --git a/src/plugins/qmlinspector/qmlinspectorplugin.h b/src/plugins/qmlinspector/qmlinspectorplugin.h index 9a592156f50ab948c9d5122e1bf0692531a76475..3db22835ae73f40696a78c76f56e0ee3db12e2de 100644 --- a/src/plugins/qmlinspector/qmlinspectorplugin.h +++ b/src/plugins/qmlinspector/qmlinspectorplugin.h @@ -63,7 +63,6 @@ public: virtual void shutdown(); public slots: - void activateDebugger(const QString &langName); void activateDebuggerForProject(ProjectExplorer::Project *project, const QString &runMode); void setDockWidgetArrangement(const QString &activeLanguage);