diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 836f87e648b05f5eb0485fb80162ec979bbfd1d5..19589ac257370972850cde145ac138ed92691b96 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -183,6 +183,8 @@ struct ProjectExplorerPluginPrivate { Internal::ProjectExplorerSettings m_projectExplorerSettings; Internal::ProjectWelcomePage *m_welcomePlugin; Internal::ProjectWelcomePageWidget *m_welcomePage; + + Core::BaseMode * m_projectsMode; }; ProjectExplorerPluginPrivate::ProjectExplorerPluginPrivate() : @@ -191,7 +193,8 @@ ProjectExplorerPluginPrivate::ProjectExplorerPluginPrivate() : m_currentProject(0), m_currentNode(0), m_delayedRunConfiguration(0), - m_debuggingRunControl(0) + m_debuggingRunControl(0), + m_projectsMode(0) { } @@ -263,14 +266,15 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er QList<int> pecontext; pecontext << core->uniqueIDManager()->uniqueIdentifier(Constants::C_PROJECTEXPLORER); - Core::BaseMode *mode = new Core::BaseMode; - mode->setDisplayName(tr("Projects")); - mode->setId(QLatin1String(Constants::MODE_SESSION)); - mode->setIcon(QIcon(QLatin1String(":/fancyactionbar/images/mode_Project.png"))); - mode->setPriority(Constants::P_MODE_SESSION); - mode->setWidget(d->m_proWindow); - mode->setContext(QList<int>() << pecontext); - addAutoReleasedObject(mode); + d->m_projectsMode = new Core::BaseMode; + d->m_projectsMode->setDisplayName(tr("Projects")); + d->m_projectsMode->setId(QLatin1String(Constants::MODE_SESSION)); + d->m_projectsMode->setIcon(QIcon(QLatin1String(":/fancyactionbar/images/mode_Project.png"))); + d->m_projectsMode->setPriority(Constants::P_MODE_SESSION); + d->m_projectsMode->setWidget(d->m_proWindow); + d->m_projectsMode->setContext(QList<int>() << pecontext); + d->m_projectsMode->setEnabled(session()->startupProject()); + addAutoReleasedObject(d->m_projectsMode); d->m_proWindow->layout()->addWidget(new Core::FindToolBarPlaceHolder(d->m_proWindow)); d->m_buildManager = new BuildManager(this); @@ -902,6 +906,7 @@ void ProjectExplorerPlugin::shutdown() { d->m_proWindow->shutdown(); // disconnect from session d->m_session->clear(); + d->m_projectsMode = 0; // d->m_proWindow->saveConfigChanges(); } @@ -1669,6 +1674,9 @@ void ProjectExplorerPlugin::startupProjectChanged() if (project == previousStartupProject) return; + if (d->m_projectsMode) + d->m_projectsMode->setEnabled(project); + if (previousStartupProject) { disconnect(previousStartupProject, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)), this, SLOT(updateRunActions())); diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index e85d5a836cef2b76828a9b0603a160756067c97a..d930acd5316a1125d09f3e8c08b081aa5ab14f9e 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -232,24 +232,6 @@ ProjectWindow::ProjectWindow(QWidget *parent) m_centralWidget = new QStackedWidget(this); viewLayout->addWidget(m_centralWidget); - // no projects label: - m_noprojectLabel = new QWidget; - QVBoxLayout *noprojectLayout = new QVBoxLayout; - noprojectLayout->setMargin(0); - QLabel *label = new QLabel(m_noprojectLabel); - label->setText(tr("No project loaded.")); - { - QFont f = label->font(); - f.setPointSizeF(f.pointSizeF() * 1.4); - f.setBold(true); - label->setFont(f); - } - label->setMargin(10); - label->setAlignment(Qt::AlignTop); - noprojectLayout->addWidget(label); - noprojectLayout->addStretch(10); - m_centralWidget->addWidget(m_noprojectLabel); - // connects: connect(m_tabWidget, SIGNAL(currentIndexChanged(int,int)), this, SLOT(showProperties(int,int))); @@ -314,11 +296,9 @@ void ProjectWindow::saveStatus() void ProjectWindow::showProperties(int index, int subIndex) { - if (index < 0) { - m_centralWidget->setCurrentWidget(m_noprojectLabel); - removeCurrentWidget(); + if (index < 0 || index >= m_tabIndexToProject.count()) return; - } + Project *project = m_tabIndexToProject.at(index); // Set up custom panels again: diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index 73c9c0d357e3ff44852f9329e32ae1300e07bf62..b0bb52b185c751b1ebacfd3f65b007daa272d031 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -97,7 +97,6 @@ private: void removeCurrentWidget(); DoubleTabWidget *m_tabWidget; - QWidget *m_noprojectLabel; QStackedWidget *m_centralWidget; QWidget *m_currentWidget; IPropertiesPanel *m_currentPanel;