From a562a379e209446b243f6eee875b3916b5371484 Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 7 Oct 2009 15:46:07 +0200 Subject: [PATCH] Show a no project loaded on the project pane if no project is loaded Could be even nicer, but this works for now. --- src/plugins/projectexplorer/projectwindow.cpp | 77 ++++++++++++------- src/plugins/projectexplorer/projectwindow.h | 8 +- 2 files changed, 54 insertions(+), 31 deletions(-) diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 326b9ec3961..125c6c21933 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -662,15 +662,26 @@ public: /// ProjectWindow::ProjectWindow(QWidget *parent) - : QWidget(parent), m_currentItemChanged(false) + : QWidget(parent) { - m_projectExplorer = ProjectExplorerPlugin::instance(); - m_session = m_projectExplorer->session(); + ProjectExplorer::SessionManager *session = ProjectExplorerPlugin::instance()->session(); m_panelsWidget = new PanelsWidget(this); m_activeConfigurationWidget = new ActiveConfigurationWidget(m_panelsWidget); + m_panelsWidget->addWidget(tr("Active Build and Run Configurations"), m_activeConfigurationWidget); + + m_spacerBetween = new QWidget(this); + QVBoxLayout *vbox = new QVBoxLayout(m_spacerBetween); + vbox->setMargin(0); + m_spacerBetween->setLayout(vbox); + vbox->addSpacerItem(new QSpacerItem(10, 15, QSizePolicy::Fixed, QSizePolicy::Fixed)); + vbox->addWidget(new OnePixelBlackLine(m_spacerBetween)); + vbox->addSpacerItem(new QSpacerItem(10, 15, QSizePolicy::Fixed, QSizePolicy::Fixed)); + + m_panelsWidget->addWidget(m_spacerBetween); + m_projectChooser = new QWidget(m_panelsWidget); QHBoxLayout *hbox = new QHBoxLayout(m_projectChooser); hbox->setMargin(0); @@ -687,18 +698,6 @@ ProjectWindow::ProjectWindow(QWidget *parent) label, SLOT(setProject(ProjectExplorer::Project*))); hbox->addWidget(changeProject); - m_panelsWidget->addWidget(tr("Active Build and Run Configurations"), m_activeConfigurationWidget); - - m_spacerBetween = new QWidget(this); - QVBoxLayout *vbox = new QVBoxLayout(m_spacerBetween); - vbox->setMargin(0); - m_spacerBetween->setLayout(vbox); - vbox->addSpacerItem(new QSpacerItem(10, 15, QSizePolicy::Fixed, QSizePolicy::Fixed)); - vbox->addWidget(new OnePixelBlackLine(m_spacerBetween)); - vbox->addSpacerItem(new QSpacerItem(10, 15, QSizePolicy::Fixed, QSizePolicy::Fixed)); - - m_panelsWidget->addWidget(m_spacerBetween); - m_panelsWidget->addWidget(m_projectChooser); QVBoxLayout *topLevelLayout = new QVBoxLayout(this); @@ -708,17 +707,52 @@ ProjectWindow::ProjectWindow(QWidget *parent) topLevelLayout->addWidget(m_panelsWidget); + m_noprojectLabel = new QLabel(this); + m_noprojectLabel->setText(tr("No project loaded.")); + { + QFont f = m_noprojectLabel->font(); + f.setPointSizeF(f.pointSizeF() * 1.4); + f.setBold(true); + m_noprojectLabel->setFont(f); + } + m_noprojectLabel->setMargin(10); + m_noprojectLabel->setAlignment(Qt::AlignTop); + topLevelLayout->addWidget(m_noprojectLabel); + + bool noProjects = session->projects().isEmpty(); + m_panelsWidget->setVisible(!noProjects); + m_noprojectLabel->setVisible(noProjects); + connect(changeProject, SIGNAL(projectChanged(ProjectExplorer::Project*)), this, SLOT(showProperties(ProjectExplorer::Project*))); - connect(m_session, SIGNAL(sessionLoaded()), this, SLOT(restoreStatus())); - connect(m_session, SIGNAL(aboutToSaveSession()), this, SLOT(saveStatus())); + connect(session, SIGNAL(sessionLoaded()), this, SLOT(restoreStatus())); + connect(session, SIGNAL(aboutToSaveSession()), this, SLOT(saveStatus())); + + connect(session, SIGNAL(projectAdded(ProjectExplorer::Project*)), + this, SLOT(projectAdded())); + connect(session, SIGNAL(projectRemoved(ProjectExplorer::Project*)), + this, SLOT(projectRemoved())); } ProjectWindow::~ProjectWindow() { } +void ProjectWindow::projectAdded() +{ + m_panelsWidget->setVisible(true); + m_noprojectLabel->setVisible(false); +} + +void ProjectWindow::projectRemoved() +{ + if (ProjectExplorerPlugin::instance()->session()->projects().isEmpty()) { + m_panelsWidget->setVisible(false); + m_noprojectLabel->setVisible(true); + } +} + void ProjectWindow::restoreStatus() { // TODO @@ -758,12 +792,3 @@ void ProjectWindow::showProperties(Project *project) } } } - -Project *ProjectWindow::findProject(const QString &path) const -{ - QList projects = m_session->projects(); - foreach (Project* project, projects) - if (QFileInfo(project->file()->fileName()).filePath() == path) - return project; - return 0; -} diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index a29da6b19df..2ad04af4cbf 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -180,19 +180,17 @@ private slots: void showProperties(ProjectExplorer::Project *project); void restoreStatus(); void saveStatus(); + void projectAdded(); + void projectRemoved(); private: void updateRunConfigurationsComboBox(); - SessionManager *m_session; - ProjectExplorerPlugin *m_projectExplorer; ActiveConfigurationWidget *m_activeConfigurationWidget; QWidget *m_spacerBetween; QWidget *m_projectChooser; + QLabel *m_noprojectLabel; PanelsWidget *m_panelsWidget; - - Project *findProject(const QString &path) const; - bool m_currentItemChanged; };