Show a no project loaded on the project pane if no project is loaded

Could be even nicer, but this works for now.
This commit is contained in:
dt
2009-10-07 15:46:07 +02:00
parent 1b43d19356
commit a562a379e2
2 changed files with 54 additions and 31 deletions

View File

@@ -662,15 +662,26 @@ public:
/// ///
ProjectWindow::ProjectWindow(QWidget *parent) ProjectWindow::ProjectWindow(QWidget *parent)
: QWidget(parent), m_currentItemChanged(false) : QWidget(parent)
{ {
m_projectExplorer = ProjectExplorerPlugin::instance(); ProjectExplorer::SessionManager *session = ProjectExplorerPlugin::instance()->session();
m_session = m_projectExplorer->session();
m_panelsWidget = new PanelsWidget(this); m_panelsWidget = new PanelsWidget(this);
m_activeConfigurationWidget = new ActiveConfigurationWidget(m_panelsWidget); 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); m_projectChooser = new QWidget(m_panelsWidget);
QHBoxLayout *hbox = new QHBoxLayout(m_projectChooser); QHBoxLayout *hbox = new QHBoxLayout(m_projectChooser);
hbox->setMargin(0); hbox->setMargin(0);
@@ -687,18 +698,6 @@ ProjectWindow::ProjectWindow(QWidget *parent)
label, SLOT(setProject(ProjectExplorer::Project*))); label, SLOT(setProject(ProjectExplorer::Project*)));
hbox->addWidget(changeProject); 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); m_panelsWidget->addWidget(m_projectChooser);
QVBoxLayout *topLevelLayout = new QVBoxLayout(this); QVBoxLayout *topLevelLayout = new QVBoxLayout(this);
@@ -708,17 +707,52 @@ ProjectWindow::ProjectWindow(QWidget *parent)
topLevelLayout->addWidget(m_panelsWidget); 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*)), connect(changeProject, SIGNAL(projectChanged(ProjectExplorer::Project*)),
this, SLOT(showProperties(ProjectExplorer::Project*))); this, SLOT(showProperties(ProjectExplorer::Project*)));
connect(m_session, SIGNAL(sessionLoaded()), this, SLOT(restoreStatus())); connect(session, SIGNAL(sessionLoaded()), this, SLOT(restoreStatus()));
connect(m_session, SIGNAL(aboutToSaveSession()), this, SLOT(saveStatus())); 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() 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() void ProjectWindow::restoreStatus()
{ {
// TODO // TODO
@@ -758,12 +792,3 @@ void ProjectWindow::showProperties(Project *project)
} }
} }
} }
Project *ProjectWindow::findProject(const QString &path) const
{
QList<Project*> projects = m_session->projects();
foreach (Project* project, projects)
if (QFileInfo(project->file()->fileName()).filePath() == path)
return project;
return 0;
}

View File

@@ -180,19 +180,17 @@ private slots:
void showProperties(ProjectExplorer::Project *project); void showProperties(ProjectExplorer::Project *project);
void restoreStatus(); void restoreStatus();
void saveStatus(); void saveStatus();
void projectAdded();
void projectRemoved();
private: private:
void updateRunConfigurationsComboBox(); void updateRunConfigurationsComboBox();
SessionManager *m_session;
ProjectExplorerPlugin *m_projectExplorer;
ActiveConfigurationWidget *m_activeConfigurationWidget; ActiveConfigurationWidget *m_activeConfigurationWidget;
QWidget *m_spacerBetween; QWidget *m_spacerBetween;
QWidget *m_projectChooser; QWidget *m_projectChooser;
QLabel *m_noprojectLabel;
PanelsWidget *m_panelsWidget; PanelsWidget *m_panelsWidget;
Project *findProject(const QString &path) const;
bool m_currentItemChanged;
}; };